建立你的第一個 express 專案

建立專案

專案結構

MVC(Model–view–controller)為軟體工程中的一種軟體架構模式。它由三個部分所形成:

Model

主要用來處理資料的邏輯及資料庫的部分。只要是與資料相關的事情,都會交由它處理。

View (api 不處理這一塊)

將 Model 的資料透過 View 來呈現給使用者。

Controller

藉由使用者的行為來控管及觸發特定的事件,並指示該事件所對應的 Model 來進行處理。

自定義的 Express MVC

若使用 Express 的快速建置開發環境的專案,是還沒有做到職責分離的動作,我們可以試著將controllermodel加入其中,其運作會是:

draw.io

%E5%BB%BA%E7%AB%8B%E4%BD%A0%E7%9A%84%E7%AC%AC%E4%B8%80%E5%80%8B%20express%20%E5%B0%88%E6%A1%88%203db5cd7afa2c46cb948eb9d4e08e0ff1/Ib40a1T.png

資料結構就會變成:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
.
├── app.js
├── bin
│ └── www
├── controllers
│ ├── index_controller.js
├── models
│ ├── index_model.js
├── package.json
├── public
│ ├── images
│ ├── javascripts
│ └── stylesheets
│ └── style.css
├── routes
│ ├── index.js
│ └── users.js
└── views
├── error.ejs
└── index.ejs

vscode 打 api 套件 ⇒ Thunder Client

為什麼 node 不能用 import export

模塊化編程在 js 界流行,也是基於此,隨後在瀏覽器端,requirejs 和 seajs 之類的工具包也出現了,可以說在對應規範下,require 統治了 ES6 之前的所有模塊化編程,即使現在,在 ES6 module 被完全實現之前,還是這樣。
ES6 標準發布後,module 成為標準,標準的使用是以 export 指令導出接口,以 import 引入模塊。
但因為一些歷史原因,雖然 Node.js 已經實現了 99%的 ES6 新特性,採用的卻是 CommonJS 規範,使用 require 引入模塊,使用 module.exports 導出接口。

什麼是 Babel

在前一篇文章中,我們談到如何安裝 Node.js 本身,本文則介紹如何安裝 Babel。

Babel 是 JavaScript 轉譯器,可將 ES6+ 程式碼轉為等效的 ES5 程式碼,我們在撰寫程式時就可以使用新的語法特性來改善程式碼的品質,而不用刻意守在舊有的手法。在實際執行 JavaScript 程式時,則會以普遍受到支援的 ES5 來執行,不用考慮 ES6 實作不夠完整的議題。

或許再過幾年,瀏覽器充份支援 ES6 的特性,那麼 Babel 專案就可以功成身退。但我們的專案並沒有白費,因為我們原本就是用 JavaScript 來寫程式,只是在版本間做了些轉換。

node 为什么不支持 import?

https://opensourcedoc.com/javascript-programming/babel/

參考文章

Node.js-Backend 見聞錄(10):關於後端觀念(六)-關於 MVC - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天

https://kusakawazeusu.medium.com/%E7%94%A8-typescript-%E5%AF%AB-express-route-%E8%88%87-controller-%E7%AF%87-40db4850a8f2