大多数传统的 MVC 框架都包含自己的模板解决方案(Jinja2、Mako 等)。如果决定使用其中一种新的 ui 框架,例如 Angular 或 Backbone,它们似乎鼓励使用前端模板解决方案。
性能上有区别吗?无论哪种方式都有哪些优点和缺点?在使用这些 js 模板解决方案时,ie 或其他浏览器是否存在问题?
大多数传统的 MVC 框架都包含自己的模板解决方案(Jinja2、Mako 等)。如果决定使用其中一种新的 ui 框架,例如 Angular 或 Backbone,它们似乎鼓励使用前端模板解决方案。
性能上有区别吗?无论哪种方式都有哪些优点和缺点?在使用这些 js 模板解决方案时,ie 或其他浏览器是否存在问题?
我对此的看法很简单,真的。
当您想要模板化网站的结构时,请使用服务器端模板引擎。当您想要对站点的数据进行模板化时,请使用客户端模板引擎。只要它们没有大量的竞争代币,使用两者都没有任何问题。
一个非常常见的示例是使用 ASP.Net MVC 使用 razor 模板引擎来管理大部分站点结构,并使用 JavaScript 客户端库(如 Angular.js)来简化各个页面上的数据结构。
根据具体情况,一个主要因素可能是带宽使用的显着变化。
例如,我最新的项目包括在聊天(和其他地方)中使用颜色代码的能力。这些代码如下所示:
`1blue `2green `3yellow `4red `bbold on `Bbold off `b`iBold Italic...
我可以解析这个服务器端并返回:
<span style="color:blue">blue </span><span style="color:green">green</span>...
但是看看我是怎么只写了两个词的,我已经比源文本长了!相反,我选择在前端用 JavaScript 实现解析器。这需要从服务器(否则必须为每个用户解析这些东西)到客户端(只处理一个用户)的大量处理。
它还有一个优点,就是我可以通过插入同一个解析器来实现实时预览,但这在这里无关紧要。
此外,可以缓存客户端模板,进一步减少需要发送的数据量。这对可能没有无限数据的移动用户特别有益(那些可怜的人......我为他们哭泣......不是真的)
就个人而言,鉴于各种性能原因,我强烈推荐客户端模板(尽管按照我通常的风格,我会避开所有预制解决方案并制作我自己的 XD,我很奇怪)。显然,主要的缺点是“没有 JavaScript = 没有网站”,但我对此很好,因为整个网站都依赖于 JS……