寫在前面
本人自身就是一個乒乓球愛好者,但是由於工作之後,小夥伴都比較忙,沒有一定的時間相約打球,於是最近準備寫一個約乒乓球的小程式,然後寫後端的介面程式碼,資料庫的搭建,並專案部署到伺服器中去。
小程式碼
小程式的技術選型
- 在小程式這一塊,也出現了好幾種方案,有微信官方到寫法,有參考vue寫法的wepy架子,也有美團出品,把vue編譯成小程式的mpvue,嘗試過wepy的寫法後,我最後還是使用了官方的寫法,然後加入了promise, async/await的寫法。
return new Promise((resolve, reject) => {
obj.success = function (res) {
resolve(res)
}
obj.fail = function (res) {
reject(res)
}
})
async onLoad (options) {
const { data } = await GetActiveList()
this.setData({
activeList: data
})
}
複製程式碼
Node 框架選型
- 參考的方案有Hapi、Egg、Express、Koa, 目前採取的是阿里“企業級的開發方案”Egg作為後端的技術方案
資料庫
- myqsl/moogdb
伺服器
- 目前部署在阿里雲上
1. 安裝開發環境
基於node 8.9.4
$ npm install express-generator -g
$ express myapp
複製程式碼
2. 路由
var http = require('http');
var express = require('express');
const querystring = require('querystring');
var router = express.Router();
var request = require('../utils/request');
/**
* 獲取活動列表
* @param {} '/api/getActiveList'
* @param {} function(req
* @param {} res
* @param {} next
*/
router.post('/api/getActiveList', function(req, res, next) {
const postData = querystring.stringify(req.body);
request.post(req, res, postData, '/app/mock/3317/getActiveList')
});
複製程式碼
3. 封裝請求
var http = require('http');
exports.post = function(req, res, data, path){
const options = {
hostname: 'rap2api.taobao.org',
port: 80,
path: path,
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': Buffer.byteLength(data)
}
};
const proxyHttp = http.request(options, (response) => {
console.log(`狀態碼: ${response.statusCode}`);
console.log(`響應頭: ${JSON.stringify(response.headers)}`);
response.setEncoding('utf8');
response.on('data', (chunk) => {
console.log(`響應主體: ${chunk}`);
});
response.pipe(res)
response.on('end', () => {
console.log('響應中已無資料。');
});
});
proxyHttp.on('error', (e) => {
console.error(`請求遇到問題: ${e.message}`);
});
// 寫入資料到請求主體
proxyHttp.write(data);
proxyHttp.end();
}
複製程式碼
守護者 PM2
1. 安裝pm2
$ npm install pm2 -g
複製程式碼
2. 啟動專案
$ pm2 start /bin/www
Start an app using all CPUs available + set a name :
$ pm2 start app.js -i 0 --name "api"
複製程式碼
3. 更多pm2 命令
$ pm2 -h
複製程式碼
目前專案進度
- 後端的資料支撐來自阿里rap模擬資料,本人因為只是一個小前端,對資料庫的知識還需要補充,後續會把真實的資料接入到專案中。