Javascript 在expressjs中呈现jade文件

Javascript 在expressjs中呈现jade文件,javascript,node.js,Javascript,Node.js,我有一个基本的expressjs应用程序(使用jade),但是我在渲染基本的jade文件时遇到了问题。当我收到请求时,我解析路径名的url,并使用handle对象按如下方式路由请求: index.js var requestHandlers = require('./requestHandlers'); var handle = {}; handle['/'] = requestHandlers.start; handle['/download'] = requestHandlers.down

我有一个基本的expressjs应用程序(使用jade),但是我在渲染基本的jade文件时遇到了问题。当我收到请求时,我解析路径名的url,并使用handle对象按如下方式路由请求:

index.js

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

var handle = {};
handle['/'] = requestHandlers.start;
handle['/download'] = requestHandlers.download
requestHandlers.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;
杰德之家

h1= title
p Welcome to #{title}
我使用Jade作为模板引擎,并在一个单独的server.js文件中配置了服务器。当我请求其中一个页面时,标题会正确地显示在我的浏览器选项卡上,但页面不会显示,它只是继续加载。奇怪的是,当我取消请求时,页面会显示出来。就好像一切都正常,但没有任何东西能告诉过程结束


我对node比较陌生,所以请原谅我对以上任何一点的天真。如果有任何问题我可以澄清,请告诉我

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

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

/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 for post方法)。现在,如果您决定构建RESTAPI,就可以更轻松地绑定Express资源模块之类的东西

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

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'})
    });

});