"not found" 尝试在 koajs 上使用 swig 呈现模板时,浏览器中的纯文本
"not found" plaintext in browser, when trying to render template with swig on koajs
我在 node.js 上使用 koajs 和 swig 模板引擎来学习和编码 Web 服务。目前浏览器只加载单词 'not found'。在我尝试将程序拆分为多个文件之前,该代码有效。之后我试图让它工作,即使将所有内容重新放在一个文件中,但没有成功。
位于“./templates/base.html”的 html 文件确实存在。
为了澄清,当我 运行 'node --harmony index.js' 时没有错误,我确实得到了输出 'listening on port 3000'。但是当我尝试在浏览器中加载页面时,我得到纯文本 'not found'.
这是我的文件:
index.js:
var routes = require('./routes');
var server = require('./server');
routes.baseroute
server.init(3000);
server.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;
data.js:
var basedata = {user: 'testuser123'};
exports.basedata = basedata;
所以真正发生的事情是,在将它们拆分为各自的文件后,您在各自的文件中创建了 koa
的单独实例。
参见:-
var app = koa();
在 server.js
和 routes.js
中,koa 将它们视为单独的应用程序。在 koa 中可能有多个应用程序,但您必须安装它们才能使它们具有任何类型的 linkage。
首先,找到您希望 linkage 发生的主文件。我猜它是 server.js
并从他们的文件 (route.js
) 中公开其他 app
。现在,当你 linking 它们时,只需使用 mount('/', require('./routes'));
和 koa
将 link 它们作为一个单元。简而言之:-
//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;
我在 node.js 上使用 koajs 和 swig 模板引擎来学习和编码 Web 服务。目前浏览器只加载单词 'not found'。在我尝试将程序拆分为多个文件之前,该代码有效。之后我试图让它工作,即使将所有内容重新放在一个文件中,但没有成功。
位于“./templates/base.html”的 html 文件确实存在。 为了澄清,当我 运行 'node --harmony index.js' 时没有错误,我确实得到了输出 'listening on port 3000'。但是当我尝试在浏览器中加载页面时,我得到纯文本 'not found'.
这是我的文件:
index.js:
var routes = require('./routes');
var server = require('./server');
routes.baseroute
server.init(3000);
server.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;
data.js:
var basedata = {user: 'testuser123'};
exports.basedata = basedata;
所以真正发生的事情是,在将它们拆分为各自的文件后,您在各自的文件中创建了 koa
的单独实例。
参见:-
var app = koa();
在 server.js
和 routes.js
中,koa 将它们视为单独的应用程序。在 koa 中可能有多个应用程序,但您必须安装它们才能使它们具有任何类型的 linkage。
首先,找到您希望 linkage 发生的主文件。我猜它是 server.js
并从他们的文件 (route.js
) 中公开其他 app
。现在,当你 linking 它们时,只需使用 mount('/', require('./routes'));
和 koa
将 link 它们作为一个单元。简而言之:-
//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;