gpt4 book ai didi

javascript - 在 expressjs 中渲染 jade 文件

转载 作者:行者123 更新时间:2023-11-30 13:19:02 25 4
gpt4 key购买 nike

我有一个基本的 expressjs 应用程序(使用 jade),但我无法呈现基本的 Jade 文件。当我收到请求时,我解析路径名的 url 并使用句柄对象按如下方式路由请求:

索引.js

var requestHandlers = require('./requestHandlers');

var handle = {};
handle['/'] = requestHandlers.start;
handle['/download'] = requestHandlers.download

请求处理程序.js

   function start(res) {
console.log("request handler for start called");
res.render('home', {title: 'express'});
}

function download(res) {
res.render('download', {title: 'download'})
res.end();
}

exports.start = start;
exports.download = download;

家. Jade

h1= title
p Welcome to #{title}

我使用 Jade 作为我的模板引擎,并在单独的 server.js 文件中配置了服务器。当我请求其中一个页面时,标题在我的浏览器选项卡上正确显示,但页面不显示,它只是不断加载。奇怪的是,当我取消页面显示的请求时。好像一切正​​常,但没有任何消息告诉进程结束?

我是 node 的新手,所以请原谅我对上述任何问题的天真。如果有任何我可以解决的问题,请告诉我。

最佳答案

我不是 100% 肯定为什么你的代码没有根据需要终止 TCP 连接以防止你的浏览器超时,但我可以提供一个对 Express 约定友好的解决方案,它应该可以解决你的问题并维护代码可读性、可维护性和分离性。

./app.js(你的主服务器脚本)

var express = require('express'),
app = express.createServer(),
routes = require('./routes');

app.configure(function () {

// Render .jade files found in the ./views folder
// I believe you are already doing this
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');

// Use the built-in Express router
// This kills the "handle" method you had implemented
app.use(app.router);

// Client-side assets will be served from a separate ./public folder
// i.e. http://yourhost.com/js/main.js will link to ./public/js/main.js
app.use(express.static(__dirname + '/public'));

});

// Initialize routes
routes.init(app);

./routes/index.js

exports.init = function (app) {

app.get('/', function (req, res) {
console.log("request handler for start called");

// Render __dirname/views/home.jade
res.render('home', {title: 'express'});
});

app.get('/download', function (req, res) {
// Render __dirname/views/download.jade
res.render('download', {title: 'download'})
});

});

以上避免了你需要自己去解析URL参数。您还可以定义更具可读性和强大的请求处理程序(即 app.post 用于 POST 方法)。如果您决定构建 REST API,现在可以更轻松地绑定(bind) Express-Resource 模块等内容。

如果您需要更强大的映射,您可以在 app.[get/post/put/del] 的第一个参数中使用正则表达式来过滤特定路径。

关于javascript - 在 expressjs 中渲染 jade 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10955624/

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