完整項目地址: https://github.com/pangyongsheng/node-koa-REST-API css
下載: git clone https://github.com/pangyongsheng/node-koa-REST-API.githtml
切換到目錄 : cd koa前端
安裝依賴包: npm installvue
啓動項目: npm run start node
訪問: http://127.0.0.1:3000/ mysql
界面以下:git
koa
├── app.js 服務啓動文件
├── controller.js 遍歷controllers文件夾下所有接口文件添加到路由中
├── rest.js 封裝restAPI返回數據處理,簡化api寫法--rest方法
├── templating.js 封裝模板引擎載入view下模板文件,--render方法
├── static-file.js 封裝靜態文件加載方法
│
├── controllers 該目錄下放置全部接口文件,如:
├── api.js restAPI接口
├── index.js 首頁接口
├── ...
├── view 該目錄下放置視圖模板文件,可以使用nunjucks模板語法:如
├── base.html 基礎模板-header及footer
├── index.html 首頁
├── ...
├──server 該目錄下放置數據處理類js文件:如抽取同類業務數據處理方法
├──server.js
├── ...
├──data 該目錄下放置數據庫處理文件
├──config.js 數據庫配置文件
├── ...
├──static 改目錄下放置前端靜態文件,如一些前端類庫、ui、及圖片等
├──css
├──js
├──...
├── package.jsongithub
頁面代碼如上圖,這裏面把文檔申明及<head>內的代碼、<header>和<footer>三部分代碼做爲公共部分sql
其餘頁面能夠直接調用base.html而後編寫中間的內容(即{% block main%}到{% endblock}中間)便可;數據庫
這裏注意 <title>標籤內爲{{title}},這裏須要咱們在調用頁面時直接傳入標題名稱字段;
這裏咱們首先經過{{% extends "base.html" %}}引入公共視圖部分,而後在{{%block mian%}}和{{%block end%}}編寫登陸表單;
這裏,'GET /'表示請求方式爲 get 請求url爲/ 即默認路徑
ctx.render是已經封好的方法,傳入要返回的頁面文件便可,這裏咱們返回登陸頁,及index.html頁
傳參{title:'KOA'}是咱們給頁面模板傳的參數,及在前面模板中<title>預留的值,
上一步總完成登陸頁的功能,在登陸點擊提交時,會將post請求提交到/signin,
首先咱們按以上的方式在view目錄下編寫頁面登陸成功signin-ok.html和失敗sigin-fialed.html;(詳細代碼見項目)
在controller目錄下編寫signin.js處理登陸提交到post /signin的信息;
'POST /signin' 表示請求方式和請求url爲/signin
經過ctx.request.body獲取請求參數判斷數據是否正確,並返回對應的頁面
爲了簡化代碼這裏使用vue雙向綁定實現,注意:vue中模板編譯和nunjucks編譯{{}}符號會衝突 ,需修改vue的編譯格式,在vue中配置delimiters:['${', '}']
頁面中使用v-for循環顯示錶格,在js中添加方法getlist經過接口api/userlist獲取所有數據,並在vue生命週期created中調用改方法。(詳細代碼見項目中view/userList.html)
get/api/userlist接口在下一節介紹
與前面登陸方法相似,訪問接口爲 get /user
頁面完成後咱們將經過restAPI接口實現頁面所示按鈕的增刪查改各項功能
這裏建立getAllUser方法直接返回data-userlist中的所有數據
ctx.rest方法中封裝了返回數據及錯誤處理等功能,這裏直接傳入返回的數據對象便可實現restAPI接口功能
在上一部中咱們調用了該接口,返回人員列表數據,並經過列表渲染將數據展現到視圖。
點擊保存後put方式像接口api/adduser傳參新增用戶信息,在成功回調中調用getlist方法,獲取最新用戶信息;
用戶姓名,性別,年齡有前端傳值,id由後臺根據序號排列,而後存入數組
在表格中咱們已經添加了刪除按鈕並綁定了del方法,並傳參id,下面直接看del方法
在del方法中調用了$tttp.delete方法向 api/userlist發送delete請求並 傳入參數 id (代碼中'+x'),而後在成功回調中刪除掉視圖中的數據(這裏也能夠直接調用getuser方法)
這裏咱們經過ctx.parames.id獲取上一步中的傳參id,這裏咱們把參數在傳遞個server中的方法
接着編寫sev方法,經過js操做dom的方法獲取表格中的屬性值,做爲修改後的參數調用發送post請求到後臺修改信息,在成功回調中調用getlist方法查詢最新數據顯示到頁面,提高保存成功
(1)添加數據庫配置文件,建立連接
(2)封裝數據庫查詢方法
(3)在api中調用
至此mvc及restAPI實現增刪查改功能均已添加,項目中還有搜索的功能與其餘篩選方法相似,不作說明;
dome中用到了前端部分使用了vue.js、bootstrap、node模塊中用了koa-router、koa-cors等模塊詳情見 package.json;
測試模塊可數據庫這裏不作說明,但在項目中已添加,可以使用;
各個模塊功能也說明完畢,實現方法可直接看代碼,有較清晰註釋;