返回列表 发新帖
查看: 562|回复: 1

[Discuz!二次开发] 基于 JS artTemplate 模板引擎 Template 加载的优化

[复制链接]

6671

热度

1万

元宝

262

贡献

管理员

DZ专员

发表于 2015-3-18 11:25:16 | 显示全部楼层 |阅读模式
artTemplate (http://aui.github.io/artTemplate)一种全新的 javascript 模板引擎,它采用了预编译的方式让性能有了质的飞跃,并充分利用 javascript 引擎特性,使得其性能无论在前端还是后端都有极其出色的表现。但是在实际应用中我们发现,和Ajax配合后通常会产生很多的 Template,这些 Template 都堆积在页面源码中时间一长难免会越来越多,影响页面加载的字节数,让页面越来越大。
我们对此进行了优化,由于我们的业务主要是针对移动产品的,因此我们可以放心的使用 HTML5 的 localStorage 进行缓存操作,缓存部分代码如下:
  1. <script id="header" type="text/html">
  2. <div class="header"><h3><%= header.name %></h3></div>
  3. </script>

  4. <script id="hotList" type="text/html">
  5. <ul>
  6.     <% for(i = 0; i < list.length; i++){ %>
  7.         <li tid="<%= list[i].tid %>"><%= list[i].subject %></li>
  8.     <% } %>
  9. </ul>
  10. </script>

  11. ······
复制代码
在我们使用的时候,直接引用文件即可,如下:
  1. TC.load("tmpl/tpl_list.html");
复制代码
首次访问此函数时,会调用 tmpl/tpl_list.html 文件并缓存到 localStorage 中,以后会直接从 localStorage 中获取 Template 的内容,直到 TC.VERSION 中的值变化,才会重新调用文件.从而减少了主页面请求的字节数.用过 artTemplate 的人会习惯直接把一些内容很短的模板直接写在 JS 里,类似下面
  1. template.compile('header', '<div class="header"><h3><%= header.name %></h3></div>');
复制代码
当然这样更省事。
此方案的是保证减少页面请求字节及页面请求数的目的下还能做到方便维护而提供的!

此功能在打通版微社区中实现!

来自建站学习研究资源开放平台【www.cgzz8.cn

4

热度

22

元宝

0

贡献

步入草根

发表于 2015-3-18 16:51:28 | 显示全部楼层
非常高兴遇到这么好的帖子 谢谢
返回列表 发新帖
 懒得打字嘛,点击右侧快捷回复【最新发布】   【赞助草根吧享更多权益】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

收藏帖子 返回列表 搜索

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

小黑屋|手机版|草根吧