假设您的 NodeJS 项目中有一个 index.js 文件,您在其中使用了五个函数。但是,其中两个函数也可能在其他文件中使用。因此,您在项目中创建了三个文件,而不是一个文件:
这里,每个Javascript文件都是一个模块,导出类/函数和导入它们的方式基本上是模块系统。模块系统允许我们拆分和包含代码,并在需要时导入我们或其他开发人员编写的代码。
这些模块不仅仅是项目中存在的 Javascript 文件;它们也可以是您在项目中作为依赖项安装的任何外部包。另外,NodeJS 有一些内置模块,如 http、fs 等,这些模块可以随安装一起使用,并且可以在不添加任何外部依赖的情况下导入。
Node.js 中使用了两个模块系统。
您已经阅读了我之前博客中的厨房-厨师-服务员示例;同样,如果我们将模块与此进行比较,想象 CommonJS 是一本古老的大食谱书,我们需要搜索和查找食谱,而 ESM 是一个新的老式数字应用程序来查看食谱。
CommonJS (CJS)
// Export module.exports = function SayHello() { console.log("Hello World!"); }; // Import const GetHello = require("./hello-script.js"); SayHello(); // "Hello World!"
ECMAScript 模块 (ESM)
// Export export function SayHello() { console.log("Hello World!"); } // Import import { SayHello } from "./hello-script.js"; SayHello();
语法上的主要区别:
CJS: module.exports / require
ESM:导出/导入
{ type: "module"; }
有时,您可以使用 ECMAScript 模块,但您导入的旧包是用 CommonJS 编写的。为了处理这些情况,我们有时会确保从 Typescript 文件生成的输出 Javascript 代码采用通用格式,即使我们已经以 ESM 格式编写了 Typescript 文件。
为此,我们在项目的 tsconfig.json 中添加编译器选项:
// Export module.exports = function SayHello() { console.log("Hello World!"); }; // Import const GetHello = require("./hello-script.js"); SayHello(); // "Hello World!"
然后会发生什么:
module: "commonjs":使用 CommonJS 模块系统输出 JavaScript,该系统使用 require 和 module.exports。
target: "es6":确保输出 JavaScript 使用 ES6 语法和 let、const 和箭头函数等功能。
输入打字稿代码:
// Export export function SayHello() { console.log("Hello World!"); } // Import import { SayHello } from "./hello-script.js"; SayHello();
输出Javascript代码:
{ type: "module"; }
以上是NodeJS模块【简单说明】的详细内容。更多信息请关注PHP中文网其他相关文章!