分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

js模板

发布时间:2023-09-06 01:06责任编辑:傅花花关键词:js

参考连接:

http://www.jiangkunlun.com/2012/05/js_%E6%A8%A1%E6%9D%BF/

http://www.360doc.com/content/16/0115/10/597197_528136785.shtml

核心是将模板代码转变成了一个拼接字符串的 function,每次拿数据 call 这个 function。

因为主要是给手机(webkit)用的,所以没有考虑字符串拼接的效率问题,如果需要给 IE 使用,最好将字符串拼接方法改为 Array.push() 的形式。

简单实用的js模板引擎

 

不足50行的js模板引擎,支持各种js语法:

<script id="test_list" type="text/html"><%=for(var i = 0, l = p.list.length; i < l; i++){var stu = p.list[i];=%><tr><td<%=if(i==0){=%> class="first"<%=}=%>><%==stu.name=%></td><td><%==stu.age=%></td><td><%==(stu.address || ‘‘)=%></td><tr> <%=}=%></script>

“<%= xxx =%>”内是js逻辑代码,“<%== xxx =%>”内是直接输出的变量,类似php的echo的作用。“p”是调用下面build方法时的k-v对象参数,也可以在调用“new JTemp”时设置成别的参数名

调用:

$(function(){var temp = new JTemp(‘test_list‘),html = temp.build({list:[ ??????????{name:‘张三‘, age:13, address:‘北京‘}, ???????{name:‘李四‘, age:17, address:‘天津‘}, ???????{name:‘王五‘, age:13} ???????]});$(‘table‘).html(html);});

上面的temp生成以后,可以多次调用build方法,生成html

一下是模板引擎的代码:

var JTemp = function(){function Temp(htmlId, p){p = p || {};//配置信息,大部分情况可以缺省this.htmlId = htmlId;this.fun;this.oName = p.oName || ‘p‘;this.TEMP_S = p.tempS || ‘<%=‘;this.TEMP_E = p.tempE || ‘=%>‘;this.getFun();}Temp.prototype = {getFun : function(){var _ = this,str = $(‘#‘ + _.htmlId).html();if(!str) _.err(‘error: no temp!!‘);var str_ = ‘var ‘ + _.oName + ‘=this,f=\‘\‘;‘,s = str.indexOf(_.TEMP_S),e = -1,p,sl = _.TEMP_S.length,el = _.TEMP_E.length;for(;s >= 0;){e = str.indexOf(_.TEMP_E);if(e < s) alert(‘:( ERROR!!‘);str_ += ‘f+=\‘‘ + str.substring(0, s) + ‘\‘;‘;p = _.trim(str.substring(s+sl, e));if(p.indexOf(‘=‘) !== 0){//js语句str_ += p;}else{//普通语句str_ += ‘f+=‘ + p.substring(1) + ‘;‘;}str = str.substring(e + el);s = str.indexOf(_.TEMP_S);}str_ += ‘f+=\‘‘ + str + ‘\‘;‘;str_ = str_.replace(/\n/g, ‘‘);//处理换行var fs = str_ + ‘return f;‘;this.fun = Function(fs);},build : function(p){return this.fun.call(p);},err : function(s){alert(s);},trim : function(s){return s.trim?s.trim():s.replace(/(^\s*)|(\s*$)/g,""); }};return Temp;}();

核心是将模板代码转变成了一个拼接字符串的function,每次拿数据call这个function。

因为主要是给手机(webkit)用的,所以没有考虑字符串拼接的效率问题,如果需要给IE实用,最好将字符串拼接方法改为Array.push()的形式

js模板

原文地址:http://www.cnblogs.com/zhangzs000/p/7447374.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved