為了減少變數汙染以及**維護node採用了commonjs規範。今天模擬一下module。
首先建立被引入檔案 a.js
module.exports = 'hello';
複製**
建立module檔案
//定義module類
class module;
}}//定義require方法
function
myrequire
()let resut = myrequire('./a');
複製**
獲取檔案路徑
function myrequire(filename)
class modulecatch(e)
}for(var i=0; ireturn pathname;
}catch(e){}
}throw error;
}}//定義拓展名
module.extentions = ['.js','.json','.node'];
複製**
讀取檔案
class module
static wrap(script)
}module.extentions["js"] = function(module))
let dirname = path.resolve(module.filename,'../');
vm.runinthiscontext(fnstr).call(module.exports,module.exports,myrequire,module,dirname,module.filename);
//檔案內部會獲得傳過來的module物件
//模組內部將要匯出的檔案掛載到module.exports上
= 'hello'
}module.extentions["json"] = function(module)
//用於拼接巢狀js檔案
module.warper = ["(function(exports,require,module,__dirname,__filename))"];
function myrequire(filename)
複製**
暫存已讀取檔案
function myrequire(filename)
//載入檔案
let module = new module(filename);
module.load();
//快取檔案
module.caches[filename] = module;
}複製**
完整**
a.js
module.exports = 'hello'
複製**
module.js
let path = require('path');
let fs = require('fs');
let vm = require('vm');
class module;
}load
() static wrap(script)
static getpath(filename)catch(e)
}for(var i=0; ireturn pathname;
}catch(e){}
}throw error;
// path.resolve(__dirname, filename);
}}module.extentions = ['.js','.json','.node'];
module.caches = {};
module.warper = ["(function(exports,require,module,__dirname,__filename))"];
module.extentions["js"] = function(module)
module.extentions["json"] = function(module)
function myrequire(filename)
//載入檔案
let module = new module(filename);
module.load();
module.caches[filename] = module;
return module.exports;
}let school = myrequire('./a.js');
複製**
Node核心模組 Module
分類 載入機制 路徑分析 檔案定位 載入封裝 function exports,require,module,filename,dirname 編譯執行 快取delete require.cache id 模組迴圈載入console.log a 開始 exports.done false const...
關於python中的module
python中的module 模組 關於這個概念以及使用時主要有以下幾點需要注意 1 import xx時,會首先將這個xx module中的 執行一遍 且僅執行一遍 例如 2 模組包 3 通過import可以匯入其他模組中的物件 物件包括 函式 全域性變數 import module name m...
Linux kernel中module相關命令集
linux的kernel能夠以動態的方式載入,解除安裝模組,以達到減小核心的大小,複雜度,以及增加核心的靈活性。目前,我知道的有lsmod,insmod,rmmod,modprobe四條命令,現在分別總結記錄這四條命令,命令後的模組名稱均不加字尾 如.ko或.o 1 lsmod 即list modu...