UNPKG

1.58 kBJavaScriptView Raw
1const Express = require('express')
2const compression = require('compression')
3
4const { IS_DEV, IS_PROD } = require('../config/env.config')
5const appConfig = require('../utils/get-app-config')
6const { publicPath } = require('../utils/index')
7
8const proxyMiddleware = require('./middlewares/proxy')
9const ssrMiddleware = require('./middlewares/ssr')
10
11module.exports = function createApp(options, onStart = () => {}) {
12 const app = Express()
13
14 if (appConfig.deploy.CORS) {
15 app.all('*', function(req, res, next) {
16 res.header('Access-Control-Allow-Origin', '*')
17 res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS')
18 res.header('Access-Control-Allow-Headers', 'X-Requested-With')
19 res.header('Access-Control-Allow-Headers', 'Content-Type')
20 next()
21 })
22 }
23
24 // 路由hash配置的时候,带路由的页面刷新会404,需要加入这个
25 app.use(require('connect-history-api-fallback')())
26 // 开启gzip
27 app.use(compression())
28
29 // 服务端静态资源路径
30 if (!appConfig.deploy.isSSR) {
31 app.use(Express.static(publicPath))
32 }
33 app.use(`/${publicPath}`, Express.static(publicPath))
34
35 if (IS_DEV) {
36 const webpackDevMiddleware = require('./middlewares/webpack.dev')
37 webpackDevMiddleware(app)
38 }
39
40 if (IS_PROD && appConfig.deploy.isSSR) {
41 app.use(ssrMiddleware)
42 }
43
44 // proxy配置
45 app.use(proxyMiddleware)
46
47 app.listen(appConfig.appPort, function () {
48 console.log(`server is running in http://localhost:${appConfig.appPort}`)
49 })
50
51 // 服务器启动回调
52 onStart()
53
54 return app
55}