节点表达请求

时间:2014-04-17 04:35:43

标签: node.js express

我是节点的新手,经过几周的实践,我找到了快速框架,我开始使用它,因为它处理我需要的工具更容易,但是我不理解的东西,它与如何不同做没有表达的应用程序。我没有很好地得到快速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:请,需要快速补习(比明确的主页本身更好。),至少对于新手来说。

1 个答案:

答案 0 :(得分:0)

由于视图不在公共目录中,因此任何包含视图的url都不会转到app.use()函数(因为它无法在那里找到它)。这很好。您现在需要做的是为该特定视图创建路由功能。 app.use()上面有类似的东西:

app.get('/views/login', function(req, res){
   res.render(__dirname + 'views/login');
});

通常情况下,渲染引擎会允许你做一个快捷方式,然后只做res.render('login');它会在视图中找到它。

此外,一些渲染器允许您指定在请求进入时要查找的目录。我不知道swig是否提供此功能。