gpt4 book ai didi

javascript - 如何将多个 JSON 对象用于单个 NodeJS/Jade 合并

转载 作者:行者123 更新时间:2023-12-03 09:21:47 26 4
gpt4 key购买 nike

给出以下设置代码(不太现实)

default.js(config.js 使用它来加载基本配置)

{
"templateData": {
"corp": {
"corpName": "Company",
"DepartmentOne": {
"name": "DepartmentOne",
"phone": "1-800-555-555",
"email": "departmentone@company.com"
},
"address": {
"main": {
"addressLine1": "Somwhere",
"city": "SomeTown",
"stateShort": "SState",
"stateLong": "SomeState",
"zipCodeShort": "Zippy"
}
},
"urls": {
"company": {
"corporate": {
"site": "https://company.com/",
"logo": "http://sites.company.com/images/logo.png",
"altText" : "Company Corporate Logo"
},
"facebook": {
"site": "https://www.facebook.com/company",
"icon": "http://sites.company.com/images/facebook.png",
"altText" : "Company Facebook Page"
},
"twitter": {
"site": "https://twitter.com/company",
"icon": "http://sites.company.com/images/twitter.png",
"altText" : "Company Twitter Feed"
},
"youtube": {
"site": "https://www.youtube.com/company",
"icon": "http://sites.company.com/images/youtube.png",
"altText" : "Company YouTube Channel"
}
}
},
"currentYear": "2015",
"corpWebSiteName": "Company.com"
}
}
}

test01.js(主 Node 代码)

var fs = require('fs');
var bunyan = require('bunyan');
var jade = require('jade');
var config = require('config');
var restify = require('restify');


var log = bunyan.createLogger({src: false, name: "emailTemplateMerger"});

var html = '';

var corpConfig = config.get('templateData');

var emailData = { 'emailAddress' : 'nonya@bidness.com',
'firstName' : 'nonya',
'lastName' : 'bidness'
}

var miscData = { 'billingDate' : '2015-08-01',
'accountType' : 'new',
'discountTypes' : {
'primary' : 'Coupon20',
'bonus' : 'First30Days',
'standard' : 'freeShipping'
}
}


fs.readFile('./emailTemplates/test01.jade', 'utf-8', function(error, source){
var template = jade.compile(source);

html = template(corpConfig)

console.log(html);
});

Jade 模板:

html
head
body
p.
Hello #{emailData.firstName},
p.
Welcome to #{corp.corpName}'s #{DepartmentOne.name}.
p.
Your next bill will be sent on #{miscData.billingDate} for your #{miscData.accountType}.
p.
Thank you

问题:确定将配置数据和 2 个本地数据集(将通过 REST 传入)合并到 Jade 模板中的有效方法。

由于数据有很多级别的嵌套,直接合并可能很复杂,并且可能容易出错,具体取决于传入的数据,是否有办法传递 Jade 多个单独的数据集并将合并推迟到 Jade 引擎?

我已经尝试了多次传递,但是一次 Jade 合并会从模板中删除所有标签,因此没有成功。无论如何,我还没想出如何链接结果。

最佳答案

您可以创建一个顶级上下文对象,如下所示:

var context = {
corp: corpConfig,
email: emailData,
misc: miscData
};

....

var html = template(context);

然后将模板引用更改为这样的内容

html
head
body
p.
Hello #{context.email.firstName},
p.
Welcome to #{context.corp.corpName}'s #{context.misc.DepartmentOne.name}.

关于javascript - 如何将多个 JSON 对象用于单个 NodeJS/Jade 合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31818282/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com