GitHub項目地址:git@github.com:zhangying2345/simuLocDataVue.githtml
路由是指如何定義應用的端點(URIs)以及如何響應客戶端的請求。node
// 匹配根路徑的請求 app.get('/', function (req, res) { res.send('root'); }); // 匹配 /about 路徑的請求 app.get('/about', function (req, res) { res.send('about'); }); // 匹配 /random.text 路徑的請求 app.get('/random.text', function (req, res) { res.send('random.text'); });
從本質上來講,一個 Express 應用就是在調用各類中間件。
中間件(Middleware) 是一個函數,它能夠訪問請求對象(request object (req)), 響應對象(response object (res)), 和 web 應用中處於請求-響應循環流程中的中間件,通常被命名爲 next 的變量。webpack
var app = express(); // 沒有掛載路徑的中間件,應用的每一個請求都會執行該中間件 app.use(function (req, res, next) { console.log('Time:', Date.now()); next(); }); // 掛載至 /user/:id 的中間件,任何指向 /user/:id 的請求都會執行它 app.use('/user/:id', function (req, res, next) { console.log('Request Type:', req.method); next(); }); // 路由和句柄函數(中間件系統),處理指向 /user/:id 的 GET 請求 app.get('/user/:id', function (req, res, next) { res.send('USER'); });
可以使用 express.Router 類建立模塊化、可掛載的路由句柄。Router 實例是一個完整的中間件和路由系統,所以常稱其爲一個 「mini-app」。git
下面的實例程序建立了一個路由模塊,並加載了一箇中間件,定義了一些路由,而且將它們掛載至應用的路徑上。github
var express = require('express'); var router = express.Router(); // 該路由使用的中間件 router.use(function timeLog(req, res, next) { console.log('Time: ', Date.now()); next(); }); // 定義網站主頁的路由 router.get('/', function(req, res) { res.send('Birds home page'); }); // 定義 about 頁面的路由 router.get('/about', function(req, res) { res.send('About birds'); }); module.exports = router;
而後在應用中加載路由模塊:web
var birds = require('./birds'); ... app.use('/birds', birds);
應用便可處理髮自 /birds 和 /birds/about 的請求,而且調用爲該路由指定的 timeLog 中間件。express
webpack-dev-server 爲你提供了一個簡單的 web 服務器,而且可以實時從新加載(live reloading)。json
const path = require('path'); const HtmlWebpackPlugin = require('html-webpack-plugin'); const CleanWebpackPlugin = require('clean-webpack-plugin'); module.exports = { entry: { app: './src/index.js', print: './src/print.js' }, devtool: 'inline-source-map', + devServer: { + contentBase: './dist' + }, plugins: [ new CleanWebpackPlugin(['dist']), new HtmlWebpackPlugin({ title: 'Development' }) ], output: { filename: '[name].bundle.js', path: path.resolve(__dirname, 'dist') } };
以上配置告知 webpack-dev-server,在 localhost:8080 下創建服務,將 dist 目錄下的文件,做爲可訪問文件。相似於經過 Express 內置的 express.static 託管靜態文件,例如圖片、CSS、JavaScript 文件等,經過文件路徑就能夠訪問文件了。api
提供在服務器內部的全部其餘中間件以前執行定製中間件的功能。 這能夠用來定義自定義處理程序,例如:服務器
app.get('/some/path', function(req, res) { res.json({ custom: 'response' }); }); }
webpack-dev-middleware 是一個容器(wrapper),它能夠把 webpack 處理後的文件傳遞給一個服務器(server)。 webpack-dev-server 在內部使用了它。
var glob = require('glob'); const express = require('express') const app = express() var apiRoutes = express.Router() var appData = require('../data/config') var getApi= appData['get'];//全部的get請求 console.log('-----',getApi); var postApi= appData['post'];//全部的post請求 //查找全部的json文件 var entryJS = {}; /*https://www.mgenware.com/blog/?p=2716---使用特殊的**來遞歸返回全部子目錄內的文件,由於默認node-glob只會返回一級子目錄下得內容。*/ let jsonFilesList = glob.sync('./data/**/*.json'); console.log('jsonFilesList-----',jsonFilesList); /*獲取全部json文件的相對路徑(相對於本文件)))*/ entryJS = jsonFilesList.reduce(function (prev, curr) { console.log('curr------',curr); console.log('curr.slice(7)------',curr.slice(7)); console.log('prev[curr.slice(7)---------',prev[curr.slice(7)]); prev[curr.slice(7)] = '.'+curr; console.log('prev---',prev); return prev; }, {}); //合併全部的json文件到一個json中 let jsonData={}; for (var i in entryJS){ console.log('entryJS-----',entryJS); let data = require(entryJS[i]); jsonData = Object.assign(jsonData, data); console.log('jsonData----->',jsonData); } console.log('jsonData--All--->',jsonData); app.use('/', apiRoutes)
而後在devServer中添加
before (app) { //get// for(var i = 0;i < getApi.length; i++){ console.log('getApi------->',getApi); var getData = jsonData[getApi[i].key]; console.log('getData----->',getData); app.get(getApi[i].url, function (req, res) { res.json(getData); }); } //post /*for(var i = 0;i < postApi.length; i++){ var postData = jsonData[postApi[i].key]; app.post(postApi[i].url,function (req, res) { res.json(postData); }); }*/ } ////////////////////////////
config.js中
let data={ "get":[ { 'url':'/api/goods', 'key':'goods' }, { 'url':'/api/sells', 'key':'sells' } ], "post":[{ 'url':'api/sell', 'key':'sells' }] } module.exports = data;
就能夠模擬本地數據了。