JSON模板引擎

10

有没有类似于这样的JSON模板引擎?我正在寻找这样的东西...

var template = {
  'sts': '%data1.sts%',
  'msg': '%data2.msg%'
};

var data1 = {
  'sts': 200
};

var data2 = {
  'msg': 'Hi!'
};

// render(template, [data sources]);
var response = render(template, [data1, data2]);

console.log(response);

输出

{
  'sts': 200,
  'msg': 'Hi!'
}

感谢回复!


1
对于任何刚来到这里的人:请检查 JSONNET - https://jsonnet.org - Ben DeMott
4个回答

4

看一下Mustache。它似乎是你需要的。


我不确定是否可以在Mustache中使用两个数据源... 我可以吗? - Latanmos
你能在 JSON 中使用 {{ }} 模板标记并仍然能够读取它吗? - pqnet
更新了 Mustache 网站的链接:https://mustache.github.io - Isaiah Mann

2

是的,存在一个JSON模板引擎。我不知道你需要什么,但json-templater是一个选择。

template.json:

{
  "magic_key_{{magic}}": {
    "key": "interpolation is nice {{value}}"
  }
}

======== 您使用模板的代码 ========

var object = require('json-templater/object');
var result = object(
  require('./template.json'),
  { magic: 'key', value: 'value' }
);

console.log(result);

/* should look something like this: 
{
  magic_key_key: {
    key: 'interpolation is nice value'
  }
}
*/

1
那个是这个吗:https://github.com/lightsofapollo/json-templater? - Setop
有一段时间了,但我相信那就是它。 - Stucco

1

如果你从JSON转换到JSON,你可以继续使用Javascript,只需反转赋值的顺序:

var data1 = {
  sts: 200
};

var data2 = {
  msg: 'Hi!'
};

var template = {
  sts: data1.sts,
  msg: data2.msg
};

console.log( JSON.stringify(template) ); //--> {"sts":200,"msg":"Hi!"}

JSON.stringify 是现代浏览器中可用的本地对象和方法。如果没有,您可以使用json2.js

但是,如果您需要一个模板引擎将 JSON 转换为 HTML,则可以查看pure.js


-5

保持简单。

function template(data) {

  var object = {
    'sts': data[0].sts,
    'msg': data[1].msg
  };

  return object;

}

6
他需要一个模板系统,而不是通过编程实现相同效果的方法。 - Simone Pontiggia
@SimonePontiggia Javascript已经是JSON的模板系统了。 - pqnet
这并不是一个被接受的答案,对于那些试图分离视图和控制器逻辑的人来说。JSON文档显然可以像HTML和许多其他文档一样具有可解析的语法,以实现MVC或类似的软件设计模式。 - muratgozel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接