6-1 Node.js 模組

weixin_34321977發表於2016-09-12

Node.js 的模組

為了讓Node.js的檔案可以相互呼叫,Node.js提供了一個簡單的模組系統。
模組是Node.js 應用程式的基本組成部分,檔案和模組是一一對應的。
換言之,一個 Node.js 檔案就是一個模組,這個檔案可能是JavaScript 程式碼、JSON 或者編譯過的C/C++ 擴充套件。

建立一個模組

建立一個 funcitons.js 檔案 檔案內容如下

/*
 * 這是一個對 物件 操作的模組
 */

// 定義一個陣列
var arr = new Object();

// 獲取單個資料
function get(key){
  return arr[key];
}

function getList(){
  return arr;
}

function add(key, value){
  return arr[key] = value;
}

function edit(key, value){
  return arr[key] = value;
}


function del(key){
  return delete arr[key];
}

function clear(){
  arr = new Object();
}

function dump(){
  data = getList();
  console.log(data);
}

//  通過設定modul.exports物件
//  將這些方法繫結到 modul.exports物件
//  當匯入這個檔案的時候 就可以呼叫了
module.exports.get = get;
module.exports.getList = getList;
module.exports.add = add;
module.exports.edit = edit;
module.exports.del = del;
module.exports.clear = clear;
module.exports.dump = dump;

模組的使用

在同目錄下 建立一個 code.js 內容如下


// 匯入模組
var functions  = require('./functions');
// 注意模組匯入模組的是不加 “.js” 字尾的
// 模組名即 檔名
// 路徑必須 填寫 絕對路徑 或者相對路徑
// 即 /xxxx/xxx/檔名 或者 ./xxx/檔名
// 如果路徑 是這樣的  'functions' 這樣是會報錯的。
// 只有node.js 內部的模組  才可以這麼引入 例如  http, fs 等


// 列印看看 functions 物件 都是啥。。。

// 看看物件有什麼
console.log(functions);

// 列印的資料如下 全是我們剛才暴露的方法。。。。。
// chen@chen:~/study/2-1 module$ node 2-2\ code.js
// { get: [Function: add],
//   getList: [Function: getList],
//   add: [Function: add],
//   edit: [Function: edit],
//   del: [Function: del],
//   clear: [Function: clear],
//   dump: [Function: dump] }
// chen@chen:~/study/2-1 module$
//



// 使用模組
/*
所有剛剛在 functions 檔案中暴露的都可以通 引入的物件操作
*/

// 新增
functions.add('11', 'aaa');
functions.add('22', 'bbb');

// 獲取單個
var data = functions.get('11');
console.log(data);


// 獲取列表
data = functions.getList();
console.log(data);

// 修改單個
functions.edit('11', 'ccc');
functions.dump();


// 刪除單個
functions.del('11');
functions.dump();

// 清空全部
functions.clear();
functions.dump();

輸出的效果如下

chen@chen:~/study/nodejs/module$ node  code.js 
// 這個是物件資訊
{ get: [Function: get],
  getList: [Function: getList],
  add: [Function: add],
  edit: [Function: edit],
  del: [Function: del],
  clear: [Function: clear],
  dump: [Function: dump] }

// 下方是呼叫方法的輸出結果
aaa
{ '11': 'aaa', '22': 'bbb' }
{ '11': 'ccc', '22': 'bbb' }
{ '22': 'bbb' }
{}
chen@chen:~/study/nodejs/module$ 

模組小結

  • 最好一個模組 一個操作,但是不要太過耦合 和 單一
  • 檔名即是 模組名
  • 引入 模組的時候 注意路徑 要麼是絕對路徑 要麼是相對路徑
  • 只用引入 nodejs 自帶模組 才可以 不帶路徑 直接模組名
  • 模組內的方法 或者物件,如果需要被外部訪問,需要通過設定 module.exports. 來繫結

相關文章