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' } } }