app2
可以看到这两个目录。 repo
文件访问默认路由时发送index.html
?要求:
我需要在我的应用index.html
.json
需要为js libs打开。src/index.html
需要对图片开放。我需要一个路由器用于两个目的:
1)提供初始node_modules
2)CRUD端点到我的数据库。
注意:我完全愿意添加/减去任何中间件。但我宁愿不改变我组织目录的方式。
目录结构:
中间件:
src/assets
index.html
app.js
var serve = require('koa-static');
var send = require('koa-send');
var router = require('koa-router')();
var koa = require('koa');
var app = koa();
// need this for client side packages.
app.use(serve('./node_modules/'));
// need this for client side images, video, audio etc.
app.use(serve('./src/assets/'));
// Will serve up the inital html until html5 routing takes over.
router.get('/', function *(next) {
// send up src/index.html
});
// will serve json open a socket
router.get('/people', function *(next) {
// send the people.json file
});
app.use(router.routes()).use(router.allowedMethods());
// errors
app.on('error', function(err, ctx){
log.error('server error', err, ctx);
});
app.listen(3000);
答案 0 :(得分:1)
好。碰巧我正在开发一种类似的应用程序
使用koa-static为你的api端点提供静态内容和koa-router是没有问题的。我从未直接使用过koa-send。但鉴于你的设置,我认为你也不需要。
唯一重要的是将中间件附加到koa应用程序时的顺序。尝试首先为您的资产附加koa-static(甚至可能是index.html),然后为您的api使用koa-router。尝试获取某些静态文件的请求永远不会到达路由器。这样路由器只负责为你的api服务
如果这不可行(例如,因为你有一堆非静态html文件到服务器,考虑一下你可以为每个应用程序设置多个路由器,甚至将一个嵌套在另一个内部
(如果答案还不够,请花点时间做一个简单的例子。我会尽快发布)
编辑:添加了一个快速而肮脏的示例here。可能它不是开箱即用的,但它足以让人想到