Riot 擁有建立現代客戶端應用的全部必需的成分:css
Riot 儘可能不使用強制的規則,而是提供最基本的工具,但願你可以有創意地使用它們。這種靈活的方式將應用層面的大的架構決策交還給開發者。html
簡單的說,它跟React
相似,專一於view
層,能夠理解成不那麼臃腫的 React + Polymer。並無從新發明輪子,而是從已有的工具中提取精華,構建出儘可能簡單的工具。vue
自定義標籤容許你用HTML來編寫複雜的用戶界面。你的應用會長成這個樣子:webpack
<body> <h1>Acme community</h1> <forum-header/> <forum-content> <forum-threads/> <forum-sidebar/> </forum-content> <forum-footer/> <script>riot.mount('*', { api: forum_api })</script> </body>
虛擬 DOMgit
與標準保持一致github
很是低的學習成本web
你能夠感覺下,這是 Riot 寫的Todo
:編程
<todo> <h3>{ opts.title }</h3> <ul> <li each={ items }> <label class={ completed: done }> <input type="checkbox" checked={ done } onclick={ parent.toggle }> { title } </label> </li> </ul> <form onsubmit={ add }> <input name="input" onkeyup={ edit }> <button disabled={ !text }>Add #{ items.length + 1 }</button> </form> <script> this.disabled = true this.items = opts.items edit(e) { this.text = e.target.value } add(e) { if (this.text) { this.items.push({ title: this.text }) this.text = this.input.value = '' } } toggle(e) { var item = e.item item.done = !item.done return true } </script> </todo>
體積極小,壓縮以後只有10.36KB。api
一個riot自定義標籤在平常開發中從源碼到呈如今頁面上主要分爲三步:編譯(通常利用官方自帶編譯工具)、註冊(riot.tag())和加載(riot.mount()),以下圖所示:瀏覽器
自定義 Tag 的建立過程是這樣的:
加載完成後,表達式會在如下時機被更新:
因爲表達式的首次計算髮生在加載以前,因此不會有相似 <img src={ src }>
計算失敗之類的意外問題。
如今國內最火的js框架當屬Vuejs
了,Riot跟其相同點:
html
、css
、script
以組件爲單元放在tag
文件中。不一樣點:
onclick
、onsubmit
便可。從最開始1kb的1.0版本,到如今的3.8版本,Riot 已經趨於穩定,徹底能夠用於生產環境。
好用的 Riot 構建工具並很少,因此我參考vue-webpack寫了2個腳手架,能夠快速投入使用:
riot-simple,簡單快速啓動。
riot-startkit,工具鏈更大而全。