node學習四:模組化
阿新 • • 發佈:2018-11-25
模組化:
是從程式碼邏輯的角度進行劃分的;方便程式碼分層開發,保證每個功能模組的職能單一;
傳統非模組化開發有如下的缺點:
1、命名衝突
2、檔案依賴
前端標準的模組化規範:
1、AMD - requirejs
2、CMD - seajs
伺服器端的模組化規範:
1、CommonJS - Node.js
模組化相關的規則:
1、如何定義模組:一個js檔案就是一個模組,模組內部的成員都是相互獨立
2、模組成員的匯出和引入
前端模組化和伺服器端模組化的區別:
本質上差不多
從js檔案載入上來說的話是有區別的:
前端模組化載入js檔案需要通過網路從伺服器傳輸到瀏覽器端,程式碼才能執行,檔案載入是非同步的,因為要保證頁面渲染的效率
伺服器端模組化載入js檔案只需要從磁碟載入到記憶體中,檔案載入是同步的
exports匯出模組成員:
03.js:
var sum = function(a,b){
return parseInt(a) + parseInt(b);
}
// exports匯出模組成員
exports.sum = sum;
04.js:
var module = require('./03.js');
var ret = module.sum(12,13);
console.log(ret);
輸出:
module.exports匯出成員:
03.js:
var sum = function(a,b){ return parseInt(a) + parseInt(b); } module.exports = sum;
04.js:
var module = require('./03.js');
var ret = module(12,15);
console.log(ret);
輸出:
通過global匯出成員(不常用):
07.js:
var flag = 123;
global.flag = flag;
08.js:
require('./07');
console.log(global.flag);
輸出:
08.js匯入多次相同的模板:
07.js:
console.log('hello'); var flag = 123; global.flag = flag;
08.js:
require('./07');
require('./07');
require('./07');
require('./07');
require('./07');
require('./07');
console.log(global.flag);
輸出(只會列印一次結果):
只會列印一次結果的原因:
已經載入的模組會快取
模組的載入優先順序(不加檔案字尾時的優先順序):
require('./07')省略檔案字尾名,按檔名搜尋載入模組時,模組的載入優先順序(不加檔案字尾時的優先順序):07.js -> 07.json -> 07.node
模組成員的匯出最終以module.exports為準
如果要匯出單個的成員或者比較少的成員,一般我們使用exports匯出;
如果要匯出的成員比較多,一般我們使用module.exports的方式
這兩種方式不能同時使用
exports與module的關係:
module.exports = exports = {};
模組分類:
自定義模組
系統核心模組
fs 檔案操作
http 網路操作
path 路徑操作
querystring 查詢引數解析
url url解析