CommonJS规范相关知识点

发布时间:2024年01月23日

目录

一、什么是CommonJS?

二、module(模块)

三、模块的导出、导入

1.导出

1.1module.exports的使用

1.2?使用exports导出

?2.导入

总结


一、什么是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使用的相关知识点总结,希望对你有所帮助。

文章来源:https://blog.csdn.net/Tonghanhan/article/details/135772499
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。