很多同事都在问我,什么时候升 3.x?
升 3.x 的呼声非常高,我自己用 2.x 也非常难受。之前迟迟没有升 3.x 主要有几个原因:
- 去年年底 2.x 才真正在生产环境使用
- 3.x React Native 还不支持(目前支持)
- 3.x 还需要一些时间迭代成熟。
2.x 成为了历史包袱
放在现在而言,2.x 俨然成为历史包袱:
- 2.x 官方基本停止新功能更新,bug 也不修了。我们 Fork 了一个版本自己修,但是能深入细节的不多
- 基于静态编译的跨端架构太多限制
- 2.x 太多条框,学习成本高,阻碍一码多端开发
- 这是一个假 React!React 很多特性没有
- 生态太差,没办法复用 React 生态
- 静态编译有太多坑,灵活性较差
- 编译缓慢。
- 和 Babel 6 强绑定, 不能使用最新的 JavaScript 语言特性
- 不支持 Typescript 检查。2.x 内部使用了一个较低版本的 Typescript,主要用于识别一些基础的 Typescript 语法。但没有强类型约束。
- 不支持 SourceMap,调试麻烦
- 静态的小程序分包机制太约束,打散业务逻辑,没办法形成聚合的业务模块。
- 组件没办法测试。因为代码需要编译生成中间代码才能运行。
- Hack。不管是 Taro 官方,还是我们自己,都有很多 Hack 代码。
- ...