javascript模板库jsrender加载并缓存外部模板文件
2016-11-17 12:23
330 查看
前一篇说了jsrender嵌套循环的使用,在SPA的应用中,广泛使用的一个点就是view模板,使用了SPA之后,每个业务页面不再是独立的html,仅仅是一个segment,所以通常这些segment会被独立的存储,而不是跟demo一样嵌在宿主页面中。因为jsrender的模板本质上就是一个string,所以一般三方库angularjs/backbone.js都提供了加载外部模板的机制。其实原理都一样,差不多都是通过ajax从远程加载,然后缓存在B/S端,在jsrender中,通过类似机制,也可以达到一样的目标。如下所示:
render_seg.html
主页面jsrender_nest_external.html
其效果和内嵌模板完全相同,不过更加的干净。
render_seg.html
{{for #data}} <h3>{{:name}}</h3> <ul> {{for language}} <li> {{:#parent.parent.data.name}} is learning {{:title}}<br/> {{for scores}} <a href="#">{{:score}}</a> {{/for}} </li> {{/for}} </ul> {{/for}}
主页面jsrender_nest_external.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <script type="text/javascript" src="jquery-1.11.1.min.js"></script> <script type="text/javascript" src="jsrender.js"></script> <title>jsrender nest external demo</title> </head> <body> <div id="studentList"></div> <script type="text/javascript"> var temps = {}; var url = "studentTemp"; var students = [{name:"张三",language:[{title:"中",scores:[{score:12},{score:13},{score:14}]},{title:"英",scores:[{score:12},{score:13},{score:14}]},{title:"数",scores:[{score:12},{score:13},{score:14}]}]}, {name:"李四",language:[{title:"中",scores:[{score:12},{score:13},{score:14}]},{title:"中",scores:[{score:12},{score:13},{score:14}]},{title:"中",scores:[{score:12},{score:13},{score:14}]}]}, {name:"王五",language:[{title:"中",scores:[{score:12},{score:13},{score:14}]},{title:"中",scores:[{score:12},{score:13},{score:14}]},{title:"中",scores:[{score:12},{score:13},{score:14}]}]}]; if(temps[url]) { var tmpl = $.templates(temps[url]); $("#studentList").html(tmpl.render(students)); } else { $.ajax({ url: "render_seg.html", //这里是静态页的地址 type: "GET", //静态页用get方法,否则服务器会抛出405错误 success: function (data) { temps[url] = data; var tmpl = $.templates(temps[url]); $("#studentList").html(tmpl.render(students)); } }); } </script> </body> </html>
其效果和内嵌模板完全相同,不过更加的干净。
相关文章推荐
- TP模板加载和导入外部文件
- android中图片加载使用LruCache缓存到内存或外部文件的功能
- Flash中加载外部文件的方法
- 动态加载外部JS文件
- 动态加载外部.js文件时候,javascript的执行顺序问题
- as3加载外部XML文件
- flash调用外部声音文件(加载到场景中)
- DSP 从外部加载文件到内存
- 动态加载外部资源文件
- 动态加载外部 css和javascript脚本 文件
- 母版页引用外部文件的路径问题,如加载javascript文件时
- 解决Visual studio 不能加载文件模板的问题
- 常见的加载外部文件时候碰到的问题
- PHP - Smarty模板引擎 - Manual手册 - Chapter 7. Built-in Functions第7章 内建函数 - {config_load}用于从一个配置文件加载配置变量到模板中
- 使用javascript动态加载外部css或js文件
- 在flash中加载外部.SWF文件的方法
- flash as3使用,播放声音和加载外部声音文件
- HTML加载外部css文件的两种方法
- Flash如何加载外部wav文件
- 谈PHP生成静态页面分析 模板+缓存+写文件