Javascript 从JSON自动生成HTML
我正在开发一个模板系统。我想作为一个普通用户,您可以创建一个。json文件,系统将根据该文件自动生成html。 我完全不知道该怎么做。也许我可以创建一个遍历所有对象的递归循环,然后。。。。(我迷路了) JSON的外观示例:Javascript 从JSON自动生成HTML,javascript,html,json,templates,Javascript,Html,Json,Templates,我正在开发一个模板系统。我想作为一个普通用户,您可以创建一个。json文件,系统将根据该文件自动生成html。 我完全不知道该怎么做。也许我可以创建一个遍历所有对象的递归循环,然后。。。。(我迷路了) JSON的外观示例: 生成的HTML应该是什么样子:。可能有点晚了,我本来打算做一些类似的事情,遇到了这个线程,但是有一些代码,回调函数是从一个XHR对象调用的,该对象从当前静态文件“response.json”获取数据 JSON: jQote2是一个优秀的javascript模板插件,至少应该是
生成的HTML应该是什么样子:。可能有点晚了,我本来打算做一些类似的事情,遇到了这个线程,但是有一些代码,回调函数是从一个XHR对象调用的,该对象从当前静态文件“response.json”获取数据 JSON:
jQote2是一个优秀的javascript模板插件,至少应该是一个好的基准。它以一种非常方便的方式将JSON解析为HTML模板。 “json2html是一个开源jQuery插件,它依赖JSON转换将JSON对象转换为HTML。”@topherg
- 在createElement之后直接将obj绑定到父对象会更快
- 当您谈到object.children时,您应该检查:
if(object.children.constructor===Array){ for(var i=0;i<object.children.length;i++) createElementsFromJSON(object.children[i],obj); }else{ createElementsFromJSON(object.children,obj); }
if(object.children.constructor==数组){
对于(var i=0;i我为自己的项目做了一个简单的尝试,通过JSON动态生成html内容。您可以在这里尝试。欢迎您使用fork,因为JSON格式不同 示例JSON格式如下所示var innerhtml = { type: 'b', content: ['This is BOLD text.', { type: 'i', content: ' Italics came from Italy? Its 35px and bold too.', style: 'font-size:35px;' }] }; var htmlArr = { type: 'div', content: { type: 'p', content: ['Simple text with no formatting.', innerhtml, {type : 'img', src : '//www.gravatar.com/avatar/476914f28548ce41b3b7b2c5987720a9/?default=&s=64'}] } };
作为一个用户,我宁愿写HTML也不愿写json来描述网页的外观和内容。另外,你有没有想过如何处理样式?有没有理由不能使用jQuery及其模板插件?你真的在json和HTML之间节省了很多钱?标签和
字段集
似乎暗示您的普通用户必须对HTML元素有一些了解。我不明白您为什么要生成与所需格式不同的格式。JSON适合向多个用户发送数据(通常是异构的)客户端。但如果客户端需要HTML,只需发送HTML。您也可以将数据格式化为XML,然后使用XSLT将其转换为HTML(最好在服务器上,但也可以在客户端上)或其他用于不同客户端的标记。这一点很好。我确信,我将使用XML或HTML。谢谢大家;)这似乎是合乎逻辑的,我想他只是想自己建立一个。这也是我得到的印象。不过我还是会先使用一些现有的解决方案来看看好的/坏的部分。然后再看一些更好的解决方案的代码,特别是如果对如何实现类似的系统有点迷茫的话。我这样做就像是在stackOverFlow上问一个问题。这是纯粹的javascript。这太棒了。简单又小——非常好。谢谢!
if(object.children.constructor===Array){ for(var i=0;i<object.children.length;i++) createElementsFromJSON(object.children[i],obj); }else{ createElementsFromJSON(object.children,obj); }
var innerhtml = { type: 'b', content: ['This is BOLD text.', { type: 'i', content: ' Italics came from Italy? Its 35px and bold too.', style: 'font-size:35px;' }] }; var htmlArr = { type: 'div', content: { type: 'p', content: ['Simple text with no formatting.', innerhtml, {type : 'img', src : '//www.gravatar.com/avatar/476914f28548ce41b3b7b2c5987720a9/?default=&s=64'}] } };