Как обслуживать интерфейс с коа?

Я пытаюсь обслуживать внешний интерфейс с помощью Koa (v2). В конце концов, я хочу использовать React. Но пока я просто пытаюсь обслуживать простой html-файл.

приложение/index.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <h1>Hello World</h1>
  </body>
</html>

сервер.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);

Итак, как мне обслуживать интерфейс?


person jro    schedule 29.06.2016    source источник


Ответы (1)


Я использовал аналогичный код, и у меня это сработало, странно, почти как в вашем примере, просто я не использую асинхронность

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, как в вашем примере.

А также есть папка под названием «приложение», которая содержит «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);
person Relu Mesaros    schedule 29.06.2016