各位的 Node 项目用 babel 或者 Webpack 的多吗?

2017-06-16 15:48:47 +08:00
 gap
Webpack 估计不常见毕竟那是前端资源的模块打包工具,但我还真见过有项目用的。那 babel 呢?我们现在的项目是基于 Node 6.10 的,虽然没有 es6 的模块,没有 async 和 await,但大部分需要的 es6 功能 6.10 都支持了,所以我是比较倾向不上 babel 的,请问各位呢?如果上的话是基于什么考虑呢?
4240 次点击
所在节点    Node.js
32 条回复
oyyd
2017-06-16 18:56:26 +08:00
@MadbookPro 我觉得没看错:) 我记得最近几次 v8 引擎的发版强调的最多的就是 es6 特性的性能: https://v8project.blogspot.jp/ 。拍着脑袋想,原因可能有两点:

1. babel 编译本身是不(那么)完整的实现,像是 es2015-loose 这样注重性能忽略边缘特性的编译方式(我并不清楚)
2. 现在的 v8 更擅长优化 es5 代码的性能
MadbookPro
2017-06-16 19:01:59 +08:00
@oyyd 惨,目前项目全面 es6,没有考虑在 6.10.1 版本下的性能问题。看来要测试一下了
oyyd
2017-06-16 19:19:51 +08:00
@MadbookPro 大多时候性能都不是重点,语法上的这点性能大多也不是真正的性能瓶颈
duan602728596
2017-06-16 19:29:26 +08:00
node 用的 7.7.0 版本,不用 8 是因为 node-sass 不支持 8。前端肯定是得用 webpack 了,业务是 react 全家桶。每次改代码最头疼的就是编译速度了,太慢了
guokeke
2017-06-16 19:37:34 +08:00
-=- 不用 babel 怎么愉快的写,高版本会有兼容性问题啊。
Exin
2017-06-17 00:12:03 +08:00
@duan602728596 似乎现在 node-sass 支持 Node.js 8 了哦?
duan602728596
2017-06-17 00:22:20 +08:00
@Exin 确实啊,前一阵还没支持呢
nino
2017-06-17 00:27:37 +08:00
node 项目为啥要用 import / export,想不通,node 项目从来不用 babel
seki
2017-06-17 03:40:46 +08:00
见过后端库有用 webpack 的,虽然是一小部分,也记不清是哪些了

babel 我是用的,开发时在入口文件做 register,上线前写个脚本编译一下,美滋滋
tutulyy
2017-06-17 22:37:55 +08:00
最近用了 node V8.0.0 再也不用上 babel 了
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 实现者在实现新特性草案的时候基本上也都是互相交流、互抄方案的,所以殊途同归也是必然的。
rekey
2017-07-17 10:55:54 +08:00
@libook

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/368889

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX