用vue-cli搭建一個前端開發環境確實是極其方便,在寫前端代碼確定也是少不了須要調用後臺提供的業務接口進行先後端交互,特別在敏捷開發中,先後端都要提早肯定業務接口並進行打樁,在開發過程當中基本是沒有現成的後臺能夠調用,基本上都是本身寫mock進行模擬。前端
在vue-cli搭建的項目中,框架上用的是express的web框架,要作一個mock是很方便的。vue
假設前端頁面上須要獲取全部的新聞列表,那麼就須要mock一個可以返回全部新聞列表數據的接口。webpack
接下來就在項目中實現mock功能。git
腳手架生成項目github
執行命令用webpack模板生成一個名爲vuestrap的項目(名字任意)web
vue init webpack vue-mock-demo
在出現的各提示選項中,沒什麼要求,爲了方便,把不用的ESLint,unit tests,e2e都關掉(這些選項都隨意)。vue-router
? Project name vuestrap ? Project description A Vue.js project ? Author 省略 ? Vue build standalone ? Install vue-router? Yes ? Use ESLint to lint your code? No ? Setup unit tests with Karma + Mocha? No ? Setup e2e tests with Nightwatch? No
選項選完,項目也就生成了。vue-cli
執行命令,安裝腳手架建立的組件express
npm install
建立mocknpm
和build、config等文件夾同級建立一個mock文件夾。
爲了要mock一個獲取新聞列表的數據接口,咱們在mock文件夾下建立一個名爲「router-news.js」的文件。
其中的內容爲:
var express = require('express'); var router = express.Router(); //對全部新聞的get進行mock router.get('/all', function(req, res, next) { //響應mock數據 res.json([{ title: 'news-title-1' , content: 'news-content-1' }, { title: 'news-title-2' , content: 'news-content-2' }]); }); module.exports = router;
這裏的完整url應該是「/mock/news/all」,在這裏只寫了「/all」子路徑。
在build/dev-server.js文件的頭部require區域,require上面寫的router。
var mockRouterNews = require('../mock/router-news')
最後,調用app.use將講url和router關聯。
app.use('/mock/news', mockRouterNews)
在這裏,經過將url的拆分,能夠明確的把url進行處理的模塊化,一種業務能夠交給對應的router進行響應處理,在使用app.use關聯全部的router的地方也能看得很清楚。
注意:
使用app.use關聯url和router的代碼必定要放在對「connect-history-api-fallback」組件的app.use前,不然關聯的url會被攔截掉,不會被mock的router正確響應。
執行
在命令行中執行命令運行項目。
npm run dev
運行後,在瀏覽器的地址欄中補上mock的url並訪問,就能看到mock的數據了,很方便。
End