require()
程序员文章站
2022-07-14 20:30:13
...
module = new Module() //module 为 Module类的实例
var Module = function(id, parent) {
this.id = id;
this.exports = {};
this.parent = parent;
this.filename = null;
this.loaded = false;
this.children = [];
}
var require = function(){
return module.exports
}
模块的加载实质上就是,注入exports、require、module三个全局变量,然后执行模块的源码,然后将模块的 exports 变量的值输出。—— require() 源码解读
所以说每一个require的文件执行的过程,都是先读取文件,注入变量,再执行代码,所以node文件不需要自己实例化Module,在require的时候会自动实例化的,所以从另一个角度说,文件并不会直接执行,所以看上去文件中的require,module等变量都为创建而可以执行。
//a.js
exports.multiply = function(n) {
return n * 1000
};
//index.js
require('./a.js')
//require('./a.js')实际的变为了
var module = {
exports: {}
};
(function(module, exports) {
exports.multiply = function(n) {
return n * 1000
};
}(module, module.exports))
return module.exports;
Demo
上一篇: 清除require引入的js缓存
下一篇: require
推荐阅读
-
详解React开发中使用require.ensure()按需加载ES6组件
-
require.js与bootstrap结合实现简单的页面登录和页面跳转功能
-
php include和require的区别深入解析
-
使用bootstrap的dropdown部件时报错:error:Bootstrap dropdown require Popper.js
-
PHP中require和include路径问题详解
-
require(),include(),require_once()和include_once()的异同
-
php 文件包含 include、include_once、require、require_once
-
Require.js的基本用法详解
-
详解小程序循环require之坑
-
Node.js中的require.resolve方法使用简介