凡是玩弄nodejs的人,都明白,每一個模塊都有exports、module、require、__filename、__dirname的方法
清楚了解方法的用法后,玩轉node就等於清楚了日常講話的內容
(function(exports,require,module,__filename,__dirname){ //打印一出,所有模塊的類型和值一目了然 console.log("exports:",exports); console.log("__dirname:",__dirname); console.log("__filename:",__filename); console.log("require:",require); console.log("module:",module); })(exports,require,module,__filename,__dirname);
一、__filename
*當前模塊的文件路徑:解析后的絕對路徑
//輸出當前的絕對路徑 console.log(__filename);
二、__dirname
*存放當前模塊的文件夾路徑
//輸出存放當前模塊的文件夾名稱 console.log(__dirname);
三、exports
*可以用來創建模塊,是一個對於module.exports更加簡短的引用形式。可以看出,module是exports的父親,要是你是這么想的話,你會看不到明天的太陽,嗯~,暫且不論它們的區別。
//Untitled2.js //官方模塊http、fs、url用過沒,要是沒用過的話,你滾! //量身為我而做的名片模塊 exports.name="木人子韋一日塵"; exports.qq="2309485575";
//Untitiled1.js //引用創建好的Untitled2模塊 var myCard=require("./Untitled2"); console.log(myCard);
四、module
*基本包含了當前模塊的全部信息,創建模塊的事,module.exports也能辦到,而且這才是真正的老大,exports不過是module的小弟,好東西都要上交給module大媽的
在有exports例子的前提下,修改Untitled2.js文件,Untitled1.js不變
我把exports和module.exports相互交換,你們親自理解下
//Untitile2.js
//量身為我而做的名片模塊 //module.exports賦值成類型為字符串,不為對象,不受exports創建子集影響 module.exports="我是不會變成對象的"; exports.name="木人子韋一日塵"; exports.qq="2309485575";
//Untitled2.js //量身為我而做的名片模塊 //module.exports類型想為對象,並創建子集,鳥都不鳥exports的請求 exports="我要變對象"; module.exports.name="木人子韋一日塵"; module.exports.qq="2309485575";
五、require
辛苦了require,把最簡單的你曬在了最后,這話沒毛病,白話講,它主要是能夠在當前模塊引入其它模塊,就是引入模塊,用法好說好說。
/*require()括號里可填絕對路徑或者相對路徑,只要擬引入路徑是指向后綴 名為js的文件,node老爺爺都會和藹地認同“它是模塊”,至於文件內容合不 合法,暫且不論*/ var myCard=require(__dirname+'/Untitled2.js'); /*如果是寫相對路徑的話,要注意一點,同級文件名稱要改為./統計文件名稱 ,至於還有什么要注意的,暫且不論*/ console.log(myCard);