Open and modern framework for building user interfaces. css
npm install omi
class Hello extends Omi.Component { constructor(data) { super(data); } style () { return ` <style> h1{ cursor:pointer; } </style> `; } handleClick(target, evt){ alert(target.innerHTML); } render() { return ` <div> <h1 onclick="handleClick(this, event)">Hello ,{{name}}!</h1> </div> `; } } Omi.render(new Hello({ name : "Omi" }),"body");
[點擊這裏->在線試試]html
你可使用Omi.makeHTML來生成組件標籤用於嵌套。webpack
Omi.makeHTML('Hello', Hello);
那麼你就在其餘組件中使用,而且經過data-*的方式能夠給組件傳參,如:git
... render() { return ` <div> <div>Test</div> <Hello data-name="Omi" /> </div> `; } ...
注意,style方法裏面return包裹的<style></style>
不是必須的。主要是方便識別成jsx文件時候有css語法高亮。github
[點擊這裏->在線試試]web
你可使用 webpack + babel,在webpack配置的module設置babel-loader,立馬就能使用ES6+來編寫你的web程序。npm
固然Omi沒有拋棄ES5的用戶,你可使用ES5的方式編寫Omi。babel
var Hello = Omi.create("Hello", { style: function () { return "<style>h1{ cursor:pointer }</style>"; }, handleClick: function (dom) { alert(dom.innerHTML) }, render: function () { return ' <div><h1 onclick="handleClick(this, event)">Hello ,{{name}}!</h1></div>' } }); var Test = Omi.create("Test", { render: function () { return '<div>\ <div>Test</div>\ <Hello data-name="Omi" />\ </div>' } }); Omi.render(new Test(),'#test');
和ES6+的方式不一樣的是,再也不須要makeHTML來製做標籤用於嵌套,由於 Omi.create的第一個參數的名稱就是標籤名。框架
Github: https://github.com/AlloyTeam/omi
I need you.