分享一个Javascript的模板引擎 JTemplate

Javascript的模板一般用于带有Ajax的项目之中。

Ajax的服务端返回值一般都是json/xml形式的纯数据,不带有html代码,若不使用Javascript模板,则需要通过Js拼接字符串来完成前端页面的展示。

拼接字符串的代码,不仅写起来让人很不爽,并且让人看起来也很不爽。尤其是纠结于各种单引号双引号的转义问题。有时很难捋清楚。

如果使用模板引擎,就丝毫不会出现这种纠结。

 

先贴Github地址: https://github.com/zengohm/JTemplate

Github中有压缩和未压缩两个版本。包含有测试页面,测试页面里面有模板最基本的使用方法。 

 

现在在介绍一下模板:

1、模板以HTML的注释形式出现,所以不会影响到整个页面显示。

    模板的格式为:

     <!--[模板名[  模板内容,可换行  ]]-->

2、模板可以出现在HTML中的任何位置,但是不可以有重名模板。

3、使用模板需要在JTemplate文件和模板都载入完成后才能使用。

4、模板中使用的变量全部来自$JT函数的第二个参数。

  例如 {startString:'Start'}

      在模板中$startString的值即为'Start'

5、使用变量时,需要在前面增加$符号。

6、模板中使用模板语言时,需要用<#  和 #>进行定界。

7、模板语言除了增加echo 作为输出关键字以外,其他都与javascript语法相同。

8、$JT函数返回字符串,需要通过JS添加字符串到相应的地方。

 

最后来看看模板使用的代码:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
<title>JTemplate - Test</title>
<!-- 引入JTemplate文件 -->
<script type="text/javascript" src="https://files.cnblogs.com/zohm/JTemplate.min.js"></script>
</head>
<body>
<div id="displayBlock"></div>
<!--[TestTemplate[
<h4>输出字符串</h>
           <p>在模板中使用变量需要在变量名前加$符号</p>
           <# echo $startString #>

           <h4>If-Else条件</h4>
           <# if(false){ #>
            False!
           <# }else if(true){ #>
            True!
           <# } #>

           <h4>For循环<h4>
           <p>此处fruits是调用时,第二个参数中的成员变量</p>
           <ul>
            <# for($i=0;$i<$fruits.length;$i++){ #>
            <li><# echo $fruits[$i] #></li>
           <# } #>
           </ul>
]]--
>
<script type="text/javascript">
           var jsonCode = {startString:'Start!',fruits:['Apple','Pear','Orange']};
           //使用$JT来调用模板引擎,第一个参数为模板名称(和后面模板中名称相同),第二个参数为模板中使用的变量,以关联数组的Key为变量名,Value为值
           document.getElementById('displayBlock').innerHTML = $JT('TestTemplate',jsonCode);
</script>
</body>
</html>

这里是页面的执行结果:

 

如果是写过Javascript的同学应该很容易看明白JTemplate的使用方法。

特别提醒一点,Github中的未压缩版本附带有debug代码,如果模板有错误,JTemplate会通过Console.log把错误打印到控制台。

但是压缩版就不带有这个特性了。如果发生错误,就会返回空字符串。

 

好了,关于JTemplate,我就不再多介绍了,更多的新特性可以自己去发现。

 

posted @ 2012-12-23 03:58  破鱼缸  阅读(1222)  评论(0编辑  收藏  举报