javascript - 当尝试在 koajs 上使用 swig 渲染模板时,浏览器中的 "not found"纯文本

标签 javascript node.js web-services koa swig-template

我在 node.js 上使用 koajs 和 swig 模板引擎来学习和编写 Web 服务。目前,浏览器仅加载“未找到”字样。在我尝试将程序拆分为多个文件之前,该代码就可以工作。之后我尝试让它工作,即使将所有内容重新组合到一个文件中,但没有成功。

“./templates/base.html”处的 html 文件确实存在。 为了澄清起见,当我运行“node --harmony index.js”时,没有错误,并且我确实得到了输出“在端口 3000 上监听”。但是当我尝试在浏览器中加载页面时,我得到纯文本“未找到”。

这是我的文件:

index.js:

var routes = require('./routes');
var server = require('./server');


routes.baseroute

server.init(3000);

服务器.js:

var serve = require('koa-static');

var koa = require('koa');

var app = koa();


var init = function(port){

  app.use(serve('./public'));

  app.listen(port);
  console.log('\n   ---> listening on port '+port);
};

exports.init = init;

routes.js:

var koa = require('koa');
var route = require('koa-route');

var views = require('./views');

var app = koa();


var baseroute = app.use(route.get('/', views.baseview));

exports.baseroute = baseroute;

views.js:

var swig = require('swig');

var data = require('./data');


var baseview = function*(){
  var tpl = swig.compileFile('./templates/base.html');
  this.body = tpl(data.basedata);
};

exports.baseview = baseview;

数据.js:

var basedata = {user: 'testuser123'};

exports.basedata = basedata;

最佳答案

所以真正发生的事情是,当您将它们拆分成自己的文件后,您在自己的文件中创建了一个单独的 koa 实例。 请参阅:-
var app = koa();
server.jsroutes.js 中,koa 将它们视为单独的应用程序。在 koa 中可以有多个应用程序,但是您必须安装它们才能使它们具有任何类型的链接。 首先,找到您希望发生链接的主文件。我猜它是 server.js 并从其文件(route.js)中公开其他 app。现在,当您链接它们时,只需使用 mount('/', require('./routes'));koa 会将它们链接为一个单元。简而言之:-

//routes.js
var koa = require('koa');
...
...
var app = koa();
app.use(route.get('/', views.baseview));

module.exports = app;

//server.js
var app = require('koa');
var mount = require('koa-mount');
var routes = require('./routes');
...
...
var init = function(port){

  app.use(serve('./public'));
  app.use(mount('/route', routes));
  app.listen(port);
  console.log('\n   ---> listening on port '+port);
};   
exports.init = init;

关于javascript - 当尝试在 koajs 上使用 swig 渲染模板时,浏览器中的 "not found"纯文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33039155/

相关文章:

javascript - 来自格式数组的 moment.js 日期验证

javascript - 百度Echart世界地图看起来很扭曲

node.js - 无法在 Pycharm 中将目录标记为 javascript 的测试源

javascript - 将文档添加到 mongodb,并预先填充字符串的开头和结尾

java - CXF网络服务: interceptor not triggered

javascript - TypeScript 中的条件泛型类型使用可区分联合

java - 使用 directjngine 在 ext-js 中无限滚动

node.js - 如何在 Electron 应用程序中显示另存为对话框?

android - 为 Android 应用程序创建 Web 服务

c# - 将 asmx SOAP web 服务转换为 ASP.NET 上的 REST : is WCF really useful for just that ?