我正在尝试使用Koa (v2)服务前端。最终,我想使用React。但现在,我只是试图提供一个简单的html文件。
app/index . html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<h1>Hello World</h1>
</body>
</html>
server.js
import 'babel-polyfill';
import koa from 'koa';
import koaRouter from 'koa-router';
import serve from 'koa-static';
import mount from 'koa-mount';
const app = new koa();
const router = new router({ prefix: '/koa' });
// This route works
router.get('/', async (ctx) => {
ctx.body = 'Hello from Koa!';
});
app.use(router.routes());
const front = new koa();
// This route doesn't work.
front.use(serve(__dirname + '/app'));
// However, this will work, so then, I'm not using koa-serve correctly?
// front.use(async (ctx) => {
// ctx.body = "Mount this.";
// });
app.use(mount('/', front));
app.listen(3000);
那么我如何为前端服务呢?
我使用了类似的代码,它为我工作,奇怪的,几乎像你的例子,只是我没有使用async
const koa = require('koa');
const koaRouter = require('koa-router');
const mount = require('koa-mount');
const serve = require('koa-static');
const app = new koa();
const router = new koaRouter({ prefix: '/koa' });
router.get('/', function *() {
this.body = 'Hello from Koa!';
});
app.use(router.routes());
const front = new koa();
front.use(serve(__dirname + '/app'));
app.use(mount('/', front));
app.listen(3000);
尝试使用koa-sendfile,只是为了测试一下。在
下面还有一个例子请注意,我使用的是koa-route,而不是像你的例子
那样使用koa-router。还有一个名为app的文件夹里面包含了index。html
'use strict';
const koa = require('koa');
const router = require('koa-route');
const mount = require('koa-mount');
const sendfile = require('koa-sendfile');
const serve = require('koa-static');
const app = koa();
const ui = koa();
const api = koa();
// API Mount
function *apiCall() {
this.body='response from api';
}
api.use(router.get('/', apiCall));
// UI Mount
// you have 2 ways:
// // 1. Using koa-sendfile
// function *serveIndex() {
// this.body='response from ui';
// yield sendfile(this, __dirname + '/app/index.html');
// if (!this.status) this.throw(404);
// }
// ui.use(serveIndex);
// 2. Using koa-static
ui.use(serve('app'));
app.use(mount('/api', api));
app.use(mount('/', ui));
app.listen(3000);