返回列表 发帖
查看: 5181|回复: 0

基于 JS artTemplate 模板引擎 Template 加载的优化

83

主题

-6

回帖

329

积分

炉火纯青

贡献
2 点
金币
241 个
发表于 2019-6-1 19:58:21 | 显示全部楼层 |阅读模式
artTemplate (http://aui.github.io/artTemplate)一种全新的 javascript 模板引擎,它采用了预编译的方式让性能有了质的飞跃,并充分利用 javascript 引擎特性,使得其性能无论在前端还是后端都有极其出色的表现。但是在实际应用中我们发现,和Ajax配合后通常会产生很多的 Template,这些 Template 都堆积在页面源码中时间一长难免会越来越多,影响页面加载的字节数,让页面越来越大。
我们对此进行了优化,由于我们的业务主要是针对移动产品的,因此我们可以放心的使用 HTML5 的 localStorage 进行缓存操作,缓存部分代码如下:
  1. artTemplate (http://aui.github.io/artTemplate)一种全新的 javascript 模板引擎,它采用了预编译的方式让性能有了质的飞跃,并充分利用 javascript 引擎特性,使得其性能无论在前端还是后端都有极其出色的表现。但是在实际应用中我们发现,和Ajax配合后通常会产生很多的 Template,这些 Template 都堆积在页面源码中时间一长难免会越来越多,影响页面加载的字节数,让页面越来越大。
  2. 我们对此进行了优化,由于我们的业务主要是针对移动产品的,因此我们可以放心的使用 HTML5 的 localStorage 进行缓存操作,缓存部分代码如下:
复制代码
这时,我们可以把诸多的 Template 分门别类的存放在不同的文件中,比如把首页的 Template 代码存放在 tpl_index.html 中,列表页的 Template 代码存放在 tpl_list.html 中。每个文件中可以放多个 Template 定义,文件内容如下:
  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>');
复制代码
当然这样更省事。
此方案的是保证减少页面请求字节及页面请求数的目的下还能做到方便维护而提供的!

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



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 关注公众号
  • 有偿服务微信
  • 有偿服务QQ

手机版|小黑屋|Discuz! 官方交流社区 ( 皖ICP备16010102号 |皖公网安备34010302002376号 )|网站地图|star

GMT+8, 2024-4-24 12:26 , Processed in 0.206214 second(s), 5 queries , Redis On.

Powered by Discuz! W1.0 Licensed

Cpoyright © 2001-2024 Discuz! Team.

关灯 在本版发帖
有偿服务QQ
有偿服务微信
返回顶部
快速回复 返回顶部 返回列表