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,工具链更大而全。