libook
2017-06-20 00:58:24 +08:00
我们服务端用新版 Node 而不用 Babel 等工具的原因:
1. 服务器环境是确定的,不会有兼容性问题。
2. 所写即所得,运行和调试的就是自己写的代码。
3. 用原生提供的特性,避免被引入的库坑。
4. Current 版本的 Node 的可靠性足够好。
5. 0 配置,拉代码装包即可运行。
6. 修复架构相关问题,而不是靠补丁掩盖。
7. 已有特性的性能被进一步优化。
当然不同项目的情况不同,要根据实际情况选型。
平时服务端用 require,前端用 import,对比各自都没有绝对优势,只是不同的写法罢了,或者说 import 只是 ES 标准收录而已。
写 Node 程序用 Node ES 最直接简单,虽然 Node ES 比其他 ES 实现经常要落后一些,但也用不了多久就能追回来,而且其他 ES 实现最终也都是要转化成 Node ES 才能被 Node 执行。
Babel ES 可能更贴近于 ES 标准,但其实也就只有几个不疼不痒的特性而已。
TypeScript 在 V8 没有原生支持 ES6 的时候有优势,但是 ES6 出来之后好像也就没啥特别强大的吸引力要转,除非依赖哪个重要的包是基于 TypeScript。
现在众多的 ES 实现,都差不多,选择哪个主要是习惯使然,很少有因为某个硬性的技术需求而刻意选型的情况。
其实造成这种现象也和 ES 标准的制定流程有关,新特性会由各自 ES 实现者出草案,然后加入到自己的 ES 实现当中,开发者用起来,当某一特性被使用到一定程度的时候才会有资格接受评审,接受了社区的广泛试用才能正式进入 ES 标准,而各自 ES 实现者在实现新特性草案的时候基本上也都是互相交流、互抄方案的,所以殊途同归也是必然的。