您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)koa和node有哪些關(guān)系,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
koa是一個(gè)基于Node.js平臺(tái)的web開發(fā)框架,依賴“node v7.6.0”或ES2015及更高版本和async方法支持;Koa并沒有捆綁任何中間件,而是提供了一套優(yōu)雅的方法,幫助用戶快速而愉快地編寫服務(wù)端應(yīng)用程序。
本教程操作環(huán)境:windows7系統(tǒng)、nodejs 12.19.0版,DELL G3電腦。
Koa -- 基于 Node.js 平臺(tái)的下一代 web 開發(fā)框架
Koa 是一個(gè)新的 web 框架,由 Express 幕后的原班人馬打造, 致力于成為 web 應(yīng)用和 API 開發(fā)領(lǐng)域中的一個(gè)更小、更富有表現(xiàn)力、更健壯的基石。 通過(guò)利用 async 函數(shù),Koa 幫你丟棄回調(diào)函數(shù),并有力地增強(qiáng)錯(cuò)誤處理。 Koa 并沒有捆綁任何中間件, 而是提供了一套優(yōu)雅的方法,幫助您快速而愉快地編寫服務(wù)端應(yīng)用程序。
Koa 是為了解決 Express 的一些設(shè)計(jì)缺陷而誕生的。它的中間件可以通過(guò) async function 來(lái)編寫,await next() 可以中斷中間件的執(zhí)行,等到后面所有中間件執(zhí)行完之后再執(zhí)行,通過(guò) await next() 來(lái)實(shí)現(xiàn)洋蔥模型。
還有一個(gè)特點(diǎn)是對(duì) request 和 response 的簡(jiǎn)化處理,這兩者都掛載在 ctx 上使用,返回的內(nèi)容也可以通過(guò)直接賦值來(lái)使用,如:ctx.response.body = fs.createStream('really_large.xml')。
而且 Koa 把路由功能砍掉了,它是通過(guò)中間件來(lái)實(shí)現(xiàn)的,這是一種微內(nèi)核的極簡(jiǎn)思路。
核心功能(Koa 的說(shuō)明文檔):
比 Express 更極致的 request / response 簡(jiǎn)化,如:
ctx.status = 200
ctx.body = 'hello node'
使用 async function 實(shí)現(xiàn)的中間件。
有“暫停執(zhí)行”的能力。
在異步的情況下也符合洋蔥模型。
精簡(jiǎn)內(nèi)核,所有額外功能都移到中間件里實(shí)現(xiàn)。
安裝
Koa 依賴 node v7.6.0 或 ES2015及更高版本和 async 方法支持.
你可以使用自己喜歡的版本管理器快速安裝支持的 node 版本:
$ nvm install 7 $ npm i koa $ node my-koa-app.js
使用 Babel 實(shí)現(xiàn) Async 方法
要在 node < 7.6 版本的 Koa 中使用 async 方法, 我們推薦使用 babel's require hook.
require('babel-register'); // 應(yīng)用的其余 require 需要被放到 hook 后面 const app = require('./app');
要解析和編譯 async 方法, 你至少應(yīng)該有 transform-async-to-generator 或 transform-async-to-module-method 插件.
例如, 在你的 .babelrc 文件中, 你應(yīng)該有:
{ "plugins": ["transform-async-to-generator"] }
你也可以用 env preset 的 target 參數(shù) "node": "current" 替代.
應(yīng)用程序
Koa 應(yīng)用程序是一個(gè)包含一組中間件函數(shù)的對(duì)象,它是按照類似堆棧的方式組織和執(zhí)行的。 Koa 類似于你可能遇到過(guò)的許多其他中間件系統(tǒng),例如 Ruby 的 Rack ,Connect 等,然而,一個(gè)關(guān)鍵的設(shè)計(jì)點(diǎn)是在其低級(jí)中間件層中提供高級(jí)“語(yǔ)法糖”。 這提高了互操作性,穩(wěn)健性,并使書寫中間件更加愉快。
這包括諸如內(nèi)容協(xié)商,緩存清理,代理支持和重定向等常見任務(wù)的方法。 盡管提供了相當(dāng)多的有用的方法 Koa 仍保持了一個(gè)很小的體積,因?yàn)闆]有捆綁中間件。
必修的 hello world 應(yīng)用:
const Koa = require('koa'); const app = new Koa(); app.use(async ctx => { ctx.body = 'Hello World'; }); app.listen(3000);
關(guān)于“koa和node有哪些關(guān)系”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。