github地址:lesx-examplejavascript
Lesx
提供了一种开发范式,可让开发者使用相似vue的单文件模式来开发React应用,作到了style/template/script
三元素分离。它提供了一个webpack loader,能够将下面的DSL:css
<style> a { color: red; } </style> <template> <div> <a onClick={() => { alert(1); }}>点我</a> {console.log(this.props)} <If condition={ this.props.valid }> <div>{this.state.name}</div> </If> <Button type="primary" onClick={() => { alert('I am an antd button!'); $setState({ name: 'a new name', }); }}>antd button</Button> </div> </template> <script> module.exports = { props: { valid: true }, state: { name: 'xiangzhong.wxz' }, }; </script>
转成React Component
!html
JSX
基础语法;style/template/script
三元素分离,方便代码维护;script
中注入的方法及变量在DSL中能够经过this.xxx
的方式使用;script
中注入的方法会被自动绑定到this
做用域;antd
组件(能够配置为其余UI组件库),无需引入,能够直接在DSL中使用antd全部的组件;UI library组件
,并按需打包,而不会把整个组件库所有打包进去,最小化打包后的代码体积;components
属性,能够引入组件库没有的其余组件(自定义或者第三方的);style
支持自定义语言(css/sass/less),默认sass
;svelte
,也许后面会改为自研组件式开发框架而不是基于React
。{ test: /\.lesx$/, loader: 'lesx-loader', query: { loaders: { js: 'babel', css: 'style!css', sass: 'style!css!sass' }, uiLib: { libName: 'antd', libDirectory: 'lib' } } }