我已经开始基于Node的现有项目.js.我只是想了解执行流程,在那里我遇到了大约*.mjs个文件.我在网上搜索了一下,发现这些是基于模块的JS文件.

我想知道它与*.js个文件有什么不同(它有什么好处)?

推荐答案

它表示ES6模块文件.


node .js最初的模块系统是CommonJs(使用requiremodule.exports).

自 node .js创建后,ECMAScript module system(使用importexport)已成为标准和 node .js增加了对它的支持.

node .js将.cjs个文件视为CommonJS模块,.mjs个文件视为ECMAScript模块.它将把.js个文件视为项目的默认模块系统(除非package.json表示"type": "module",,否则这是CommonJS).

另见:Differences between ES6 module system and CommonJs

Node.js相关问答推荐

postgresql层与应用层的序列化

无法从MongoDB文档中保存的对象数组中获取对象的属性

当 Got 包因错误 JSON 崩溃时如何获取响应文本?

mongoose findOneAndUpdate 不更新数据库

为什么当我使用waitForSelector时 Puppeteer 导致我的测试套件挂起 30 秒,即使我在页面和浏览器上调用关闭?

使用 NPM 三个 mocha+typescript 进行测试

访问 Mongoose 查询之外的变量

TypeError:changeChecked 不是函数

类 WebSwapCGLLayer 在 Mac OS X /System 和 node_modules 中都实现了

即使部署成功,也不会触发 Firebase 函数来填充 Firestore 集合.为什么?

如何在 node.js 环境中从 WebAssembly (Rust) 调用异步 JavaScript 导入函数?

如何将使用 Gulp 的 node 部署到 heroku

如何使用 mocha.js 模拟用于单元测试的依赖类?

Passport 登录和持久会话

使用 Webpack 和 font-face 加载字体

如何解决 Socket.io 404(未找到)错误?

Meteor - collection.find() 总是返回所有字段

NPM:为什么要安装这个包?

将 NodeJS 用于大型项目

node.js 服务器和 HTTP/2 (2.0) 与 express.js