资讯专栏INFORMATION COLUMN

Node 引入 ESM 新方案

张金宝 / 2089人阅读

摘要:年月日目前,对的支持又有新进展。一个新的更新了当前的实现方案。根据的值确认入口文件加载模式在文件中的字段指定入口文件,根据字段来指定是还是模式来加载。

2019年3月29日目前,Node 对 ES6 Module 的支持又有新进展。一个新的 PR 更新了当前 --experimental-modules 的实现方案。

type 动态判断模块加载模式

更新后的方案将根据 package.json 文件中指定的 type 值来判断 js 文件是使用 ESM 还是 commonjs

如果 type 的值为 module 那么 js 文件将被作为 ESM 加载

如果 type 的值为 commonjs 那么 js 文件将被作为 commonjs 来加载

好处就是不需要使用 .mjs 这种与传统 js 扩展名不同的写法

使用 flag 指定入口文件模块加载模式

更新后的方案允许开发者使用 --entry-type=type 的方式来指定入口文件的解析方式,判断行为与 package.json 的 type 一致

支持新的扩展名 .cjs

新的扩展名 .cjs 表示在 module 模式的加载环境下去使用 commonjs 来加载扩展名为 .cjs 的模块

模块加载方式有所改变

新的 flag:--es-module-specifier-resolution=[type] 的默认值是 explicit,和可选值 node,在默认值的情况下引入模块时必须书写扩展名。

This implies that ./x will only ever import exactly the sibling file "x" without appending paths or extensions. "x" is never resolved to x.mjs or x/index.mjs (or the .js equivalents).

比方说这里加载 ./x 模块,那么默认情况下只会加载名为 x 的模块,而不是去尝试加载 x.mjsx/index.mjs

提案在此:https://github.com/GeoffreyBo...

在 ESM 模式下加载 json 文件

--experimental-json-loader flag 能够在 ESM 模式下加载 JSON 文件。

导入的 json 文件将提供的 json 文件中的内容转化为一个对象或数组。就好像直接通过 JSON 模块 parse 了一样。

main 根据 type 的值确认入口文件加载模式

package.json 文件中的 main 字段指定入口文件,根据 type 字段来指定是 commonjs 还是 ESM 模式来加载。

参考:

https://github.com/nodejs/nod...

https://github.com/GeoffreyBo...

请关注我的订阅号,不定期推送有关 JS 的技术文章,只谈技术不谈八卦

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/109220.html

相关文章

  • 利用 std/esmNode.js 开发中使用 ES Modules

    摘要:利用在开发中使用整理自,从属于笔者的现代开发语法基础与实践技巧系列中的模块化与构建章节。本文主要介绍了如何利用第三方库在应用中顺滑地使用语法。 利用 std/esm 在 Node.js 开发中使用 ES Modules 整理自ES Modules in Node Today!,从属于笔者的现代 JavaScript 开发:语法基础与实践技巧系列中的模块化与构建章节。本文主要介绍了如何利...

    Anshiii 评论0 收藏0
  • JavaScript 模块化现状

    摘要:比如,这种模拟并不符合某些边缘情况。然而,使用,结果是在引导模块时,将指向,与使用的行为一致。这将更容易完成代码库的过渡,并使成为可能。 原文作者:Johannes Ewald @Jhnnns 原文链接:The state of JavaScript modules 已获原作者授权翻译及发布 showImg(https://segmentfault.com/img/bVOpwz?w...

    draveness 评论0 收藏0
  • 前端每周清单:Node.js 微服务实践,Vue.js 与 GraphQL,Angular 组件技巧

    摘要:前端每周清单第期微服务实践,与,组件技巧,攻防作者王下邀月熊编辑徐川前端每周清单专注前端领域内容,以对外文资料的搜集为主,帮助开发者了解一周前端热点分为新闻热点开发教程工程实践深度阅读开源项目巅峰人生等栏目。 前端每周清单第 26 期:Node.js 微服务实践,Vue.js 与 GraphQL,Angular 组件技巧,HeadlessChrome 攻防 作者:王下邀月熊 编辑:徐川...

    wall2flower 评论0 收藏0
  • 前端每周清单第 44 期: 2017 JS 调查报告、REST 接口实时化、ESM 的过去与未来

    摘要:巅峰人生年老兵思路上的转变,远比单纯提升技术更有价值本文节选自赵成教授在极客时间开设的赵成的运维体系管理课,是其对自己十年技术生涯的回顾与总结。赵成教授来自美丽联合集团,集团旗下两大主力产品是蘑菇街和美丽说,目前负责管理集团的技术服务团队。 showImg(https://segmentfault.com/img/remote/1460000012476504?w=1240&h=826...

    MASAILA 评论0 收藏0
  • 前端每周清单半年盘点之 Node.js 篇

    摘要:前端每周清单专注前端领域内容,以对外文资料的搜集为主,帮助开发者了解一周前端热点分为新闻热点开发教程工程实践深度阅读开源项目巅峰人生等栏目。对该漏洞的综合评级为高危。目前,相关利用方式已经在互联网上公开,近期出现攻击尝试爆发的可能。 前端每周清单专注前端领域内容,以对外文资料的搜集为主,帮助开发者了解一周前端热点;分为新闻热点、开发教程、工程实践、深度阅读、开源项目、巅峰人生等栏目。欢...

    kid143 评论0 收藏0

发表评论

0条评论

张金宝

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<