koa 搭建一个放vue打包文件的node服务

182 阅读1分钟

1.package.json

{
  "name": "koa-demo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "serve": "nodemon index.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "babel-plugin-transform-es2015-modules-commonjs": "^6.26.2",
    "babel-register": "^6.26.0",
    "koa": "^2.13.1",
    "koa-bodyparser": "^4.3.0",
    "koa-router": "^10.0.0",
    "koa-static": "^5.0.0",
    "koa-views": "^7.0.1",
    "koa2-cors": "^2.0.6",
    "nodemon": "^2.0.7"
  }
}

2.服务service.js

const Koa = require('koa')
const cors = require('koa2-cors')
const views = require("koa-views")
const serve = require("koa-static")
import router from './routes'

const app = new Koa()

// 处理跨域的配置
app.use(
  cors({
    exposeHeaders: ['WWW-Authenticate', 'Server-Authorization', 'Date'],
    maxAge: 100,
    credentials: true,
    allowMethods: ['GET', 'POST', 'OPTIONS'],
    allowHeaders: ['Content-Type', 'Authorization', 'Accept', 'X-Custom-Header', 'anonymous']
  })
)

// 可以指定多个静态目录
app.use(serve(__dirname + "/dist"));
app.use(serve(__dirname + "/public"));

app.use(
  views("views", {
    map: {
      html: "ejs"
    }
  })
);

app.use(router.routes())

app.listen(9000)
console.log('app started at port 9000...')

3.入口index.js

require('babel-register')
(
  {
    plugins: ['babel-plugin-transform-es2015-modules-commonjs'],
  }
)

module.exports = require('./service.js')

4.路由/routes/index.js

const router = require('koa-router')()

router.get('/hello', async (ctx, next) => {
  ctx.body = "<div>Hello</div>"
})
export default router