【问题标题】:How to let external JSON for Jade to render from Express?如何让 Jade 的外部 JSON 从 Express 呈现?
【发布时间】:2016-05-30 02:53:55
【问题描述】:

我是 Node / Express 的初学者,我想使用 Jade 和 Express 来提供我的静态文件。

以前我将 Jade 与 gulp-jade 和 gulp-data 结合使用,我将能够渲染 Jade 文件并使用具有 JSON 文件的 gulp-data 来渲染每个页面。

index.jade + index.json 会给我index.html的输出

现在我在如何使用 Express 将外部 JSON 文件包含到 Jade 时遇到问题。

例如:

server.js

app.get('/', function(req, res){
    res.render('pages/index', {pagetitle: 'Hello World'});
});

pages/index.jade

h2 #{pagetitle}

这将呈现给

<h2>Hello World</h2>

问题

我想将{pagetitle: 'Hello World'} 替换为外部 json 文件,即 index.json。我可以这样做吗?

app.get('/', function(req, res){
    res.render('pages/index', 'folder_name/index.json');
});

肯定是错的,对吧?

【问题讨论】:

    标签: javascript json node.js express pug


    【解决方案1】:

    是的,这是错误的。这会将字符串本身设置为模型。你可能想看看 NodeJS 的 fs 模块。这将允许您读取文件的内容。然后,您可以解析 JSON 并将结果对象作为模型发送到您的玉模板。

    不要忘记异步读取 JSON,否则会阻塞服务器。

    https://nodejs.org/api/fs.html

    下一步将创建一个模块来负责读取此文件,将其保存在内存中,并仅在使用观察程序更改时重新加载它。

    【讨论】:

    • 谢谢!在您的帮助下,我能够解决我的问题! ;)
    【解决方案2】:

    感谢@gretro 的帮助。

    在您的帮助下,我能够解决我的问题。

    这是我的解决方案:

    var renderFromJson = function(json_path, renderTemplate) {
        fs.readFile(json_path, function(err, data) {
            renderTemplate(JSON.parse(data));
        })
    }
    
    app.get('/', function(req, res){
        renderFromJson('datas/index.json', function(json_data) {
            res.render('pages/index', json_data);
        });
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-19
      • 1970-01-01
      • 2013-04-17
      相关资源
      最近更新 更多