当前位置:  开发笔记 > 编程语言 > 正文

服务器端或客户端{{mustache}}?

如何解决《服务器端或客户端{{mustache}}?》经验,为你挑选了1个好方法。

{{mustache}}在我看来,是一个很棒的模板库.我面临的问题是是在客户端还是在服务器端使用它.

我正在开发一个在线杂志,它将有一个主要页面,其中包含一篇大文章,其余文章的篇幅较小.

例如

+-------------------------------------------------+
|                                                 |
|             Big Article Image                   |
|                                                 |
|                                                 |
+-------------------------------------------------+
     Title
     Author

+------------+     +------------+     +-----------+
|   Image    |     |   Image    |     |   Image   |
+------------+     +------------+     +-----------+
  Title               Title              Title
  Author              Author             Author
...

服务器端选项

使用{{mustache}}在服务器端,作为一个PHP库:当浏览器请求页面时,服务器将完成模板,并将其发送回.
优点:

加载时间会更好.浏览器一旦收到html代码,就会知道它要向服务器询问哪些其他资源.

缺点:

很难与客户端集成,{{mustache}}因为在解析模板时,所有未匹配的"胡须标签"都会被删除(我不知道是否可以轻松,干净地避免这种情况).

我不喜欢从服务器端修改接口,我宁愿从客户端进行,因此3层架构似乎更清晰(你可能会有所不同).

我以前没有服务器端的经验{{mustache}}.

客户端选项

而不是简单的{{mustache}}我通常使用ICanHas.js,它包装{{mustache}}并使其非常容易和舒适:当浏览器要求页面时,HTML发送,包含所有js代码以询问服务器JSON哪个包含标题,作者和文件名图片.
优点:

增强3层架构.

像无限滚动(其他ajax的东西)这样的事情非常简单.

缺点:

加载时间恶化.浏览器需要接收代码,发出JSON请求,然后向服务器询问发现的资源JSON(如图像文件名).


根据您的经验,您认为哪一个是最佳解决方案?为什么?



1> dagnelies..:

我想补充几点你的利弊.

客户端模板比服务器端更容易出错

对于所有类型的浏览器,版本,设备和安全设置,事情很快就会搞砸.您在页面上拥有的javascript和客户端模板越多,您就越有可能让某些用户获得一个搞砸的页面.例如,考虑IE默认兼容性设置,这很痛苦.使用服务器端模板,您只需检查一次并感到高兴.

客户端模板通常比服务器端更难调试

首先,当客户端在浏览器中出现错误时,您通常不会注意到它,除非您有一些报告系统.然后,您会得到一些神秘的单行错误消息.另一方面,在服务器端,您可以自动监视错误并在发生错误时获得良好的堆栈跟踪.甜蜜......节省了大量时间.

可能更好的SEO与服务器端模板

机器人可以直接准确地解析静态或服务器生成的页面.对于充满客户端模板的页面,我真的不知道你会得到什么,因此索引可能会受到影响.

服务器端模板加载时间更快

特别是对于具有低端手机的移动设备,客户端模板可能会产生明显的差异.特别是如果您必须在页面加载后的第二步中获取数据.在这些小型设备上进行Ajax +渲染会增加一点延迟.在服务器端,另一边有缓存,你很快.


尽管如此,尽管存在所有缺点,客户端模板仍有其目的

具有交互性和双向数据绑定的客户端模板规则

通常对于RIA(富Internet应用程序),您以非常交互的方式阅读/编辑/浏览数据,客户端模板可以非常方便.它成为单页面应用程序,其中页面是有状态的,并且页面的适当部分用相应的数据更新.缺点当然是这些网站难以开发,维护且更容易出错.

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有