欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > Node.js 知识(规范)

Node.js 知识(规范)

2025/2/27 2:00:44 来源:https://blog.csdn.net/Founder_Xiao_Xin/article/details/144906162  浏览:    关键词:Node.js 知识(规范)

一、引言

在 Node.js 开发中,存在两种常用的模块规范,分别是默认使用的 CJS(CommonJS)规范以及 ESM(ES Modules)规范,二者在导入导出模块的语法等方面存在差异,下面将详细介绍它们各自的使用方式。

二、ESM(ES Modules)规范

2.1 配置 package.json 方式
  • 整体流程示例
    • demo.js 文件内容
//从 web.js 文件中导入 title、url、getUrl
import obj from "./web.js";console.log(obj.title);
console.log(obj.url);
console.log(obj.getUrl());
  • web.js 文件内容
let title = "标题";
let url = "dengruicode.com";let getUrl = () => "www.dengruicode.com";//将一个对象作为整体导出,导出的对象包含 title、url、getUrl
export default { title, url, getUrl };
  • package.json 文件配置关键部分
{"type": "module","name": "demo","version": "1.0.0","main": "demo.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1"},"author": "","license": "ISC","description": ""
}

通过在 package.json 中设置 "type": "module",可以让 Node.js 识别并按照 ESM 规范来处理模块的导入导出操作。

2.2 mjs 文件扩展名方式
  • 整体流程示例
    • demo.mjs 文件内容
//从 web.mjs 文件中导入 title、url、getUrl
import obj from "./web.mjs";console.log(obj.title);
console.log(obj.url);
console.log(obj.getUrl());
  • web.mjs 文件内容
let title = "标题";
let url = "dengruicode.com";let getUrl = () => "www.dengruicode.com";//将一个对象作为整体导出,导出的对象包含 title、url、getUrl
export default { title, url, getUrl };

使用 .mjs 作为文件扩展名,Node.js 同样会按照 ESM 规范来处理模块相关操作,这种方式相对更直观地表明了使用的是 ESM 规范。

三、CJS(CommonJS)规范

  • 整体流程示例
    • demo.js 文件内容
//从 web.js 文件中导入 title、url、getUrl
//import obj from "./web.js"; //ESM规范
const obj = require("./web.js"); //CJS规范console.log(obj.title);
console.log(obj.url);
console.log(obj.getUrl());
  • web.js 文件内容
let title = "标题";
let url = "dengruicode.com";let getUrl = () => "www.dengruicode.com";//将一个对象作为整体导出,导出的对象包含 title、url、getUrl
//export default { title, url, getUrl }; //ESM规范
module.exports = { title, url, getUrl }; //CJS规范

在 CJS 规范中,使用 require 函数来导入模块,使用 module.exports 来导出模块内容,这与 ESM 规范的 importexport 语法有着明显区别。

四、总结

在 Node.js 项目开发中,了解和掌握 ESM 规范与 CJS 规范的使用方式很重要,开发人员可以根据项目的实际需求、兼容性要求等因素来选择合适的模块规范进行代码的组织和模块间的交互,确保项目能够顺利运行并实现预期的功能。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词