01-模块化规范

nobility 发布于 2021-01-11 1229 次阅读


模块化规范

CommonJS

基本语法

const test = require("./test");	//模块导入
//会先将test.js整个文件执行一遍,即使多次导入也只执行一遍,并且第二次获取的导入对象与第一次的导入对象是同一个对象
//若导出语句有多个,后面会覆盖前面的语句
//若有导出模块语句才会导出,否则会是空对象

module.exports = {};	//设置对象进行导出对象
//exports = {};	//错误写法

module.exports.key = "value";	//设置属性单个属性进行导出
exports.key = "value";	//简写

原理

在一个单独文件中使用var关键字定义的变量并非全局变量,与浏览器端相同的node中也有全局对象,并非window对象,而是global对象,倘若不使用关键字直接定义变量则该变量属于全局对象global

CommonJS将单独一个文件中的代码都放在一个立即执行函数中,moduleexportsrequire是当参数进行传入的,可用以下语句进行检测

console.log(arguments.callee.toString());
// function (exports, require, module, __filename, __dirname) {
//     console.log(arguments.callee.toString());
// }
//console.log(module.exports === exports); //true
//exports = {};无法导入任何东西的原因就是该变量仅仅是一个对象的指针,这样只是在函数内部改变了指针的指向,而并没有将该指向的内容修改
//__filename为当前js文件(包括路径)
//__dirname为当前js文件所在目录
此作者没有提供个人介绍
最后更新于 2021-01-11