koa:一個幾分鐘就能學(xué)會的web框架
時間:2023-07-24 12:30:01 | 來源:網(wǎng)站運營
時間:2023-07-24 12:30:01 來源:網(wǎng)站運營
koa:一個幾分鐘就能學(xué)會的web框架:更新說一下:
其實koa并不是那么容易能理解,但是其實也不難。我說「幾分鐘能學(xué)會的框架」實則是說,幾分鐘就能開發(fā)一個簡單的web app應(yīng)用,這沒錯。然后評論區(qū)就會有人跳出來說
- 「嗯,怎么可能幾分鐘學(xué)會」
- 「幾分鐘學(xué)會,會有價值?」
總之呢,就是出來唱個反調(diào)。你說吧,討論問題還是可以的,我歡迎。但是直接來一句讓人摸不著頭腦的話,實在是覺得蛋疼。難道要說成「koa一個超級難懂晦澀的框架?」這么說誰看誰學(xué)?還有一種不好的風(fēng)氣就是「強行噴別人的框架」,最近大漠和evan吵得那么厲害也就是因為這個原因。但是作為新人小白懂什么呢?上來就說:python垃圾語言,js弱類型大項目不好做,我靠?
這是我第一次說,也是我最后一次說這些廢話,評論區(qū)是我的,理性回答,不然直接變成尸體。
----------------------------------------
剛剛開始學(xué)剛剛開始學(xué)編程的時候,我竟然使用了c++去進行web開發(fā)?,F(xiàn)在回想起來,都有點可怕!從頭到尾呢,都得自己封裝,從處理http協(xié)議開始,然后到后來的模版渲染,亂七八糟的,搞出個非常垃圾的框架,性能不怎樣,還難用。
一個偶然的機會,接觸了nodejs,其方便快捷的開發(fā),以及其渾然天成的異步io能力,讓我著實著迷不已。得益于之前用c++寫過一個簡陋的web框架,學(xué)習(xí)nodejs的速度也是極為迅速,今天我們就來看一看,一個現(xiàn)有的,輕量級的nodejs框架:koa。
先騎單車
先騎單車的意思就是我們先會用,然后在用的過程中學(xué)習(xí)一個框架,一個系統(tǒng)。對于大部分不是抖m/s的我們來說,折騰幾天都沒搞出一個東西來,著實打擊我們的學(xué)習(xí)自信,所以,我們先從最簡單的入手,一步步的往下走。
準(zhǔn)備
無論是什么系統(tǒng),先去nodejs官網(wǎng)下載一個nodejs安裝包:Node.js
安裝完成后(或者早就安裝的人)直接命令行,打
$npm -v5.3.0
那就證明你安裝nodejs和npm成功了。
任意地方創(chuàng)建一個文件夾叫做:learnKoa,打開終端,打入以下命令
cd learnKoanpm init
然后一直敲回車,敲完回車以后,你的目錄會變成這樣:
.learnKoa└── package.json
多出一個package.json,先不用管他那么多,繼續(xù)輸入命令:
$ npm install --save koa
安裝完成后,我們就可以正式進入Koa之旅了!
幾行代碼的開始
在我們剛剛的learnKoa文件夾下面創(chuàng)建一個index.js,抄襲以下內(nèi)容
const Koa = require('koa')//引入koaconst App = new Koa()//創(chuàng)建koa實例//構(gòu)造第一個「函數(shù)」const first = (Context) => { Context.response.body = '<h1>我很牛逼!肌肉很大</h1>'//相應(yīng)內(nèi)容};App.use(first)//應(yīng)用第一個函數(shù)App.listen(8080)//監(jiān)聽本機8080端口
- Context:由App.use傳遞進來的一個對象,這個對象中包含著response和request兩個對象。這兩個對象分別表示用戶瀏覽器發(fā)過來的請求內(nèi)容(request),以及服務(wù)器需要回復(fù)的內(nèi)容(response)。當(dāng)first(Context)執(zhí)行完畢以后,Koa就會將我們剛剛在first函數(shù)中操作的response返回給用戶。這個玩意也叫做對話上下文,上文表示用戶送來的東西,下文表示要返回給用戶的東西。
- Context.response.body:只要給Context.response.body賦值,我們就能返回任何東西給用戶!如果你想,你可以返回「種子番號之類的...」
(本站這個代碼真是花哨,不過好評)保存退出后,運行命令:
node ./index.js
打開瀏覽器地址 http://127.0.0.1:8080
你就可以看到
我們的第一個web程序誕生了!
頁面路由
頁面路由其實說的并
不是路由器的路由,而是說的是「不同網(wǎng)址,返回不同的東西」的意思。
http://127.0.0.1:8080 <----首頁http://127.0.0.1:8080/maopian <-----放的是老師們的教科書http://127.0.0.1:8080/maopian/songdaofeng <-----具體哪個老師的教科書
要實現(xiàn)這樣的功能,我們就需要對剛剛的index.js進行改造,使得我們的web程序擁有處理這幾個不同網(wǎng)址(url)的能力。
我們說過,我們想要知道用戶給我們發(fā)來什么消息,我們?nèi)フ褻ontext.
request。我們想要發(fā)給用戶什么消息,我們就去找
Context.response。接下來我們實戰(zhàn)一發(fā):
const first = (Context) => { if (Context.request.path === '/'){ Context.response.body = '<h1>我很牛逼!肌肉很大</h1>' } if (Context.request.path === '/maopian'){ Context.response.body = '<p>小澤老師</p><p>松島f老師</p><p>zxc老師</p>' }};
- Context.request.path:這里代表的是用戶訪問的地址/代表http://127.0.0.1:8080,/maopian 代表 http://127.0.0.1:8080/maopian 很好理解。
node ./index.js
分別訪問
http://127.0.0.1:8080和
http://127.0.0.1:8080/maopian總結(jié)一下
安裝好nodejs以后,通過幾行命令,幾行代碼,我們就能夠?qū)懗鲆粋€簡單的web應(yīng)用了。
我的公眾號后臺就是用的koa作為框架,寫的一個有趣的小功能。之后我們會無限對其進行拓展,以至于讓他能夠成為極其牛逼的應(yīng)用。