• 请不要在回答技术问题时复制粘贴 AI 生成的内容
iqoo
V2EX  ›  程序员

NPM 包未来趋势是用 ES Module 吗

  •  
  •   iqoo · Jun 5, 2022 · 5577 views
    This topic created in 1615 days ago, the information mentioned may be changed or developed.

    发现很多常用库的最新版本只能使用 ES Module 引用,比如 get-port 、node-fetch 等,这个是未来的趋势吗?

    19 replies  •  2022-06-06 18:10:22 +08:00
    learningman
    learningman
    Jun 5, 2022
    1
    不太可能,python2 到 3 用了 12 年,放弃 cjs 的代价只会更大,毕竟 npm 那个递归引用设计。。。
    Kaciras
    Kaciras
    Jun 5, 2022
    2
    是的
    zhuweiyou
    zhuweiyou
    Jun 5, 2022
    3
    浏览器端是, 服务端不太可能
    ChrisFreeMan
    ChrisFreeMan
    Jun 5, 2022
    4
    不用怀疑,就是未来趋势,本就是为了解决 cjs 的痛点
    AV1
    AV1
    Jun 5, 2022
    5
    如果是 TS 的话一律用 ESM 就完事了,编译的时候可以根据需要,自行选择输出为 ESM 、CJS 、AMD 、UMD 格式。
    makelove
    makelove
    Jun 5, 2022
    6
    不是未来趋势,而是已是现实
    不过好在转了 esm 后还是能用 cjs 的,只不过只能整个引入模块,稍稍不方便一点点
    CoverL
    CoverL
    Jun 5, 2022
    7
    cdn 服务都开始支持了
    beginor
    beginor
    Jun 5, 2022 via Android
    8
    浏览器都支持了,esm 肯定是标准的标准
    duan602728596
    duan602728596
    Jun 5, 2022
    9
    是的。而且 esm 引入 cjs 模块的成本不大,cjs 通过 import()仍然可以引入 esm 模块。
    Zwying
    Zwying
    Jun 5, 2022❤️1
    10
    node_module 这个黑洞迟早被淘汰
    molvqingtai
    molvqingtai
    Jun 6, 2022
    11
    是的,现在构建工具都依赖 esm 实现 no-bundle ,比如 vite
    Inocr
    Inocr
    Jun 6, 2022
    12
    @DOLLOR TS 在 Node 端使用 ESM ,相对路径需要加上 .js ,目前还是很不友好的

    ```
    relative import paths need full extensions (we have to write import "./foo.js" instead of import "./foo")
    ```
    wangtian2020
    wangtian2020
    Jun 6, 2022
    13
    只有我一个现在是 Nodejs 用 点 mjs 文件写吗?
    makelove
    makelove
    Jun 6, 2022
    14
    @Inocr 并不需要加.js ,都是运行时在命令行上加 --es-module-specifier-resolution=node ,这样和原来不样不用.js 。 加.js 是麻烦,因为和前端不能共用文件了(或需要特别配制)。
    Inocr
    Inocr
    Jun 6, 2022
    15
    @makelove 好吧,当时一看提示 ExperimentalWarning ,就有点怵,毕竟要上生产。那就只有个 tsconfig paths alias 需要解决下了,谷歌了很方案,都没有找到合适,不过这个问题倒不是很大,改成相对路径就好
    xling
    xling
    Jun 6, 2022
    16
    加"type"="module"就行了,现在 nodejs 的 lts 版本已经是 16 了
    libook
    libook
    Jun 6, 2022
    17
    个人认为,主流场景下,建议以 ECMAScript 官方标准为导向,官方出了 ESM ,将来大方向就是逐渐迁移到 ESM ,如果 ESM 本身不完善,那么就肯定会去完善 ESM 本身,毕竟 ES 标准迭代挺快的。
    moen
    moen
    Jun 6, 2022❤️1
    18
    deno 默认 esm 就可以 top-level await ,用 node 的时候不改 esm 模式都不舒服
    zhouyg
    zhouyg
    Jun 6, 2022
    19
    是的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1449 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 67ms · UTC 16:45 · PVG 00:45 · LAX 08:45 · JFK 11:45
    ♥ Do have faith in what you're doing.