CommonJS规范相关知识点

本文介绍了CommonJS模块系统在JavaScript中的应用,包括模块的概念、模块的导出(module.exports和exports的区别)以及导入方法。重点讲解了如何正确使用module.exports和exports,以及它们在实际项目中的应用场景。
摘要由CSDN通过智能技术生成

一、什么是CommonJS


 Common JS是一套用于JavaScript的模块化规范,旨在为非浏览器环境提供一致的编程模型。而Node中对CommonJS进行了支持和实现,可以对模块进行导入、导出。

二、module(模块)

每个文件就是一个模块,有自己的作用域。在一个文件里面定义的变量、函数、类,都是私有的,对其他文件不可见。

 每个模块内部都有一个模块对象,代表当前模块,有以下几个属性

  • module.id:模块的识别符,通常为带有绝对路径的模块文件名 
  • module.filename:模块的文件名,带有绝对路径
  • module.loaded:返回一个布尔值,表示模块是否已经加载完毕
  • module.parent:返回一个对象,表示调用该模块的模块
  • module.children:返回一个数组,表示该模块需要用到的模块
  • module.exports 表示该模块输出的值

三、模块的导出、导入

1.导出

导出分为module.exports导出和exports导出,两者实则指向同一个对象,exports可以相当于指向的是对象的引用地址,默认

注意:两种导入不可以同时使用,如果同时使用最终导出的结果都是以 module.exports 所指向的对象为准

1.1module.exports的使用

//1.js内的代码 使用module.exports导出
function getData() {
    console.log(2222);
}
const a = {
    name: 'zhangsan ',
};
module.exports = { getData, a };
//2.js内 导入1.js导出的模块 
const f = require('./1');
console.log(f);
//输出结果
//{ getData: [Function: getData], a: { name: 'zhangsan ' } }

1.2 使用exports导出

注意:exports导出不能直接赋值一个变量/引用对象,因为exports指向的是引用地址,如果赋值则改变了指向,失去导出的相关属性,只能通过exports.某个属性进行赋值

//1.js内的代码
exports.a = 1;
exports.getData = function getData() {
    console.log(2222);
};
//2.js内导入1.js
const f = require('./1');
console.log(f);
//输出结果
//{ a: 1, getData: [Function: getData] }

错误示例:

如果module.exports和exports同时使用,只会采用module.exports的内容

//在1.js中同时使用module.exports和exports 
const f = function getData() {
    console.log(2222);
};
exports.a = 1;
exports.getData = f;
module.exports = { f };

//在2.js中输出导入的内容 
const f = require('./1');
console.log(f);
//结果为module.exports导出的内容
{ f: [Function: getData] }

 2.导入

require方法用于加载exports导出的数据,实则是加载js文件

//引入1.js文件
const f = require('./1');
console.log(f);


总结

以上则是对CommonJs使用的相关知识点总结,希望对你有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值