还在用Json完成Ajax,改用Beetl吧(上)

浏览器通过AJAX,服务器返回json数据,无刷新的更新视图的这种模式在WEB开发中我已经用了很长时间了,记得最早是08年的时候用的,当时传递JSON数据让我眼前一亮。这种方式是只需要采用工具包将模型序列化成json格式就行,js UI库总能识别这种格式,轻易的生成新的视图片段。

然而时过境迁。这种传递AJAX JSON方式渐渐有了新的问题。
  1. JSON序列化库无法完美的序列化模型对象。序列化库总期望输入一个Object,但实际上前端有可能需要多个Object,这样,你不得不再创建一个序列化专用的Object。 另外,序列化逻辑都很简单,就是将所有对象属性都序列化。尽管JSON Lib 能提供属性过滤,属性格式化等,但扪心自问,远远不如模板渲染功能完善。模板语言提供了丰富的语句和扩展来处理模型对象。另外JSON Lib在序列化对象互相引用,处理的也不好。在模板语言里,这将不存在问题。总而言之,开发人员为了序列化JSON,不得不创建新的视图对象,不得不侵入原有的模型以规定序列化逻辑。以我认为最好的FastJSON工具为列,你能看到各种开发者问的问题(我直接从fastjson论坛行扒拉下来的).

-在使用 fastjson转map,怎么让map中为null的值等于""呢
-FastJson 1.2.4 日期类型 ISO8601格式序列化问题...
- 建议@JSONType注解添加allows属性,允许设置允许序列化的属性数(我也建议其他Annotation,用于控制渲染逻辑-闲大赋)
- fastjson 支持escape嘛,防止xss?

2 随着前端技术发展,程序员不再需要easyui,extjs这种前端框架了。因为这种框架不是以视觉为中心的,视觉人员无法左右这种框架。现在更流行的方式还是模板方式,只不过通过前端模板引擎来完成 :输入是JSON和前端模板,输出就是更新后的DOM。 那么问题就来了,这种方式是不是还不如直接后端模板引擎渲染呢?何必费劲的序列化成json,然后,用功能较弱的前端模板引擎来渲染。有点舍近求远的味道。

3 对于有些需要SEO的网站,使用AJAX JSON是致命的问题,因为搜索引擎扒到的是个空壳子。很不友好。目前也没有办法改善。据说google有专门的模拟器来模拟

4 对于一个复杂页面,如果多个部分都是用AJAX 请求,这简直是要了Web服务器的命。现在服务器不怕CPU忙,就怕请求多。因此AJAX JSON 这中方式也是非常不好的,目前同样也没有办法去改善。

吐槽了这么多AJAX JSON,该说说Beetl是怎么解决的,请听下回分解

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。