原文連接--https://github.com/AlloyTeam/omihtml
Omi框架通過幾十個版本的迭代,愈來愈簡便易用和強大。
通過週末的連續通宵加班加點,Omi v1.0版本終於問世。雖然版本遵循小步快跑、頻繁迭代,可是Omi團隊成員都有着剋制之心,處女座佔了半壁江山,因此Omi的API除了增量的API,其餘的歷史API沒有任何變化。jquery
廢話很少說,這就爲你們介紹到目前1.0版本爲止,關於Omi,你必須知道的點點滴滴。webpack
先說說Store系統是幹什麼的!git
當咱們組件之間,擁有共享的數據的時候,常常須要進行組件通信。在Omi框架裏,組件通信很是方便:github
固然你也可使用event emitter / pubsub庫在組件之間通信,好比這個只有 200b 的超小庫mitt 。可是須要注意mitt兼容到IE9+,Omi兼容IE8。web
雖然組件通信很是方便,可是各類數據傳遞、組件實例互操做或者循環依賴,讓代碼很是難看且難以維護。因此:express
Omi.Store是爲了讓 組件通信幾乎絕跡 。雖然:npm
Redux 的做者 Dan Abramov 說過:Flux 架構就像眼鏡:您自會知道何時須要它。
可是,我不會告訴你數組
Omi Store 系統就像眼鏡:您自會知道何時須要它。
由於,Omi Store使用足夠簡便,對架構入侵性極極極小(3個極表明比極小還要小),讓數據、數據邏輯和UI展示完全分離,因此個人觀點是:sass
若是使用Omi,請使用Omi.Store架構。
好比連這個Todo例子都能使用Omi.Store架構。若是連複雜度都達不到Todo,那麼Omi其實都沒有必要使用,你可能只須要一個模板引擎即可。
關於Store詳細的用法,後續再寫文章闡述。
omi插件主要是賦予dom能力,而且能和instance關聯。若是主要是結構行組件,就寫成Omi組件,和插件也沒有太大關係。因此omi的插件不會有太多。
你能夠安裝omi-cli,用來初始化項目腳手架。
$ npm install omi-cli -g //安裝cli $ omi init your_project_name //初始化項目 $ cd your_project_name //轉到項目目錄 $ npm run dev //開發 $ npm run dist //部署發佈
項目腳手架基於 Gulp + Webpack + Babel + BrowserSync ,而且支持sass生成組件局部CSS
支持HTML、JS、CSS/Sass文件分離的目錄方式,也支持HTML、JS、CSS 全都寫在JS裏的方式,兩種方式能夠同時出如今項目裏,按需選擇。
其中omi.lite.js是不包含 mustache.js模板引擎的omi.js。Omi團隊認爲:
1.隨着ES的發展,模板字符串和ES語法強大到能夠不使用模板引擎(僅限於all in js的代碼目錄組織方式)
2.讓開發者重寫 Omi.template 去使用任意模板引擎
原本沒有支持IE8的打算,後來發現babel加兩個插件即可以支持IE8:
query: { presets: 'es2015', plugins : [ "transform-es3-property-literals", "transform-es3-member-expression-literals" ] }
class Hello extends Omi.Component { handleClick(evt){ alert(evt.target.innerHTML) } render() { return ` <div> <h1 onclick="handleClick">Hello ,{{name}}!</h1> </div> ` } }
你能夠傳遞任意參數:
class Hello extends Omi.Component { handleClick(str, num){ } render() { return ` <div> <h1 onclick="handleClick('test', 1)">Hello ,{{name}}!</h1> </div> ` } }