今天看了一下node.js的書哲鸳,理解了模塊化的意思褥民,之前在項目中勃痴,不論是react-native還是vue谒所,只要是看見exports和require,總是一頭霧水沛申,今天就來解釋一下劣领,來加深一哈理解。
1.為何要進行模塊化铁材??模塊化就是將功能進行拆解尖淘,再組合的過程。因為一個項目不可能總是由一個文件構(gòu)成的著觉,模塊化可以更好地服務(wù)于你村生。
2.模塊化的兩種方法:
第一種方法最簡單的就是創(chuàng)建兩個文件,在另外一個文件中引用這個文件饼丘,并調(diào)用這個模塊中的方法趁桃。
舉個栗子:
在module.js中有這樣的代碼:
//module.js
var name;
exports.setName = function(BName) {??
name = BName;
};
exports.sayHello = function() {??
console.log('看你不爽的?' + name);
};
在另外一個文件getModule.js中:
//getmodule.js
var myModule = require('./module'); //在同一目錄文件下
myModule.setName('Bacon');
myModule.sayHello();
運行node getmodule.js,可也以安裝supervisor,可以進行實時調(diào)試卫病,很舒服油啤。
輸出結(jié)果是:
看你不爽的?Bacon
第二種方法就是進行封裝,再來看:
//capsuleModule.js
function fSBacon() {??
var name;?????
this.setName = function (BName) {????
name = BName;??
};???
? ? ? this.sayHello = function () {????
console.log('依然看你不爽的?' + name);
};
};
module.exports = fSBacon;?
注:也可用exports.Hello = Hello;?不可以通過對?exports?直接賦值代替對?module.exports?賦值蟀苛。?exports?實際上只是一個和?module.exports?指向同一個對象的變量益咬,?它本身會在模塊執(zhí)行結(jié)束后釋放,但?module?不會帜平,因此只能通過指定?module.exports?來改變訪問接口幽告。
在另外一個文件getCapsuleModule.js中:
//getCapsuleModule.js
var fSBacon = require('./ capsuleModule’);
bacon = new fSBacon ();
bacon.setName('Bacon');
bacon.sayHello();
接管依然如是。
今天要寫的就這么些嘍裆甩,主要是對模塊化和封裝有了一些更深的認識评腺,知道的太少。
然而秋招的腳本更近了……淑掌,實習還沒有著落......