出處 , 有繁體版 ( 僅上半部分 ) 進入後自行點選
大概滑了一下這頁 , 非~常~的長 , 希望不要寫三天啊~但我覺得會超過
Node 是一個開源 、 跨平台 、 開發者可以用 JS 開發 ss app 和工具的執行環境 。 目的是可以在瀏覽器外直接執行 ( 也就是說可直接在電腦運行或在伺服器上運行 ) , 因此這個環境會忽略瀏覽器限定的 JS APIs , 並支援傳統的 OS ( operating system ) APIs
, 包含 HTTP & file system libraries
從 web server 開發觀點來看 , Node 有很多優勢 :
real-time web app
, 我去估狗了一下這究竟是什麼 , 發現用 Socket.io
可以實踐 , 有興趣的人可以下這個關鍵字 , 或是點下方連結來看它可以做到什麼有趣的事 (圖文並茂又親民的文章) :語種轉換
Python
, PHP
... 等等 )TypeScript
, CoffeeScript
, ClojureScript
, Scala
, LiveScript
... 等等dependency
)解方 , 並可自動化多數工具鍊Windows
, macOS
, Linux
, Solaris
, FreeBSD
, OpenBSD
, WebOS
, NonStop OS
上執行。我們可以用 Node HTTP package 打造一個簡易的 web server
終於要Hello了!
下方範例是建立一個偵聽 http://127.0.0.1:8000/
的 HTTP req
web server ,
當 server 接到 req
, 腳本碼運行 , 回覆要執行回傳字串 Hello World 的 res
, 如果已經安裝好 Node , 我們接著以下步驟 :
Terminal
( 我習慣都直接在 vs code 專案資料夾打開 terminal
, 可以省略第二步驟 )test-node
) , 然後進入資料夾:新增 & 進入指令 ( 以後若要操作遠端主機就沒有右鍵或圖形介面 ( GUI ) 可以新增資料夾 )
mkdir test-node
cd test-node
進入資料夾也可以把資料夾拖到終端機介面 , 路徑就會自動生成 , 然後再到最前面補上cd
, 例如:
拖進來之後長這樣
[~/Document/其他任意當前位置] $ /Users/使用者名字/Documents/鐵人賽2020/test-node
補上指令
[~/Document/其他任意當前位置] $ cd /Users/使用者名字/Documents/鐵人賽2020/test-node
這樣就會進入資料夾了
[~/Documents/鐵人賽2020/test-node] $
hello.js
, 貼上這段 code 之後儲存 ( 這部分與繁中版有些許不一樣 , 主要差異在於這邊用到 ES6
) :// 載入 HTTP 模組
const http = require("http");
const hostname = "127.0.0.1";
const port = 8000;
// 建造 HTTP server
const server = http.createServer((req, res) => {
// 設定 response HTTP header 並帶上 HTTP status and Content type
res.writeHead(200, {'Content-Type': 'text/plain'});
// 傳送 response body "Hello World"
res.end('Hello World\n');
});
// 當 server 開始偵聽 , terminal 印出這段 log
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
})
node hello.js
http://localhost:8000
, 會看到 Hello World
在頁面中出現其他常見的框架任務都不受 Node
直接支援 ,
如果想要為 HTTP 行為 ( GET, POST, DELETE ... )
新增特定處理器 , 需在不同 URL paths ( routes ) 個別處理 req , 或用 templates 新增 res , 但需要全部自己寫 。
要避免重複造輪 , 就用框架吧 !
Node 最紅的框架 , 而且是眾多流行 Node 框架的基層函式庫 ( 啊 ? 表示他很輕量可兼具 framework
& library
吧 ) , 它有以下機制 :
port
& 用來渲染 res 的 local templates
middleware
middleware
補充 :
因 Express 本身比較輕簡 , 開發者為了解決大部分的網頁開發問題 , 已建造兼容的 middleware 套件 。
有很多程式庫可以和 cookies
, sessions
, user logins
, URL parameters
, POST data
, security headers
, ... 等等進行協作 。 可以在 Express Middleware 找到 middleware 現正流行的第三方套件清單
Note: 這樣高彈性是把雙面刃 , 由middleware 套件處理大部分碰到的問題 , 但選用正確的套件有時是種挑戰 。
沒有建構 app 絕對正確的方式 , 在網路上可以找到很多範例 , 但可能沒有優化過 , 或是僅有少部份是在開發 app 時所需要的