json - 如何将 JSON 包集成到 Jade 模板中?

标签 json node.js express pug

我可能遗漏了一些明显的东西,但我是这个工作流程的新手。我有一个 Express 应用程序设置,我正在使用 Jade 作为模板引擎。我正在尝试使用一种名为“gulp-bundle-assets”的工具,它将我的所有脚本捆绑成一个,并在名称中使用散列输出它们(我假设是为了避免缓存问题)。它还包括一个 JSON 文件,该文件应该用于将脚本集成到您的应用程序中。它看起来像这样:

{
  "main": {
    "styles": "<link href='main-8e6d79da08.css' media='screen' rel='stylesheet' type='text/css'/>",
    "scripts": "<script src='main-5f17cd21a6.js' type='text/javascript'></script>"
  },
  "vendor": {
    "scripts": "<script src='vendor-d66b96f539.js' type='text/javascript'></script>",
    "styles": "<link href='vendor-23d5c9c6d1.css' media='screen' rel='stylesheet' type='text/css'/>"
  }
}

如何将这些数据包含在我的 Jade 模板中?我看到一个用于编译执行变量插值的 Jade 模板的实用程序,这是处理它的最佳方式,还是 Jade 中有一些 native 的东西?

最佳答案

当您在 NodeJS Express 服务器中使用 JADE 时,您可能需要将数据发送到您的 View 。我认为这是你需要的。由于您的数据是 JSON 格式,您需要使用 JSON 方法将 JADE 模板 View 转换为清晰的格式。

尝试下一个示例代码:

var express = require('express');
var bodyParser = require('body-parser');
var path = require('path');

let port = process.env.PORT || 3030;

var app = express();

app.set('views', path.join(__dirname, 'templates'));
app.set('view engine', 'jade');

app.use(bodyParser.urlencoded({ extended: false }));
app.use(express.static(path.join(__dirname, 'public')));

app.get('/', function(req, res){
    let jsonFile = require('./public/jsondata.json');
    let jsonData = JSON.stringify(jsonFile);
    let json = JSON.parse(jsonData);
    let mStyles = json.main.styles; //You get your main styles
    res.render('index', { mainStyles: mStyles });
}).listen(port, function(){
    console.log('Listening on' + port);
});

并且您的 JADE 模板位于 templates 文件夹中,包含以下内容:

html(lang="en")
    head
        meta(charset="utf-8")
        #{mainStyles}
        title Hello World

您正在将 mainStyles var 传递给 JADE 模板文件。

Don't forget customize your JSON file location.

关于json - 如何将 JSON 包集成到 Jade 模板中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37374507/

相关文章:

javascript - Node.js - 页面超时 - 发送后无法设置标题

python - 无法正确读取保存为 json 文件的字典

jquery - 修复 404 : missing parameters error from a GET request to CherryPy

node.js - 如何重定向到 Google Action 中的另一个意图(Google Assistant Action)

javascript - JSON 填充 View 的暂存区

javascript - Socket.io和express.js,如何使其工作?

node.js - 声明多个模式后无法从数据库中获取数据(mongoose + express + mongodb

c# - 需要帮助在 WPF 中反序列化字典 Json

javascript - Electron - 无法加载资源:net::ERR_FILE_NOT_FOUND

node.js - Loopback - 具有 "hasMany"关系的 $owner 角色