# express.js [express](expressjs.com/) ---- express.js 是一個網頁應用程式框架 --- # 可以幹麻? ---- 架設網站? ---- 解析請求? ---- 解析 cookie ---- 回應頁面? ---- # 都不行 --- # 那他可以幹麻? ---- 根據你的請求叫不同的人(middleware)做事 --- # middleware ---- 什麼是 middleware? ---- middleware 是可以處理 http 請求和 request, response 的函式 --- 有哪些現成的 middleware 可以用? [middlewares](https://expressjs.com/en/resources/middleware.html) ---- 不想記這麼多怎麼辦? ---- 用 express-generator --- # express-generator ---- ``` $ npm i express-generator -g $ express -e [app name] ``` --- 回到 middleware --- # 結構 ---- ```javascript= function myMiddleware(req, res, next){ // do something next(); } ``` --- ## res ---- http 請求的相關參數和方法 ---- 常見的有 | name | description | | ---------- | -------------------------------- | | req.body | post 方法所傳遞的資料 | | req.query | get 方法所傳遞的參數 | | req.cookie | 網站儲存的 cookie | | req.params | 從路由設定的參數(":"開頭的)注1 | | req.get() | 取得請求的 http header | ---- 注1 ```javascript= app.get('/user/:id', (req, res, next) => { console.log(req.params.id); }); // http://localhost:3000/user/simba-fs // => "simba-fs" ``` --- # res ---- http 回應相關的方法 ---- 常見的有 | name | description | | ----------------- | -------------------------------------------------- | | res.cookie() | 設定 cookie | | res.clearCookie() | 清除 cookie | | res.download() | 傳送一個檔案給 client 下載 | | res.append() | 加一段內容在將要發送的佇列裡 | | res.end() | 發送佇列中的內容 | | res.send() | 送出一個字串、JSON或物件(就是)什麼都可以放的意思 | | res.render() | 用樣板引擎染一個指定的頁面並送出 | | res.redirect() | 重新導向 | | res.status() | 設定狀態碼 | --- # next 這是一個函式,沒有任何參數 執行後會將操作權交給下一個中介軟體 通常配合`return next()`來使用 避免後續會有其他的操作 --- # 載入中介軟體 ---- `app.use()` `router.use()`
{"metaMigratedAt":"2023-06-15T03:51:24.818Z","metaMigratedFrom":"YAML","title":"express.js","breaks":true,"contributors":"[{\"id\":\"e9395e03-a75e-451d-8392-22ff7e9c3ef5\",\"add\":2302,\"del\":165}]"}
    534 views
   Owned this note