實戰(zhàn)目的
- 使用 Koa2 實現(xiàn)一個博客系統(tǒng),支持內(nèi)容發(fā)布唤蔗、圖片上傳餐弱、文件導出/下載等,最終發(fā)布唠帝。
- 對以往做的實戰(zhàn)內(nèi)容進行查漏補缺,溫故知新玄柏。
- 如果時間允許襟衰,會使用 Egg 進行重構(gòu)。
技術(shù)和要點
- 后端使用 Koa2 及其中間件粪摘、數(shù)據(jù)庫使用 MongoDB瀑晒、 前端使用 React+Redux (具體待定)。
- 要點:RESTful API徘意、 JWT苔悦、 自動生成API文檔、混合加密傳輸椎咧、訪問權(quán)限控制玖详、PM2等。
前期準備
為了更好的使用 async/await
邑退,我們選擇 7.6.0 以上的 node.js 環(huán)境竹宋,也可以使用 nvm 來管理多版本node.js(這里不作介紹)。安裝好 node.js 地技,檢查版本:
$ node -v
v8.9.1
初始化項目
新建一個文件夾 koa-blog
蜈七,先來初始化目錄結(jié)構(gòu):
$ mkdir koa-blog
$ cd koa-blog
$ npm init -y
當然,我們還得安裝 Koa:
$ npm install koa --save
執(zhí)行完上面的命令之后莫矗,得到了下面的目錄結(jié)構(gòu):
koa-blog
└──package.json
項目入口
我們來創(chuàng)建一個HTTP服務飒硅,實現(xiàn) “Hello World”:
// app.js
const Koa = require('koa');
const app = new Koa();
// 響應
app.use(ctx => {
ctx.response.body = 'Hello World';
});
app.listen(3000, () => {
console.log('App started on http://localhost:3000')
});
在上面的代碼中,app.use()
指定了一個中間件方法作谚,這個中間件接收 Koa 創(chuàng)建的上下文(context)三娩,并且修改了 response.body
發(fā)送給客戶端。
Koa 上下文將 request
和 response
對象封裝到單個對象中妹懒,為編寫 web 應用程序和 API 提供了許多有用的方法雀监。
接下來就是啟動服務,執(zhí)行:
$ node app.js
App started on http://localhost:3000
瀏覽器訪問 http://localhost:3000/ , 可以看到顯示 “Hello World” 字樣,證明我們服務已經(jīng)搭建好会前。
為了方便好乐,我們將這個命令配置在 package.json
的 script
中:
// package.json
{
// ...
"main": "app.js",
"scripts": {
"start": "node app.js"
},
// ...
}
以后只要在命令行執(zhí)行 npm start
即可啟動服務。
下一步瓦宜,我們來實現(xiàn)路由…
本實戰(zhàn)代碼已經(jīng)創(chuàng)建了GitHub倉庫:https://github.com/YuQian2015/koa-blog 蔚万,歡迎關(guān)注。