首页 > web前端 > js教程 > NodeJS模块【简单说明】

NodeJS模块【简单说明】

Susan Sarandon
发布: 2024-11-25 08:09:14
原创
544 人浏览过

NodeJS Modules [Simple Explanation]

什么是模块?

假设您的 NodeJS 项目中有一个 index.js 文件,您在其中使用了五个函数。但是,其中两个函数也可能在其他文件中使用。因此,您在项目中创建了三个文件,而不是一个文件:

  • index.js
  • dependency1.js
  • dependency2.js

这里,每个Javascript文件都是一个模块,导出类/函数和导入它们的方式基本上是模块系统。模块系统允许我们拆分和包含代码,并在需要时导入我们或其他开发人员编写的代码。

这些模块不仅仅是项目中存在的 Javascript 文件;它们也可以是您在项目中作为依赖项安装的任何外部包。另外,NodeJS 有一些内置模块,如 http、fs 等,这些模块可以随安装一起使用,并且可以在不添加任何外部依赖的情况下导入。

如何导出或导入模块?

Node.js 中使用了两个模块系统。

  1. CommonJS (CJS)
  2. ECMAScript 模块 (ESM)

您已经阅读了我之前博客中的厨房-厨师-服务员示例;同样,如果我们将模块与此进行比较,想象 CommonJS 是一本古老的大食谱书,我们需要搜索和查找食谱,而 ESM 是一个新的老式数字应用程序来查看食谱。

CommonJS (CJS)

  • 旧的模块系统。
  • 模块以简单的格式编写,例如:
// Export
module.exports = function SayHello() {
  console.log("Hello World!");
};

// Import
const GetHello = require("./hello-script.js");
SayHello(); // "Hello World!"
登录后复制
登录后复制
  • 同步:依次加载模块。
  • 仅在 Node.js 中工作(不能直接在浏览器中工作)。

ECMAScript 模块 (ESM)

  • 现代模块系统。
  • 模块现在更加结构化:
// Export
export function SayHello() {
  console.log("Hello World!");
}

// Import
import { SayHello } from "./hello-script.js";
SayHello();
登录后复制
登录后复制
  • 异步:同时加载多个模块。
  • 在浏览器和 Node.js 中原生工作。

语法上的主要区别:
CJS: module.exports / require
ESM:导出/导入

如何在我的项目中配置 CJS 或 ESM?

  • 打开项目的package.json。
  • 添加:
{
  type: "module";
}
登录后复制
登录后复制
  • 这告诉 NodeJS 将 .js 解释为 ESM。如果我们不添加这个,NodeJS 将默认将其解释为 CommonJS。

Typescript 中的模块:

有时,您可以使用 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中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板