模組化與 Library
通常在大專案底下,都會需要有許多功能( 登入、金流、留言板 ),若是把所有功能寫在同樣的主程式底下,很可能修改其中一個公能會不小心動到其他的。所以依照不同功能把程式拆開來,就是模組化的概念。
引入 Module
以 Node.js 提供的一個 Module (OS)為例,可以用 require
來引入 OS
var test = require('os')
// 左邊的 test 是自己命名的,右邊的 os 是 Module 的名稱
console.log(test.platform())
// 接下來只要使用 test. 就可以使用 OS 的函式 這邊是以使用 platform() 為例
導出 Module
- 導出函式不只可以提供程式給其他人使用,還可以把自己常用的函式導出成一個函式庫。於其他程式中引入使用。
- 範例:
- 下面寫了 3 個函式,可以用物件的方式,將要導出的函式通通寫在
module.exports
之中。 - 或者用
export.<fun_name>
來將函式一個一個分別導出。
- 下面寫了 3 個函式,可以用物件的方式,將要導出的函式通通寫在
function add(a, b) {
return a + b;
};
function subtract(a, b) {
return a - b;
};
// 第一種導出的方法,可以一次把想導出的函式通通導出
module.exports = {
add: add,
subtract: subtrat,
nagative: function (a) {
return -a;
},
};
// 第二種導出的方法,一次導出一個函式,如果有多個函式就一個一個寫出來。
exports.add = add;
exports.subtract = subtract;
exports.negative = function (a) {
return -a;
};
引用剛剛導出的 Module
只要 require
剛剛儲存的檔案,就可以引入剛剛寫好的 module。
- 若是檔案在同個資料夾底下,則在檔名前面加上
./
- 副檔名可以不要寫,系統會藉由檔名來找到對應的檔案
var test = require('./myModule')
console.log(test.add(6, 7))
npm ( Node Package Manager )
NPM 是 Node Package Manager 的簡稱,它是一個線上套件庫,可以下載各式各樣的 Javascript 套件來使用。
初始化
npm init
:可以將資料夾初始化,系統會建立一個 package.json 檔,用來紀錄套件資訊跟專案資訊。
- package.json 一開始會長得像下面這個樣子
{ "name": "week3", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "dependencies": { // 記錄套件資訊 } }
- dependencies 裡面會儲存下載的 npm package
下載 Package
假設要引入 left-pad
這個套件。
- 先連到 left-pad 的官方連結,上面可以看到使用說明及版本號…等等資訊。
- 在 terminal 的專案目錄底下,輸入
npm install left-pad
來進行安裝。
專案目錄底下會 - 多一個
node_modules
資料夾,裡面會建立一個left-pad
資料夾 package.json
中的dependencies
會多出套件的資訊
#### package.json{ "name": "week3", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "left-pad": "^1.3.0" // 剛剛安裝的 left-pad } }
這個檔案有幾個好用的功能:
- 可以知道這份專案所依賴的套件有哪些
- 可以在其他電腦上利用
npm install
安裝好這份專案所需的全部套件
npm Script
可以用來寫一寫簡單的 terminal 指令,例如啟動程式之類的。
範例:在
scripts
底下寫一個指令start
用來開啟程式- 我們就可以在 terminal 輸入
npm run start
來執行這段指令{ "name": "week3", "version": "1.0.0", "description": "", "main": "myModule.js", "scripts": { "start": "node index.js", // 新增的 start 指令 "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "left-pad": "^1.3.0" } }
- 我們就可以在 terminal 輸入
可以在
scripts
寫入任何想要使用的指令- 輸入
npm run <script_key>
就可以執行
- 輸入
yarn ( 另一種套件管理工具 )
yarn
是由 Facebook 開發的另一種套件管理工具。
功能、指令跟 npm 都非常類似,但 yarn 的速度比較快,差別在安裝套件的指令是: yarn add <package-name>
。