Open and modern framework for building user interfaces.html
Omi的Github地址https://github.com/AlloyTeam/omiwebpack
若是想體驗一下Omi框架,請點擊Omi Playgroundgit
若是想使用Omi框架,請閱讀 Omi使用文檔github
若是想一塊兒開發完善Omi框架,有更好的解決方案或者思路,請閱讀 從零一步步打造web組件化框架Omiweb
關於上面的兩類文檔,若是你想得到更佳的閱讀體驗,能夠訪問Docs Websitenpm
若是你懶得搭建項目腳手架,能夠試試Scaffolding for Omi,npm安裝omis即可babel
若是你有Omi相關的問題能夠New issue框架
若是想更加方便的交流關於Omi的一切能夠加入QQ的Omi交流羣(256426170)dom
超小的尺寸,7 kb (gzip)函數
局部CSS,HTML+ Scoped CSS + JS組成可複用的組件。不用擔憂組件的CSS會污染組件外的,Omi會幫你處理好一切
更自由的更新,每一個組件都有update方法,自由選擇時機進行更新。你也能夠和obajs或者mobx一塊兒使用來實現自動更新。
模板引擎可替換,開發者能夠重寫Omi.template方法來使用任意模板引擎
徹底面向對象,函數式和麪向對象各有優劣,Omi使用徹底的面向對象的方式來構建Web程序。
ES6+ 和 ES5均可以,Omi提供了ES6+和ES5的兩種開發方案。你能夠自有選擇你喜好的方式。
npm install omi
class Hello extends Omi.Component { constructor(data) { super(data); } style () { return ` h1{ cursor:pointer; } `; } 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");
你可使用Omi.makeHTML來生成組件標籤用於嵌套。
Omi.makeHTML('Hello', Hello);
那麼你就在其餘組件中使用,而且經過data-*的方式能夠給組件傳參,如:
... render() { return ` <div> <div>Test</div> <Hello data-name="Omi" /> </div> `; } ...
你可使用 webpack + babel,在webpack配置的module設置babel-loader,立馬就能使用ES6+來編寫你的web程序。
固然Omi沒有拋棄ES5的用戶,你可使用ES5的方式編寫Omi。
var Hello = Omi.create("Hello", { style: function () { return "h1{ cursor:pointer }"; }, 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.