{{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
(如图像文件名).
根据您的经验,您认为哪一个是最佳解决方案?为什么?
我想补充几点你的利弊.
客户端模板比服务器端更容易出错
对于所有类型的浏览器,版本,设备和安全设置,事情很快就会搞砸.您在页面上拥有的javascript和客户端模板越多,您就越有可能让某些用户获得一个搞砸的页面.例如,考虑IE默认兼容性设置,这很痛苦.使用服务器端模板,您只需检查一次并感到高兴.
客户端模板通常比服务器端更难调试
首先,当客户端在浏览器中出现错误时,您通常不会注意到它,除非您有一些报告系统.然后,您会得到一些神秘的单行错误消息.另一方面,在服务器端,您可以自动监视错误并在发生错误时获得良好的堆栈跟踪.甜蜜......节省了大量时间.
可能更好的SEO与服务器端模板
机器人可以直接准确地解析静态或服务器生成的页面.对于充满客户端模板的页面,我真的不知道你会得到什么,因此索引可能会受到影响.
服务器端模板加载时间更快
特别是对于具有低端手机的移动设备,客户端模板可能会产生明显的差异.特别是如果您必须在页面加载后的第二步中获取数据.在这些小型设备上进行Ajax +渲染会增加一点延迟.在服务器端,另一边有缓存,你很快.
尽管如此,尽管存在所有缺点,客户端模板仍有其目的
具有交互性和双向数据绑定的客户端模板规则
通常对于RIA(富Internet应用程序),您以非常交互的方式阅读/编辑/浏览数据,客户端模板可以非常方便.它成为单页面应用程序,其中页面是有状态的,并且页面的适当部分用相应的数据更新.缺点当然是这些网站难以开发,维护且更容易出错.