首页 文章

设置静态资产路径,使用koa和各种中间路由路由 endpoints

提问于
浏览
0

问题:

  • 如何设置静态文件,以便我的 index.html 可以看到这两个目录 .

  • 当我发出AJAX Get请求时,当你使用koa-router而不是 .json 文件命中默认路由时,如何发送 index.html

Requirements:

我需要在我的应用程序中显示静态目录 src/index.html

需要为js libs打开

  • node_modules .

  • src/assets 需要对图像开放 .

我需要一个路由器用于两个目的:

  • 1)提供最初 index.html

  • 2)CRUD endpoints 到我的数据库 .

注意:我完全愿意添加/减去任何中间件 . 但我宁愿不改变我组织目录的方式 .

Directory Structure:

directory structure

Middleware:

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);

index.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Morningharwood</title>
</head>
<body>
  <h1>suchwow</h1>
  <img src="./assets/image1.png" alt="butts"> <!-- will 404 with routing -->

  <script src="./node_modules/gun/gun.js"></script> <!-- will always 404 -->
  <script>
    var gun = Gun(options);
    console.log(gun);
  </script>
</body>
</html>

1 回答

  • 1

    好 . 碰巧我正在开发一种类似的应用程序

    使用koa-static为你的api endpoints 提供静态内容和koa-router没有问题 . 我从未直接使用过koa-send . 但考虑到你的设置,我认为你也不需要

    唯一重要的是将中间件附加到koa应用程序时的顺序 . 尝试首先为您的资产附加koa-static(甚至可能是index.html),然后为您的api使用koa-router . 尝试获取某些静态文件的请求永远不会到达路由器 . 这样路由器只负责为你的api服务

    如果那不可行(例如,因为你有一堆非静态html文件到服务器,考虑一下你可以为每个应用程序设置多个路由器,甚至将一个嵌套在另一个内部

    (如果答案还不够,请花点时间做一个简单的例子 . 我会尽快发布)

    编辑:添加了一个快速而肮脏的例子here . 可能它不足以得到这个想法

相关问题