javascript代码实例教程-Javascript:自己写模板引擎

发布时间:2019-01-20 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-Javascript:自己写模板引擎脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。 因为JS没有提供“字符串插入”和“多行字符串”特性,传统的拼凑字符串容易出错、性能不高和不容易理解代码,为了应对这些问题,很多个人和团队开发了模板引擎,现在主流的JS框架几乎都提供此类功能了。

模板引擎的实现方式有很多种,此处介绍一种简单、灵活和强大的思路,该方式借鉴了 JSP(web 服务器最终将 JSP 页面转换为了 Servlet),编译后会把模板转换为一个方法。

这个实现只是为团队介绍模板引擎的原理,具体应用还需要选择成熟的开实现。

实现

 

 

 1 <!DOCTYPE htML>

 2 

 3 <html XMlns="https://www.w3.org/1999/xhtml">

 4 <head runat="server">

 5     <;meta http-equiv="Content-type" content="text/html; charset=utf-8" />

 6     <tITle></title>

 7 </head>

 8 <body>

 9 </body>

10 </html>

11 <script id="test-tpl" type="text/template">

12 start

13 

14 <# for(VAR i=0; i< items.length; i++) {#>

15     <#= items[i].name #>

16 <# } #>

17 

18 end

19 </script>

20 <script type="text/javascript">

21     var Template = function (tpl) {

22         var me = this;

23 

24         me.tpl = tpl;

25     };

26 

27     Template.PRototype.COMpile = function () {

28         var me = this;

29 

30         var codes = [];

31         codes.push("var results = [];");

32         codes.push("with(context) {");

33 

34         var frags = me.tpl.split(/(<#=.+?#>)|(<#.+?#>)/);

35         for (var i = 0; i < frags.length  ; i++) {

36             var frag = frags[i];

37 

38             if (!frag) {

39                 continue;

40             }

41             if (frag.indexOf("<#=") == 0) {

42                 codes.push("results.push(" + frag.substring(3, frag.length - 2) + ");");

43             }

44             else if (frag.indexOf("<#") == 0) {

45                 codes.push(frag.substring(2, frag.length - 2));

46             }

47             else {

48                 codes.push("results.push('" + frag.split('/n').join('//n') + "');");

49             }

50         }

51 

52         codes.push("}");

53         codes.push("return results.join('');");

54 

55         console.LOG(codes.join("/n"));

56         me.compiledTplFun = new Function("context", codes.join("/n"));

57     };

58 

59     Template.prototype.apply = function (context) {

60         var me = this;

61 

62         if (!me.compiledTplFun) {

63             me.compile();

64         }

65 

66         return me.compiledTplFun(context);

67     };

68 

69     var tpl = new Template(document.getElementById("test-tpl").innerHTML)

70 

71     console.log(tpl.apply({ items: [{ name: "dgw" }] }));

72 </script>

觉得可用,就经常来吧! 脚本宝典 欢迎评论哦! js脚本,巧夺天工,精雕玉琢。小宝典献丑了!

脚本宝典总结

以上是脚本宝典为你收集整理的javascript代码实例教程-Javascript:自己写模板引擎全部内容,希望文章能够帮你解决javascript代码实例教程-Javascript:自己写模板引擎所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。