zoukankan      html  css  js  c++  java
  • dev-server.js

    var path = require('path')
    var express = require('express')
    var webpack = require('webpack')
    var config = require('../config')
    var proxyMiddleware = require('http-proxy-middleware')
    var webpackConfig = process.env.NODE_ENV === 'testing'
    	? require('./webpack.prod.conf')
    	: require('./webpack.dev.conf')
    
    // default port where dev server listens for incoming traffic
    var port = process.env.PORT || config.dev.port
    // Define HTTP proxies to your custom API backend
    // https://github.com/chimurai/http-proxy-middleware
    var proxyTable = config.dev.proxyTable
    
    var app = express()
    
    var appData = require('../data.json');
    var seller = appData.seller;
    var goods = appData.goods;
    var ratings = appData.ratings;
    
    var apiRoutes = express.Router();
    
    apiRoutes.get('/seller', function (req, res) {
    	res.json({
    		errno: 0,
    		data: seller
    	});
    });
    
    apiRoutes.get('/goods', function (req, res) {
    	res.json({
    		errno: 0,
    		data: goods
    	});
    });
    
    apiRoutes.get('/ratings', function (req, res) {
    	res.json({
    		errno: 0,
    		data: ratings
    	});
    });
    
    app.use('/api', apiRoutes)
    
    var compiler = webpack(webpackConfig)
    
    var devMiddleware = require('webpack-dev-middleware')(compiler, {
    	publicPath: webpackConfig.output.publicPath,
    	stats: {
    		colors: true,
    		chunks: false
    	}
    })
    
    var hotMiddleware = require('webpack-hot-middleware')(compiler)
    // force page reload when html-webpack-plugin template changes
    compiler.plugin('compilation', function (compilation) {
    	compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) {
    		hotMiddleware.publish({action: 'reload'})
    		cb()
    	})
    })
    
    // proxy api requests
    Object.keys(proxyTable).forEach(function (context) {
    	var options = proxyTable[context]
    	if (typeof options === 'string') {
    		options = {target: options}
    	}
    	app.use(proxyMiddleware(context, options))
    })
    
    // handle fallback for HTML5 history API
    app.use(require('connect-history-api-fallback')())
    
    // serve webpack bundle output
    app.use(devMiddleware)
    
    // enable hot-reload and state-preserving
    // compilation error display
    app.use(hotMiddleware)
    
    // serve pure static assets
    var staticPath = path.posix.join(config.dev.assetsPublicPath, config.dev.assetsSubDirectory)
    app.use(staticPath, express.static('./static'))
    
    module.exports = app.listen(port, function (err) {
    	if (err) {
    		console.log(err)
    		return
    	}
    	console.log('Listening at http://localhost:' + port + '
    ')
    })
    
    You can change the world with your heart,even a lot of changes sometimes unless you won't geiv up....
  • 相关阅读:
    欧拉计划之题目2:在斐波那契数列中,找出4百万以下的项中值为偶数的项之和。
    MFC非模态对话框的销毁
    MFC:只允许产生一个应用程序实例的具体实现
    从_tiddata看CRT的线程不安全函数
    关于消息循环的深入分析
    MFC:关于MFC窗口对象(CWnd对象)与Window对象(HWND所指对象)的销毁问题
    使用FindFirstFile和FindNextFile对给定目录下所有文件进行广度优先遍历
    工作线程的消息循环与通信
    MFC和设计模式
    _endthreadex与CloseHandle
  • 原文地址:https://www.cnblogs.com/xiongwei2017/p/6654347.html
Copyright © 2011-2022 走看看