詳細說明均以寫在注釋之中,這裡就不啰嗦了,小伙伴們自己詳細看吧,千萬別吧注釋當成空氣了。
代碼如下:
/*在node中,可以使用require()函數來加載模塊.
* require函數使用一個參數,參數值可以帶有完整路徑的模塊的文件名,也可以為模塊名.當使用node中提供的模塊時,在require函數中只需要指定模塊名即可.
* */
//建立一個頁面2.js;代碼如下
var name="思思博士";
exports.name=name;
//建立一個頁面1.js;代碼如下
var two=require("./2.js");
console.log(two.name);
//輸出結果:思思博士
/*
* 在node中所有的腳本文件都是一個模塊文件,因此1.js也是一個模塊文件,又由於該文件是在命令行窗口中通過node命令被直接運行的,因此在node中該模塊文件被定義為應用程序的主模塊
* 可以用如下的方法檢測出當前的模塊是否是主模塊
* */
if(module===require.main){
console.log("當前模塊時主模塊");
}
//輸出結果:當前模塊時主模塊
//2.js代碼
var name="思思博士";
console.log(name);
exports.name=name;
//1.js代碼:
var two=require("./2.js");
var two=require("./2.js");
//雖然引用了2次,但是只是執行了1次console.log(name)的輸出.
/*require.resolve(str)
* 在node中,可以使用這個函數來查詢某個模塊文件的帶有完整絕對路徑的文件名.
* */
var url=require.resolve("./2");
console.log(url);
//輸出結果:E:\node\gys\2.js
/*require.cache
* 在node中,這個屬性代表了所有已被加載模塊的緩存區.
* */
var two=require("./2.js");
var cache=require.cache;
console.log(cache);
/*輸出結果:
* { 'E:\\node\\gys\\1.js':
{ id: '.',
exports: {},
parent: null,
filename: 'E:\\node\\gys\\1.js',
loaded: false,
children: [ [Object] ],
paths:
[ 'E:\\node\\gys\\node_modules',
'E:\\node\\node_modules',
'E:\\node_modules' ] },
'E:\\node\\gys\\2.js':
{ id: 'E:\\node\\gys\\2.js',
exports: { name: '思思博士' },
parent:
{ id: '.',
exports: {},
parent: null,
filename: 'E:\\node\\gys\\1.js',
loaded: false,
children: [Object],
paths: [Object] },
filename: 'E:\\node\\gys\\2.js',
loaded: true,
children: [],
paths:
[ 'E:\\node\\gys\\node_modules',
'E:\\node\\node_modules',
'E:\\node_modules' ] } }
* */
//2.js代碼
var name="思思博士";
console.log(name);
//1.js代碼
//當使用delete關鍵字刪除緩存區中緩存的某個模塊對象後,下次加載該模塊時將重新運行該模塊中的代碼.使用代碼:
var two=require("./2.js");
var two1=require("./2.js");
console.log("刪除前")
delete require.cache[require.resolve("./2.js")];
console.log("刪除後");
var two2=require("./2.js");
/*
* 輸出結果:
* 思思博士
* 刪除前
* 刪除後
* 思思博士
* */
童鞋們是否了解了node中require()函數的用法了呢,本文是自己的一些理解,如有遺漏,還請大家指正。