接續前面的介紹~
4.模組化、require、Service 層
後端不會把所有程式都塞在:server.js
而是拆成不同責任。
例如:
project/
│
├── server.js
├── routes/
│ └── userRoute.js
│
├── services/
│ └── userService.js
│
└── data/
└── users.json
假設 userService.js:
function getUser() {
return {
id: 1,
name: "SS C"
};
}
module.exports = {
getUser
};
其他檔案就可以:
const userService = require("./services/userService");
const user = userService.getUser();
console.log(user);
這就是:
module.exports
↓
把東西輸出
require()
↓
把其他模組拿進來使用
Service 又是什麼?
Service 可以先理解成:負責處理「業務邏輯」的地方。
例如「取得使用者資料」可能不是單純讀資料而已:
async function getUser(id) {
const user = await findUser(id);
if (!user) {
throw new Error("User not found");
}
return user;
}
所以常會形成:
Request
↓
Route / Controller
↓
Service
↓
Database / File / API
總結所以後端 JavaScript 的世界觀
大概會是這樣的架構
Browser
JavaScript ───────┤
│
└──── Node.js
│
↓
Server
│
┌───────────┼───────────┐
↓ ↓ ↓
模組化 process.env 非同步 I/O
↓ ↓ ↓
require 環境設定 fs/promises
↓ ↓
Service Promise
↓ ↓
業務邏輯 async/await
Node.js 是在學:
「JS 如何在 Server 上接 Request、執行業務邏輯、讀取資料,再回 Response?」