Node.js(二)——npm包管理器,koa安裝及使用,koa中的applition對象及context對象,koa-views,koa-static,koa-router,常見http狀態碼

目錄

1.課堂目標及知識點

2.koa介紹

3.koa使用

3.1koa安裝

3.2一個簡單的koa服務器

3.3Koa 利用中間件 控制"上游",調用"下游“;

4.Application對象

5.上下文context對象常用屬性及方法

5.1context 將node中的request和response 封裝到一個對象中,並提供一些新的api提供給用戶進行操作;

5.2request及response別名

5.2.1koa會把ctx.requset上的屬性直接掛載到ctx上如:

5.2.2同樣也會把ctx.response上的屬性直接掛載到ctx上如:

5.2.3ctx.status 獲取響應狀態。

5.2.4http狀態碼

6.koa常用中間件——koa-router

6.1koa-router安裝

6.2Koa-router使用

6.3Koa-router推薦使用RESTful架構API。

7.koa常用中間件——koa-views

8.koa常用中間件——koa-static

9.koa常用中間件——模板引擎pug

9.1模板引擎

9.2安裝pug

9.3pug常用語法

9.4練習工具 hade


1.課堂目標及知識點

課堂目標

  1. npm包管理器使用
  2. koa使用
  3. 瞭解koa中的applition對象及context對象
  4. koa-views使用
  5. koa-static使用
  6. 使用koa-router中間件搭建路由
  7. 瞭解常見http狀態碼

本節知識點

  1. http模塊實現模板加載及靜態文件處理
  2. koa的安裝及使用
  3. Application及context對象介紹
  4. 常用http狀態碼介紹
  5. 路由中間件koa-router介紹
  6. 中間件koa-views介紹

2.koa介紹

koa是express原班人馬打造的輕量、健壯、富有表現力的nodejs框架。目前koa有koa1和koa2兩個版本;koa2依賴Node.js 7.6.0或者更高版本;koa不在內核方法中綁定任何中間件,它僅僅是一個輕量級的函數庫,幾乎所有功能都必須通過第三方插件來實現。

3.koa使用

3.1koa安裝

$ npm i koa

3.2一個簡單的koa服務器

const Koa = require('koa');
const app = new Koa();
​
app.use(async ctx => {
  ctx.body = 'Hello World';
});
​
app.listen(3000);

3.3Koa 利用中間件 控制"上游",調用"下游“;

  • koa是包含一組中間件函數的對象;可以將app.use裏的函數理解成中間件
//這裏的middleWare函數就是一箇中間件
let middleWare = async (ctx,next)=>{
    console.log("first middleWare");
    ctx.body = "hello world";
}
app.use(middleWare);
  • 通過next()將控制轉交給另一箇中間件;
  • 上述過程也可以通過"洋蔥模型“來解釋中間件執行順序

4.Application對象

  • application是koa的實例 簡寫app
  • app.use 將給定的中間件方法添加到此應用程序,分爲同步和異步,異步:通過es7中的async和await來處理
  • app.listen設置服務器端口;
  • app.on 錯誤處理;

5.上下文context對象常用屬性及方法

5.1context 將node中的request和response 封裝到一個對象中,並提供一些新的api提供給用戶進行操作;

  • ctx.app:應用程序實例引用,等同於app;
  • ctx.req:Node 的 request 對象.
  • ctx.res:Node 的 response 對象.
  • ctx.request:koa中的Request對象;
  • ctx.response:koa中的response對象;
  • ctx.state:對象命名空間,通過中間件傳遞信息;
  • ctx.throw:拋出錯誤;

5.2request及response別名

5.2.1koa會把ctx.requset上的屬性直接掛載到ctx上如:

…...

  • ctx.header //頭信息;
  • ctx.headers
  • ctx.method
  • ctx.method=
  • ctx.url
  • ctx.url=

5.2.2同樣也會把ctx.response上的屬性直接掛載到ctx上如:

….

  • ctx.body
  • ctx.body=
  • ctx.status
  • ctx.status=

5.2.3ctx.status 獲取響應狀態。

默認情況下,response.status 設置爲 404 而不是像 node 的 res.statusCode 那樣默認爲 200

5.2.4http狀態碼

  • http狀態碼:1xx(消息)、2xx(成功)、3xx(重定向)、4xx(請求錯誤)、5xx和6xx(服務器錯誤)

  • 常見http狀態碼 (302 location 跳轉)

    HTTP狀態碼 描述
    100 繼續。繼續響應剩餘部分,進行提交請求
    200 成功
    301 永久移動。請求資源永久移動到新位置
    302 臨時移動。請求資源零時移動到新位置
    304 未修改。請求資源對比上次未被修改,響應中不包含資源內容
    401 未授權,需要身份驗證
    403 禁止。請求被拒絕
    404 未找到,服務器未找到需要資源
    500 服務器內部錯誤。服務器遇到錯誤,無法完成請求
    503 服務器不可用。零時服務過載,無法處理請求

6.koa常用中間件——koa-router

  • 路由是引導匹配之意,是匹配url到相應處理程序的活動。

6.1koa-router安裝

npm i koa-router -S

6.2Koa-router使用

6.3Koa-router推薦使用RESTful架構API。

Restful的全稱是Representational State Transfer 即表現層轉移。

  • RESTful是一種軟件架構風格、設計風格,而不是標準,只是提供了一組設計原則和約束條件。基於這個風格設計可以更簡潔,更有層次;
  • 非RESTful架構api:
  • 使用RESTful架構設計api

 

REST設計一般符合如下條件:

  • 程序或者應用的事物都應該被抽象爲資源
  • 每個資源對應唯一的URI(uri是統一資源標識符)
  • 使用統一接口對資源進行操作
  • 對資源的各種操作不會改變資源標識
  • 所有操作都是無狀態的

7.koa常用中間件——koa-views

Koa-views用於加載html模板文件;

  • 安裝 koa-views

    npm i koa-views -S

  • 使用koa-view

8.koa常用中間件——koa-static

  • koa-static 是用於加載靜態資源的中間件,通過它可以加載css、js等靜態資源;

  • 安裝 koa-static

    npm i koa-static

  • 使用koa-static

const static = require("koa-static");
app.use(static(__dirname+"/static")) //加載靜態文件的目錄

9.koa常用中間件——模板引擎pug

9.1模板引擎

模板引擎是web應用中動態生成html的工具,負責將數據和模板結合。常用的模板引擎有ejs 、jade(現更名pug)、Handlebars、Nunjucks、swig 等,每種模板引擎功能類似,語法不同。

參見:https://blog.csdn.net/qq_34569497/article/details/105650058

9.2安裝pug

npm i pug -g

9.3pug常用語法

  • pug語法:通過縮進關係,代替以往html的層級包含關係,如 個簡單的靜態 可以表達爲,注意要統一使用tab或者空格縮進,不要混用
  • 內聯書寫層級,a: img
  • style屬性:div(style={width:”200px”,color:”red”})
  • 使用”-”來定義變量,使用“=”把變量輸出到元素內;
  • 通過 #{variable} 插 相應的變量值
  • html 元素屬性通過在標籤右邊通過括號包含(可以通過判斷來添加)
  • 文本通過在 字前 添加豎線符號“|”可讓 jade 原樣輸出內容 在html標籤標記後 通過空格隔開 本內容 在html標籤標記後通過添加引號“.”添加塊級文本
  • 註釋:可以通過雙斜槓進 註釋,jade有3種註釋 式,可以分別對應輸出html 註釋、 輸出html註釋、塊級html註釋
  • 循環:each val in [1,2,3]
  • 判斷語句:”if else” case when default
  • mixin:混合模式
  • include common/footer.pug 通過include引入外部文件

9.4練習工具 hade

npm i hade -g

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章