最近使用egg.js寫了一個小項目練手,主要用來封裝接口以及代理接口。進入正題:
egg搭建以及各項配置 可以詳見官方文檔:https://eggjs.org,這里簡單描述一下:
1.直接使用腳手架快速搭建項目,命令如下:
(1)npm i egg-init -g;
(2)新建egg-demo文件夾,執行命令:egg-init egg-demo --type=simple;
(3)進入當前文件夾下,執行命令:npm i;
(4)啟動項目:npm run dev;
在瀏覽器中打開:localhost:7001
注意:這里默認地址是7001,如果修改,可以在package.json里面配置:egg-scripts start --port=要修改的端口號 --daemon --title=egg-server-egg-demo.
2.實現接口:
(1)在controller文件夾下,新建自己的文件,開始業務書寫,這里個人建議可以新建service文件夾,在里面書寫自己的復雜業務邏輯,而controller用來接收返回給頁面展示;
(2)plugin.js用來定義插件;config.default.js用做基本配置,同時自己也可以新建文件來區分開發環境、測試環境以及線上環境;
(3)代理接口,可以參考 https://blog.csdn.net/baidu_33438652/article/details/81736832;
這里簡單說一下get、post兩種常用的請求方法。
get:
const result = await this.ctx.curl(代理的接口地址,{dataType: 'json'});
post:
const result = await this.ctx.curl(代理的接口地址,{
// 必須指定 method,默認為get
method:'POST',
// 通過 contentType 告訴 HttpClient 以 JSON 格式發送
contentType: 'json',
data: 請求參數,
// 明確告訴 HttpClient 以 JSON 格式處理返回的響應 body
dataType: 'json'
});
3.mysql數據庫使用:
(1)mysql安裝:npm i egg-mysql --save,然后在plugin.js里面配置如下:
exports.mysql = {
enable: true,
package: 'egg-mysql',
};
config.default.js配置如下:
config.mysql = {
client: {
// host
host: '',
// 端口號
port: '',
// 用戶名
user: '',
// 密碼
password: '',
// 數據庫名
database: ''
},
// 是否加載到 app 上,默認開啟
app: true,
// 是否加載到 agent 上,默認關閉
agent: false,
};
這里建議本機安裝mysql數據庫(https://dev.mysql.com/downloads/file/?id=481160),以及navicat界面管理工具,這樣就可以驗證自己有沒有操作數據庫。
(2)數據庫的增刪改查語法,官網都有實例,可以參考,這里對更新數據庫簡單說一下:
let row = {
password(修改的字段): newPassword(要修改的值)
},
options = {
where: {
username(查詢的條件):username(查詢的值),
}
};
await this.app.mysql.update('數據庫名', row, options);
注意:mysql服務器沒有開啟,或者配置有誤,都會造成項目運行時報錯,對應修改就可以了~~~
3.redis使用:
寫接口時,一定會遇到數據存儲的問題,這個時候我們通常采用redis存儲數據,而非cookie或者storage(一般用於客戶端存儲)。
(1)redis安裝:npm i egg-redis --save,然后在plugin.js里面配置如下:
exports.redis= {
enable: true,
package: 'egg-redis',
};
config.default.js配置如下:
config.redis = {
client: {
port:, // Redis port
host: '', // Redis host
password: '',//密碼
db: 1//存儲區
}
};
注意:redis本身不需要密碼的(可以設置),但是在redis配置時,password為必須的,否則會報錯,大家可以自行驗證。
(2)redis用法(可以下載RedisDesktopManager界面管理工具查看存儲情況。):
a.正常存儲用法:await app.redis.set('key值', 存儲值);
b.一般我們也會遇到對例如token這樣存儲值時效的設置,代碼如下:await app.redis.set('key值', 存儲值,'EX',seconds);
c.也可以通過命令行設置:
命令啟動方法:
通過cmd命令到redis msi(個人安裝包存放位置)目錄下,執行命令,如:f:\software\redis msi>redis-server.exe redis.windows.conf;
新開窗口執行 F:\software\redis msi>redis-cli.exe -h 127.0.0.1 -p 6379。
然后輸入命令:expire key seconds。
4.項目部署與應用:
(1)在該文件下打包,生成tgz文件:tar -zcvf ../FileName.tgz .
(2)環境部署(建議下載Xshell客戶端,當然別的工具都可以,根據個人喜好~~~):
a.進入要部署的服務器對應文件夾下,cd 等等;
b.//創建文件 mkdir 文件名稱;
c.打開壓縮包: rz -be;
d.解包:tar zxvf FileName.tar;
e.移除壓縮包: rm -rf FileName.tar
然后就可以啟動啦:npm start即可。
注意:要根據自己的項目環境運行npm start,默認運行npm start為線上環境 prod,建議大家在不同環境下區分運行:
開發環境:egg_server_env=local npm start
線上環境:egg_server_env=prod npm start
測試環境:egg_server_env=unittest npm start
至此,講解完了,對於有異議或者有更好處理方法的地方上,歡迎交流與評論~~~