node中import老大难问题
发布于 6 个月前 作者 DuJiming 2008 次浏览 来自 问答

这都node11,12版本了,找了一圈还是没有简单直接的用import方法,什么时候能原生支持啊

28 回复

@im-here 公司要升级node版本到10,想弃用babel,看来还得用一段时间了

还是用ts吧,支持的全。

来自 CNode-iOS

后缀改为mjs可以使用import

使用 esm 做入口就可以了

可以尝试用Loader Hooks 方式直接使用import/export 参考例子 Node 9下import/export的丝般顺滑使用

一直没搞明白,ESM 这个特性在 Node 里面有那么的迫切的需求么?

和11楼一样,觉得require就够用。而且前端用Webpack如此广泛的情况下觉得用哪种机制引入module都无所谓。

倒是盼着Worker Threads赶紧到Stability 2。

胡哈哈哈哈哈哈

@atian25 等真实支持以后,也会Import和require并存的,因为import会很好的支持静态检查,而动态引入还是要require

@captainblue2013 静态检查又不是银弹,先把单元测试覆盖率提高再说。

@atian25

一直没搞明白,ESM 这个特性在 Node 里面有那么的迫切的需求么?

大佬不理解强迫症患者,很多人只要人云亦云说import比require好,也不知道好在哪里,但用require就是不爽,就是感觉不够规范。

要不就和楼上同学们说的,TS 一了百了,ts还是可以写js的。Loader Hooks方法也不错

@zy445566 我也是一个深度的强迫症,但我更倾向于把精力放到更迫切更有必要的地方去强迫。

  • 我会强迫我自己把单元测试覆盖率搞到 100%。
  • 我会持续的去重构类库来满足自己的完美主义。
  • 我会强迫自己优化很多 CLI 和流程来提升团队整体的研发效率和质量。

但 ESM 这种吃力不讨好的风格,没必要强求,更何况它的黑历史,这规范提出的时候,根本没问过 Node 社区的人,现在要别人给它擦屁股。

改这个东西,对代码质量,团队效率的收益比太低了。不要花太多精力放在满足个人偏好上,应该更高层次的去看团队。回去翻翻自己的 TODO LIST 看看是不是已经只有这种小事来满足不必要的洁癖,从而消磨自己宝贵的时间。

毕竟mjs和cjs还是有不同的,nodejs和js不是同样的模块系统,如果不是ts编写,没必要在nodejs上用import

@atian25 说得真好,不能同意更多。 但是我还是会期待一下下静态优化,虽然现在很多babel、ts之类,都只是实现了import的语法糖,并没有在node底层做到import,等到真的官方支持import,可能才有可能真的做静态优化。

@atian25 已经把整个工程重构成require了,没想到大佬都出面了,公司想要升级node版本,我是忍受不了babel这种本末倒置的行为,但是不用babel的话原来的项目就用不了import,后来还是花了一下午直接把工程全‘require’了,谢谢猪哥

@ChenShenhai 毕竟现在还是玩具,不敢用在生产上啊。。

浏览器:ESM 加载管理目前基本没法用,还不如 requirejs 的 AMD 方式。 如果用 Angular 框架,也就不存在这个问题。 服务端:首选 TypeScript , 我已经不习惯写 js 了。

回到顶部