全端勇士之路 Node.js 基礎學習-模組化開發

前言

接下來這邊將會來記錄一下 Node.js 的模組化開發,首先我們必須先認識到幾個語法。

require、module.exports

首先我們先來替專案建立兩個檔案,分別為 a.js 以及 b.js

a.js 內容

1
2
console.log('HelloWorld');
console.log(myName);

b.js 內容

1
var myName = 'Ray';

一般來講這時候執行一定會得到一個錯誤

Error

原因是因為在 a.js 中並沒有這個變數,因為他目前在 b.js 中,所以我們就可以使用 require 的方法將 b.js 引入

a.js 內容

1
2
3
4
var b = require('./b');

console.log('HelloWorld');
console.log(b);

但是你會得到 undefined,那是因為 Node.js 並不知道你要模組化那些變數、函數,所以 b.js 內容就要修改一下哩

1
2
3
var myName = 'Ray';

module.exports = myName;

這時候在執行一下 node a.js,就可以發現正常引入了

node a.js

那你可能會想說,可是如果我有多個變數與函數又想要傳入函數計算呢呢?我們可以這樣寫

b.js 內容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var myName = 'Ray';
var myName2 = 'Tom';


function sayHi() {
return 'Hello' + myName;
}

function Num (n) {
return n * 2;
}

module.exports = {
myName,
myName2,
sayHi,
Num
};

接下來 a.js 這邊內容就有點稍微不同哩

1
2
3
4
5
6
7
var b = require('./b');

console.log('HelloWorld');
console.log(b.myName);
console.log(b.myName2);
console.log(b.sayHi());
console.log(b.Num(2));

你會發現我改用了點運算子,因為模組化過來的都是一個物件,所以我們透過點運算子來取得模組化的東西,這邊我們就可以在執行一次 node a.js 試試看

node a.js

所以我們 module.exports 就可以這樣玩~

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var myName = 'Ray';
var myName2 = 'Tom';


function sayHi() {
return 'Hello' + myName;
}

function Num (n) {
return n * 2;
}

module.exports = {
title: 'b.js',
myName,
myName2,
sayHi,
Num
};

那 a.js 一樣就可以這樣取得

1
2
3
4
5
6
7
8
9
10
var b = require('./b');

console.log('HelloWorld');
console.log(b.myName);
console.log(b.myName2);
console.log(b.sayHi());
console.log(b.Num(2));

// title
console.log(b.title);

title

補充

先前我都會疑惑 export defaultmodule.exports 有何差異,這邊順便記錄一下

  • export default 是 ES6 專用
  • module.exports 則是 Node.js 專用,若需要撰寫 Node.js 後端就要使用此語法~
0%