弃坑Riot转投Preact

换个坑继续趟

回顾一下为什么用Riot

1. 对ES5最友好的组件化MVP框架

吐槽一下现在的前端,gulp + webpack + rollup + babel + … 用gcc的同学都看哭了好么

riot.js虽然官网上给出的语法是ES6的,但是可以直接使用ES5的语法,虽然react也可以,但是没人会想用ES5写JSX吧。

相比于其它框架,使用ES5的riot.js不用写gulpfile,不用谢webpack.config.js,不用写babelrc,想想,直接上去就开始写逻辑还是件挺爽的事情哈。

当时公司大量使用Fekit作为发布工具,因为Fekit只是简单地commonjs实现,所以使用Riot.js就是件理所当然的事情了。

2. 十分轻量的框架

riot.js的源码70+KB,混淆之后是10+KB,大概一个handlebars或者是大一点的arctemplate的大小,里面包括组件化、observable的事件机制、路由器、SSR这些功能。

用riot.js开发之后的逻辑代码(移动端)大小也没有比vue的核心代码库大。

所以如果有一个项目想要快速开发,代码量又不想太大,riot.js会是我推荐的,而且不必担心性能问题(可以参考我之前vue、react和riot的对比,分明react是性能最差的)。

之前写过riot.js的最佳实践,没在公众号里面推,后面补上哈~


蛋是

你还是一个好框架

而我已经不是那个骚年了


Preact的出现

去年我录制了一个Riot.js的分享视频(在youku可以搜到哦),Preact大概在那时出现在了hackernews的首页,我记得当时hackernews下面的回复都是很轻蔑的“呵呵,又一个“。

等了大概一年,这个项目居然没死,要知道这一年很多类react的项目过得可不是那么好啊。这个项目的Twitter帐号都发会议邀请函了。

那么引入Preact是为什么

1. Typescript对JSX的支持好过template

typescript能够做静态类型检查,简单地说,如果我的代码里面有什么拼写错误或者什么包没引入,编译器都能查出来。

蛋是,如果我写的代码在模板里面,编译器就无能为力了,毕竟模板就只是字符串啊。而jsx不同,它是一种DSL,编译器自然会检查里面的代码。

2. Preact真的太TM小了

当时使用riotjs的原因很大的比重在减负,在我的哲学里面,一个框架只需要完成我需要它完成的东西,其他的不要多。preact相比riot减负了大概50k(源代码),当然功能上也少了(observable,router)。

3. 真的能堵住很多人的嘴

Preact和React用的是同一套API,JSX语法又一样,用这套框架估计没有人吐槽难用了吧?(这一条真的很无力,好多人连react都没用过,就说我用一冷门框架不好维护,就像我用了react你就能来维护一样)

所以我会用Preact吗?

我会在最近的一次优化把我的项目进行优化改造,最后我在根据它的性能(ssr+browser)、最终的业务代码大小、是否可以多人合作开发等多方面分析考虑是否切换。

当然,也有别的可能,毕竟当初说好用vim的我现在竟用着vscode。