詳解express + mock讓前后臺(tái)并行開(kāi)發(fā)
在我們平時(shí)項(xiàng)目剛啟動(dòng)時(shí),由于后臺(tái)也是剛開(kāi)始開(kāi)發(fā),我們前端往往在開(kāi)發(fā)過(guò)程中沒(méi)有數(shù)據(jù)和接口請(qǐng)求的,都要造一些假數(shù)據(jù)進(jìn)去或者使用mock造一些數(shù)據(jù)進(jìn)去,但是這樣的話往往會(huì)偶合一些沒(méi)用的代碼進(jìn)去。到時(shí)候還得刪除。
下面來(lái)介紹一種 express + mock 讓前后臺(tái)并行開(kāi)發(fā)。
前后需要先商量好數(shù)據(jù)格式,等等一系列細(xì)節(jié)問(wèn)題,先不多說(shuō)直接上代碼
app.js
'use strict';
const express = require('express');
const app = express();
// port
let NODE_PORT = process.env.PORT || 4000;
// 監(jiān)聽(tīng) /user
app.use('/user', function(req, res) {
// 讓接口 500-1000ms 返回 好讓頁(yè)面有個(gè)loading
setTimeout(() => {
res.json({
status: 1,
msg: '查詢成功',
data: {
name: '張三'
}
});
}, Math.random() * 500 + 500);
});
app.listen(NODE_PORT, function() {
console.log('mock服務(wù)在' + NODE_PORT + '端口上已啟用!');
});
接下來(lái)我們當(dāng)前文件打開(kāi)命令窗口運(yùn)行 node app.js
然后打開(kāi)瀏覽器 輸入 http://localhost:4000/user

就完成了一個(gè)簡(jiǎn)單的模擬數(shù)據(jù),接下來(lái)我們完善下需求
如果我們?cè)诒镜亻_(kāi)發(fā)中有時(shí)候 端口不同會(huì)報(bào)跨域問(wèn)題,所以我們需要在 app.js 添加一下代碼
const cors = require('cors');
app.use(cors({
origin: '*',
methods: ['GET', 'POST', 'PUT', 'DELETE'],
allowedHeaders: ['conten-Type', 'Authorization']
}));
這樣就可以在別的端口訪問(wèn)或者別的ip內(nèi)網(wǎng)(你同時(shí))訪問(wèn)了。
如果我們需要訪問(wèn)一些靜態(tài)文件的可以添加一下代碼
// './' 根據(jù)自己的需求自己配置 app.use(express.static(path.join(__dirname, './')));
// 配置nodeman熱更新
var nodemon = require('nodemon');
nodemon({
script: 'app.js',
ext: 'json js',
ignore: [
'.git',
'node_modules/**'
],
});
接下來(lái)繼續(xù)完善, 在開(kāi)發(fā)中我們不可能只有一個(gè)接口,所以我們?cè)趦?yōu)化下。
app.js
'use strict';
const express = require('express');
const cors = require('cors');
const path = require('path');
var nodemon = require('nodemon');
const userRoutes = require('./user');
const areaRoutes = require('./area');
const nameListRoutes = require('./name-list');
const app = express();
app.use(cors({
origin: '*',
methods: ['GET', 'POST', 'PUT', 'DELETE'],
allowedHeaders: ['conten-Type', 'Authorization']
}));
// port
let NODE_PORT = process.env.PORT || 4000;
app.use(express.static(path.join(__dirname, './')));
app.use('/user', userRoutes);
app.use('/area', areaRoutes);
app.use('/nameList', nameListRoutes);
nodemon({
script: 'app.js',
ext: 'json js',
ignore: [
'.git',
'node_modules/**'
],
});
app.listen(NODE_PORT, function() {
console.log('mock服務(wù)在' + NODE_PORT + '端口上已啟用!');
});
我們需要在同級(jí)目錄添加以下文件
./user/index.js , /user/area.js, /name-list/index.js

./user/index.js 中的內(nèi)容如下
'use strict';
const express = require('express');
const Mock = require('mockjs');
const apiRoutes = express.Router();
let random = Math.random() * 500 + 500;
// 訪問(wèn) /user/ 時(shí)
apiRoutes.get('/', function(req, res) {
setTimeout(() => {
res.json({
status: 1,
msg: '查詢成功',
data: {
name: '張三'
}
});
}, random);
});
// 訪問(wèn) /user/1111 時(shí)
apiRoutes.get('/idList', function(req, res) {
setTimeout(() => {
res.json({
status: 1,
msg: 'OK',
data: Mock.mock({
'list|1-10': [{
'id|+1': 1
}]
})
});
}, random);
});
module.exports = apiRoutes;
我們現(xiàn)在在瀏覽器中訪問(wèn)


我們初步模擬數(shù)據(jù)基本就完成了。
接下需要在項(xiàng)目中用了
先區(qū)分環(huán)境
// 判斷是否是本地開(kāi)發(fā)
const isDev = process.env.NODE_ENV ==='development';
// 設(shè)置 host 本地走mock 生產(chǎn)環(huán)境走相對(duì)路徑 /user/
const host = isDev ? 'http://localhost:4000' : ''
fetch(`${host}/user/`)
.then(response => {
return response.json();
})
.then(data => {
console.log(data );
});
假設(shè)我們?cè)诒镜卦L問(wèn)

數(shù)據(jù)都能拿到了, 在試一下 別的域名訪問(wèn)

跨域問(wèn)題也OK。
我們?cè)谠O(shè)置下 package.json 在你本地開(kāi)發(fā)的命令后臺(tái)添加 && node xx/aap.js 或者單獨(dú)一個(gè)命令窗口運(yùn)行
好了介紹到此。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
使用Node.js實(shí)現(xiàn)一個(gè)多人游戲服務(wù)器引擎
這篇文章主要給大家介紹了關(guān)于如何使用Node.js實(shí)現(xiàn)一個(gè)多人游戲服務(wù)器引擎的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用Node.js具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
Node使用koa2實(shí)現(xiàn)一個(gè)簡(jiǎn)單JWT鑒權(quán)的方法
這篇文章主要介紹了Node使用koa2實(shí)現(xiàn)一個(gè)簡(jiǎn)單JWT鑒權(quán)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
三分鐘教你用Node做一個(gè)微信哄女友神器(面向小白)
這篇文章主要介紹了三步教你用Node做一個(gè)微信哄女友神器(面向小白),用node和wechaty微信網(wǎng)頁(yè)接口開(kāi)發(fā)的一款小工具,可以定時(shí)給女朋友發(fā)每天的天氣情況,天氣提醒,每日一句,通過(guò)配置機(jī)器人api后還可以實(shí)現(xiàn)微信機(jī)器人自動(dòng)陪女朋友聊天,需要的朋友可以參考下2019-06-06
node實(shí)現(xiàn)將json轉(zhuǎn)為excel
平時(shí)我們寫(xiě)代碼處理的數(shù)據(jù)格式一般都是json格式的數(shù)據(jù),但有時(shí)候我們也需要將數(shù)據(jù)轉(zhuǎn)為excel格式進(jìn)行保存或分享,所以下面我們就來(lái)學(xué)習(xí)一下如何通過(guò)node實(shí)現(xiàn)json轉(zhuǎn)excel吧2024-11-11
node.js實(shí)現(xiàn)復(fù)制文本到剪切板的功能
這篇文章主要給大家介紹了node.js實(shí)現(xiàn)復(fù)制文本到剪切板的功能,文中介紹的非常詳細(xì),并給出示例代碼,相信對(duì)大家具有一定的參考借鑒價(jià)值,有需要的朋友們下面來(lái)一起看看吧。2017-01-01
nodejs實(shí)現(xiàn)黑名單中間件設(shè)計(jì)
最近寫(xiě)的項(xiàng)目中涉及到防止灌水的功能,于是設(shè)計(jì)了黑名單中間件,跟大家分享一下,同時(shí)也希望大家有好的建議能夠拍磚.2014-06-06
詳解使用Visual Studio Code對(duì)Node.js進(jìn)行斷點(diǎn)調(diào)試
這篇文章主要介紹了詳解使用Visual Studio Code對(duì)Node.js進(jìn)行斷點(diǎn)調(diào)試,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09

