前言
??? 近段時(shí)間在學(xué)習(xí)react,想做個(gè)小項(xiàng)目,奈何沒(méi)有后端,故自己上網(wǎng)查找一些資料,并通過(guò)自己的理解搭建后端服務(wù)器。在此特別感謝 http://www.imooc.com/article/80671 給我的支持。下面是個(gè)人一些見(jiàn)解:
一? 安裝環(huán)境要求
??? node版本需求:必須在 7.6.0 以上,版本低的請(qǐng)到 node官網(wǎng) 下載最新版本。
二? 創(chuàng)建項(xiàng)目
??? 1、使用 koa-generator 搭建項(xiàng)目:? 通過(guò)win+R進(jìn)入管理窗口,輸入 npm install koa-generator -g 進(jìn)行全局安裝koa-generator
???? 注意: 由于npm太慢,建議使用淘寶npm鏡像:
永久使用: npm config set registry https://registry.npm.taobao.org
?? 2、 進(jìn)入相應(yīng)的目錄下,使用 koa-generator 生成koa2項(xiàng)目 命令: koa2 “項(xiàng)目名稱”
?? 3、 進(jìn)行項(xiàng)目,然后通過(guò) npm install 安裝依賴
?? 4、輸入 npm start 啟動(dòng)服務(wù)。
打開(kāi)瀏覽器,在地址框輸入 http://localhost:3000/,看到“Hello Koa 2!” 說(shuō)明啟動(dòng)成功了。
注意:由于react腳手架搭建出來(lái)的端口也是3000,可能會(huì)造成端口被占用情況??梢栽?bin/www下修改端口。修改完之后重啟項(xiàng)目。
三? 安裝mysql數(shù)據(jù)庫(kù)
?? 到官網(wǎng) https://www.mysql.com/downloads 下載對(duì)應(yīng)版本,并安裝數(shù)據(jù)庫(kù)。安裝教程可參考:https://blog.csdn.net/qq_37350706/article/details/81707862
四? 安裝Sequelize
??? Sequelize類是引用sequlize模塊后獲取一個(gè)頂級(jí)對(duì)象,我們通過(guò)它來(lái)創(chuàng)建sequlize實(shí)例,也可以通過(guò)該對(duì)象來(lái)獲取模內(nèi)其它對(duì)象的引用,如:Utils工具類、Transaction事務(wù)類等。創(chuàng)建實(shí)例后,可以通過(guò)實(shí)例來(lái)創(chuàng)建或定義Model(模型)、執(zhí)行查詢、同步數(shù)據(jù)庫(kù)結(jié)構(gòu)等操作。
安裝sequelize
??? npm install sequelize --save
安裝 mysql , mysql2模塊
?? npm install mysql mysql2 --save
五 使用 Sequelize 初始化連接池
?? 在根目錄創(chuàng)建 config/db.js 文件:(注意: 所連接的數(shù)據(jù)庫(kù)必須存在,若不存在先創(chuàng)建數(shù)據(jù)庫(kù),創(chuàng)建數(shù)據(jù)庫(kù)命令: CREATE DATABASE blogs DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;)

六? 梳理項(xiàng)目結(jié)構(gòu)

七? 創(chuàng)建數(shù)據(jù)表模型
??? 新建 schema 文件夾,該文件夾用來(lái)創(chuàng)建數(shù)據(jù)庫(kù)的模型。舉個(gè)例子: 創(chuàng)建一個(gè)文章的數(shù)據(jù)模型。在schema文件夾下創(chuàng)建一個(gè)article.js文件:

八? 應(yīng)用數(shù)據(jù)表模型
??? 創(chuàng)建modules/article.js 用于schema文件夾內(nèi)的模型使用。主要代碼為:
???? const db = require('../config/db')???????? // 引入配置文件
???? const Sequelize = db.sequelize;
???? const Article = Sequelize.import("../schema/article");???? // 引入文章數(shù)據(jù)表模型文件
???? Article.sync({ force: false });??? // 自動(dòng)創(chuàng)建表 (加force:true, 會(huì)先刪掉表后再建表)
源代碼如下:

九? 數(shù)據(jù)表控制器
??? 主要負(fù)責(zé)功能處理部分: 收集前端所傳過(guò)來(lái)的數(shù)據(jù),將數(shù)據(jù)保存到數(shù)據(jù)庫(kù),將結(jié)果返回給前端。

十? 路由
??? 在根目錄下創(chuàng)建router/index.js 這文件可以理解為向外暴露API接口,實(shí)際上就是路由的訪問(wèn),然后通過(guò)控制器=>模型處理=>返回?cái)?shù)據(jù)

十一? 配置跨域
??? 引入 koa-cors ,安裝依賴后,在app.js中加入下面代碼:
const cors = require('koa-cors')
app.use(cors())
十二? 服務(wù)啟動(dòng)
在cmd窗口下輸入 npm start 啟動(dòng)項(xiàng)目,當(dāng)看到 SHOW INDEX FROM 'article' 表示數(shù)據(jù)庫(kù)創(chuàng)建且連接成功。

十三? 接口測(cè)試
使用 postman 在地址欄輸入url地址,并輸入相關(guān)參數(shù)即可完成測(cè)試。