最近在學習NodeJs,基礎知識看了看,而後就跑去看Express了,可是真正動手寫代碼的時候下手仍是不夠穩準狠。這說明基礎知識是不行嘀,因此再返回來從新學習。node
NodeJs的項目中,最常使用的就是模塊,模塊的聲明、模塊的調用。可是模塊究竟是個啥?聲明都有哪些方式,調用都有哪些方式呢?直入正題,且看下文學習
先來個最簡單的:測試
//main.jsui
//main.js var example = require('./example'); example.show();
//example.jsspa
//example.js function show(){ console.log("Hi,I'm example"); } exports.show = show;
ok,很簡單吧,運行:node main.jscode
結果顯示調用輸出了example.js中的show()方法。對象
仔細看代碼,你會發現,main.js中首先引入了example.js這個模塊,而後賦值給example這個變量,調用的時候是example.show(),也就是說example的屬性中有show()這個方法。事實上是這樣嗎,咱們測試一下,改寫代碼接口
main.jsio
//main.js var example = require('./example'); example.show(); console.log(example); //增長一行輸出
結果:console
看最後一行,輸出的變量example是個{key:value }這樣子的傢伙,這是什麼?是個Object唄!
整理一下
聲明:exports 栗子:exports.xxx = yyy;
調用:require 栗子:var xxx = require('yyy'); //得到的是一個{....}這樣子的Object
ok,你們看完上面應該會基本的使用方法了。
那咱們在example.js中能夠再寫幾個function,而後exports.xxx = 那個function,main.js中調用。雖然這麼寫沒什麼問題,可是這裏仍是建議一個js文件只作一個模塊使用,清晰明瞭一看項目結構就知道功能,這樣不是更好麼。
繼續,如今換一種寫法
//example.js
//example.js module.exports = function(){ console.log("Hi,I'm example"); }
//main.js
//main.js var example = require('./example'); example.show();
直接運行看結果:
報錯了吧!show()是個undefined,說明我們調用的example模塊沒有show()這個屬性。
輸出看看example變量是個啥東東
main.js中增長入直接輸出example的代碼:
console.log(example);
結果:
example變成了Function對象,經過typeof也能夠看到是個function
這說明,咱們經過module.exports = function(){...} 是直接把一個對象封裝成了模塊,那麼經過require獲取這個模塊的時候也是直接獲得一個對象。
那麼,怎麼用這個模塊呢?看代碼:
//main.js var example = require('./example'); var _example = new example();
結果:
Bingo!
總結一下:
方式1 : 建立--- exports.xxx = function(){......}
使用--- var xxx = require('yyy');
xxx.zzz();
方式2:建立 --- module.exports = function(){......}
使用 --- var xxx = require('路徑');
var yyy = new xxx();
目前能想到的就這麼多,主要的點是:一個是定義在exports對象上的方法,另外一個是接口對象就是要輸出的對象自己。
後續的內容慢慢添加吧,先記錄下來,方便之後複習。