Express.js可以在同一个'res'对象上呈现不同的路由吗?

时间:2012-06-20 07:41:14

标签: node.js express ejs

我可以在route / index.js中使用以下配置吗?

exports.PageA = function(req, res) {
...
...
    if(req.method == 'GET') {
        if (condition1) {
            //PageA has 2 .js files
            res.render('PageA', { title: 'A', layout: false});
        }
        else {
            //PageB has 2 + 2 .js files
            res.render('PageB', { title: 'B', layout: false});
        }
    }
    else {
        res.render('PageC', { title: 'B', layout:'some_other_layout' });
    }
};

案例:当条件1通过时,mywebsite.com/PageA正确呈现(所有脚本都已加载并正确执行)

问题:但是当condition1失败时,我得到了PageB渲染,PageB.ejs中的javascripts被渲染但未执行,例如,在$ document.Ready()上。 奇怪的是,如果我'刷新'已经在浏览器中呈现的PageB,则javascripts会正确执行。

作为一条信息:我在所有“< script> ...”中使用defer =“defer”标签

我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

您的问题完全在客户端。此时仅在Internet Explorer和Firefox中支持属性“延迟”。我认为您的问题是脚本以错误的顺序加载。检查浏览器控制台是否有错误。重新加载页面时,脚本将从浏览器缓存加载。它更快。因此,在这种情况下可能不会出现错误。