我正在使用Express在NodeJs上用javascript编写CMS。我的目标是构建我过去几年在.NET中每天构建的东西,但现在纯粹是在javascript中。 目前,我有基本流程工作,内联编辑页面(具有“contenteditable”属性),然后将这些可编辑div的HTML解析为JSON并将其存储在MongoDB中。
另一种方法是,将所需部分的JSON解析回HTML服务器端并插入带有jQuery的JSDom文档中,然后将整个文档发送到客户端。
这一切都很完美,但现在我正在和一位正在质疑HTML存储为JSON的部分的同事进行讨论。在他看来,这应该是XML,但在将所有内容更改为XML之前,我希望听到更多关于此问题的意见。
在流程的任何部分,XML都优于JSON吗?我必须使用XSLT将XML格式化为HTML,而不是像我所知的那样将JSON解析回HTML。
对此的任何意见都将受到高度赞赏。
答案 0 :(得分:2)
是的,JSON适用于Javascript中的对象,而XML更适合您尝试存储的HTML。因此,看看JSONML,它是写下XML的JSON语法。规范很简单,所以简而言之。
这是JSONML的一个例子:
[
"lcSequenceOption",
[
"lcAnswerContent",
"Some answer content"
],
[
"lcSequence",
{
"value": 0
}
]
]
转换为以下XML:
<lcSequenceOption>
<lcAnswerContent>Some answer content</lcAnswerContent>
<lcSequence value="0" />
</lcSequenceOption>
JSONML没有提供处理指令的表示法。在JSONML之上编写自定义规则并不是很难。在我工作的组织中,我们解释以&#34;?&#34;开头的每个节点(规则2)。作为处理指令。
答案 1 :(得分:1)
我倾向于使用像BaseX这样的XML数据库解决方案将数据存储在XML中,原因如下:
对我来说,将HTML等标记语言(我假设CMS的输入数据格式)转换为JSON,然后在“读取”模式下呈现CMS页面时将JSON转换回HTML会感觉很复杂。假设输入格式是有效的XHTML,您可以将其存储和检索为原生XML,这对我来说更自然。
答案 2 :(得分:0)
JSON绝对是一个更多的节点本地&#34;存储格式。正如你所注意到的,它也适用于mongo(沙发,riak)。将数据存储为JSON而不是(字符串化)XML的另一个优点是,您可以随时在mongoDB中开始索引和查询属性。
如果您很好地整理了自己的应用,那么使用toJSON()
方法替换toXML()
页面序列化程序非常简单,反之亦然。你的决定并不是一成不变的,但由于它似乎适合你,而且它是节点方式,我会坚持使用JSON。
如果有人愿意,我很乐意看到一些支持XML的答案。
答案 3 :(得分:0)
我建议您使用JSON,它不需要太多存储空间。
最重要的是它超快,我测试过在nodejs中解析查询字符串和json对象,json比查询字符串更快。我相信它也会比XML更快。
我最新的开源项目ourjs.org也基于JSON。它也是一个小型CMS,它很容易在内存中缓存数据,因此JSON就是其中之一。