我是节点的新手,经过几周的实践,我找到了快速框架,我开始使用它,因为它处理我需要的工具更容易,但是我不理解的东西,它与如何不同做没有表达的应用程序。我没有很好地得到快速api(它有点令人困惑)。我试图在特定网址(./views)中找到请求网址。因此,当请求logi时,如果url是(hostname / login),它将执行(./views/login.html),依此类推,如果它包含文件夹。这是我的代码
/*
Chat application for @node.js
express version.
*/
//Load modules.
var express = require('express'),
socket = require('socket.io'),
swig = require('swig'),
fs = require('fs');
//Load config.
console.log('Loading configuration.');
var config = fs.readFileSync('config.json');
var config = JSON.parse(config);
var port = config.port;
var views = config.views;
console.log('Configuration loaded.');
//Initiate express module in app.
var app = express();
// app.get('/', function(request, response)
// {
// fs.readFile('./views/index.html', function(error, data)
// {
// if(error)
// {
// response.send('View cannot be rendered.');
// }
// response.type('html');
// response.send(data);
// });
// });
var test = "Hello";
app.engine('html', swig.renderFile);
app.set('view engine', 'html');
app.set('views', __dirname + '/views');
swig.setDefaults(
{
cache: false
});
app.get('/', function(request, response)
{
response.render('index',
{
//Var to be named in the render : value;
'test': test,
'Title': 'Testing page',
});
});
//logger.
app.use(function(request, response, next)
{
console.log('%s %s', request.method, request.url);
next();
});
//Set directory for static files (css, js, img);
app.use(express.static(__dirname + '/public'));
//Run the app.
app.listen(port);
即时通讯使用swig模块在html中动态数据,我也在测试我的测试,在./public文件夹中使用app.use()获取静态文件(如api中所示)。所以我想要实现的是,如果url文件存在,则使用其静态文件(css,js)呈现它。如果没有,返回一个自定义的html文件.. 即时通讯使用app.get()来接收特殊要求。(我完全不知道)。
PD:请,需要快速补习(比明确的主页本身更好。),至少对于新手来说。答案 0 :(得分:0)
由于视图不在公共目录中,因此任何包含视图的url都不会转到app.use()函数(因为它无法在那里找到它)。这很好。您现在需要做的是为该特定视图创建路由功能。 app.use()上面有类似的东西:
app.get('/views/login', function(req, res){
res.render(__dirname + 'views/login');
});
通常情况下,渲染引擎会允许你做一个快捷方式,然后只做res.render('login');它会在视图中找到它。
此外,一些渲染器允许您指定在请求进入时要查找的目录。我不知道swig是否提供此功能。