hyperapp 是什么鬼?
hyperapp 是一个前端的应用构建库。初见写法,很有一种写react的亲切的感觉(其实就是一个套路),不过这肯定不能成为吸引广发gay友从而在短短两个月拿到 8K star的理由。更重要的一个原因是 官方宣称的1kb。是的, hyperapp 的核心代码只有1kb,这对早已习惯react全家桶,同时对当今web应用一个页面动辄3、4M毒害的gay友来说,的确是一个福音。基于此,官方给自己的定位是:
- 更小:只要1kb,做到其他框架应该做的;
- 更实用:主流的前端应用思想,不会对学习带来额外负担;
- 开箱即用:完善的虚拟Dom、key更新、应用生命周期。
- 以上个人翻译,有吹嘘成分
既然听起来这么厉害,今天就来一探究竟了……
简单的使用
最简单的使用方法就是看官网给的 计数器 示例,可以在 这里 查看最终效果:
<body>
<script src="https://unpkg.com/hyperapp"></script>
<script>
// ******划重点
const { h, app } = hyperapp
const state = {
count: 0
}
const actions = {
down: value => state => ({ count: state.count - value }),
up: value => state => ({ count: state.count + value })
}
const view = (state, actions) =>
h("div", {}, [
h("h1", {}, state.count),
h("button", { onclick: () => actions.down(1) }, "–"),
h("button", { onclick: () => actions.up(1) }, "+")
])
window.main = app(state, actions, view, document.body)
// *****划重点
</script>
</body>
显而易见,state 定义了应用的状态, view 定义了应用的视图,通过 h 方法生成一个虚拟Dom,也就是可以被浏览器解释的结点树,action 则定义了应用的一些行为逻辑