1. 程式人生 > >node學習四:模組化

node學習四:模組化

模組化:

是從程式碼邏輯的角度進行劃分的;方便程式碼分層開發,保證每個功能模組的職能單一;

傳統非模組化開發有如下的缺點:

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解析