javascript - 如何让 Jade 的外部 JSON 从 Express 渲染?

标签 javascript json node.js express pug

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

这肯定是错误的,对吧?

最佳答案

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

不要忘记异步读取您的 JSON,否则您将阻止您的服务器。

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

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

关于javascript - 如何让 Jade 的外部 JSON 从 Express 渲染?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35473025/

相关文章:

asp.net - JqG​​rid addJSONData + ASP.NET 2.0 WS

javascript - 如何将键/值对字符串转换为 JSON 对象?

javascript - 运行 Babel 转译代码时需要 JSON 文件会引发 Node.js 加载程序错误 "Error: Cannot find module ' example.json'"

node.js - 抛出异常会杀死 Node js中的线程吗?

javascript - 我如何使用 Angular JS 作为模板引擎?

javascript - React 使用功能组件更改父组件的内部功能

javascript - Tumblr photoset 在 ipad 上没有响应

javascript - jqGrid v4.0 使用本地数据类型时分页器不工作

javascript - 在不使用return或嵌套if的情况下以reject结束promise函数,这怎么可能?

javascript - 替代node-red中的history.replaceState