Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 节点快速请求_Node.js_Express - Fatal编程技术网

Node.js 节点快速请求

Node.js 节点快速请求,node.js,express,Node.js,Express,我刚接触node,经过几周的实践,我发现了express框架,并开始使用它,因为它可以更轻松地处理我需要的工具,但有一点我不太理解,它与没有express的应用程序有很大的不同。我不太了解express api(有点混乱)。我试图在特定的url(./视图)中找到请求url。所以,当请求logi时,当url为(hostname/login)时,它将执行(./views/login.html),如果它包含文件夹,则如此类推。这是我的密码 /* Chat application for @node.j

我刚接触node,经过几周的实践,我发现了express框架,并开始使用它,因为它可以更轻松地处理我需要的工具,但有一点我不太理解,它与没有express的应用程序有很大的不同。我不太了解express api(有点混乱)。我试图在特定的url(./视图)中找到请求url。所以,当请求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中的动态数据,我还进行了测试,使用app.use()处理./public文件夹中的静态文件(如api中所示)。所以我想要实现的是,如果url文件存在,那么使用它的静态文件(css、js)呈现它。如果不是,则返回自定义html文件。。 我使用app.get()来接收expecific请求(我完全不明白)


PD:请,需要EXPRESS教程(比EXPRESS homepage本身更好),至少对新手来说是这样。

由于视图不在公共目录中,因此任何包含视图的url都不会进入应用程序。无论如何都要使用()函数(因为在那里找不到它)。这很好。现在需要做的是为该特定视图创建一个路由函数。您的应用程序上方的类似内容。使用()

通常,渲染引擎将允许您执行快捷方式,只需执行res.render('login');它会在视图中找到它自己


此外,某些渲染器允许您指定请求传入时要查找的目录。但我不知道swig是否提供这种服务

如果不是预期的结果,你会得到什么结果?错误消息?快速扫描代码时,没有什么明显的错误。还有一个简短的评论。
app.get
这个东西可能会让人困惑<代码>获取实际上是重载的。使用单个参数调用,它补充了
set
(即,它用于获取先前设置的值,例如
app.get('view engine'))
将在上面的代码中返回
'html'
。当使用多个参数调用时,它是
app.VERB
函数集的成员,以及put、post、delete映射到各种类型的HTTP请求。嗯,我没有完全获得代码,我是从api获得它们的,这就是为什么我要求提供教程或其他东西的原因请给我一个更好的解释,不仅仅是从存储库中分叉代码,因为大多数代码都无法解释,有时甚至会令人困惑。特别是对于从一开始就学习的人来说,你可能会比一些教程做得更糟。请记住,Express刚刚从3升级到4版本。请注意年份本教程的内容与您正在运行的内容相比有很多相同之处,但最值得注意的是,“标准”中间件的合并(或不合并)方式是一个重大变化。祝您好运。需要一点时间才能习惯(就像任何新事物一样)但是我仍然没有得到这些函数,因为现在我只想为所有url视图实现一个根。
app.get('/views/login', function(req, res){
   res.render(__dirname + 'views/login');
});