gpt4 book ai didi

node.js - Node 表达请求

转载 作者:太空宇宙 更新时间:2023-11-04 02:35:04 25 4
gpt4 key购买 nike

我是 Node 新手,经过几周的练习,我找到了 Express 框架,并开始使用它,因为它可以更轻松地处理我需要的工具,但有一些我不明白的东西,它与如何在没有 Express 的情况下制作应用程序完全不同。我不太了解express api(有点令人困惑)。我试图使请求网址在特定网址(./views)中找到。因此,当请求 logi 时,当 url 为(主机名/登录)时,它将执行(./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() 来接收特定请求。(我完全不明白)。

PD:拜托,需要 Express 教程(比 Express 主页本身更好。),至少对于新手来说是这样。

最佳答案

由于 View 不在公共(public)目录中,因此任何包含 View 的 url 无论如何都不会转到 app.use() 函数(因为它在那里找不到它)。这很好。您现在需要做的是为该特定 View 创建一个路由函数。您的 app.use() 上方类似这样的内容:

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

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

此外,一些渲染器允许您指定一个目录,以便在收到请求时查找。不过我不知道 swig 是否提供此功能。

关于node.js - Node 表达请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23124677/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com