3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
這幾年 JavaScript 已經不只可以寫前端,也可以寫後端程式。如果說要用 JS 來寫後端程式,第一個我會推薦 Koa.js。 雖然後端早期大家可能會選用 Express.js,但我覺得 Koa.js 更好用。Express 內建許多功能,而 Koa 則完全精簡到只剩基本功能,需要的時候仍然可以再找到(甚至自己寫)適合的 Middleware 來搭配。我不覺得 Koa 可以完勝 Express,就像 Python 的 Django 和 Flask 各有人擁護,然而 Koa 在設計的時候就已經考量到 async/await 的優點,相信效率和未來發展會更高。 這篇文章會帶你看一次 Koa 的基本用法,介紹幾個我常用的 Koa Middleware。 安裝 Koa.js 如果你還沒安裝 Node.js,可以透過 nvm 來安裝。 首先當然要先新增一個資料夾,然後初始化 Node 專案: mkdir koa-example-project cd koa-example-project npm init -y 接著安裝 Koa: npm install --save koa 讓我們建立一個 server.js,並在裡面撰寫一個 Hello world 程式(取自官方範例): const Koa = require('koa'); const app = new Koa(); // response app.use(ctx => { ctx.body = 'Hello Koa'; }); app.listen(3000); 接著可以打開瀏覽器,瀏覽 http://localhost:3000 ,應該可以看到白底黑字寫「Hello Koa」。 剛剛這段程式碼是一開始引入 Koa 套件,並建立一個新的 Koa 實體叫 app。而 app.use 則是代表 Web 請求會經過這個 function,例如我們把 ctx.body 設為 'Hello Koa',HTTP Response 就會回傳這段文字,瀏覽器就會看到這段文字。最後我們讓這個伺服器設在 3000 這個 port,因此我們打開 http://localhost:3000。 加入路由設定 通常我們會透過 koa-router 這個 Middleware 去做路由設定。首先安裝 koa-router: npm install --save koa-router 接著在 server.js 裡引用 koa-router: const router = require('koa-router'); 假設我們要在 GET / 和 GET /about 顯示不同內容,我們可以這樣寫: const Koa = require('koa'); const Router = require('koa-router'); const app = new Koa(); const router = new Router(); router .get('/', ctx => { ctx.body = '首頁'; }) .get('/about', ctx => { ctx.body = '關於頁面'; }); app.use(router.routes()); app.listen(3000); 當然你也可以設定 GET 以外的方法,像是 router.post、router.delete 等等。 記錄存取 Log 另外,如果前面沒有搭配做別的 reverse proxy 的話(後面的文章會介紹這是什麼),我也會搭配 koa-morgan 來記錄 Log。 npm install --save koa-morgan 然後可以這樣使用: const accessLogStream = fs.createWriteStream(__dirname + '/access.log',{ flags: 'a' }); app.use(morgan('combined', { stream: accessLogStream })); 把紀錄寫在 access.log 檔案裡面。 morgan 原本是設計給 Express.js 使用的,而 koa-morgan 讓它變成 Koa 的 Middleware。詳細配置 morgan 的話可以參考 官方文件。 結語 基本上 Koa 還可以搭配不同東西做很多事情,未來會再講到怎麼拿 Koa 來寫一個 RESTful API 的後端程式。不過到目前為止應該已經可以寫一些東西了,如果你想丟到線上測試,也可以試試看 Now 這個服務。 本篇文章同步發表在 iT邦幫忙。 延伸閱讀 Pistache:用 C++ 寫 RESTful API Server Now:在雲端部屬你的網站、後端功能 API 實作(二):以 Koa 實作 RESTful API

本文由noobtw提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦