博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js模板
阅读量:5289 次
发布时间:2019-06-14

本文共 2051 字,大约阅读时间需要 6 分钟。

参考连接:

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语法:

“<%= 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()的形式

转载于:https://www.cnblogs.com/zhangzs000/p/7447374.html

你可能感兴趣的文章
模运算
查看>>
python多线程的使用
查看>>
团队编程项目作业1-成员简介及分工
查看>>
使用Chrome(PC)调试移动设备上的网页
查看>>
UI基础--手写代码实现汤姆猫动画
查看>>
NSDictionary的几种遍历方法
查看>>
Java源码解析(附录)(5) —— WildcardType
查看>>
内核映像的形成 —— KBuild体系
查看>>
Python+pytesseract+Tesseract-OCR图片文字识别(只适合新手)
查看>>
使用gitbash来链接mysql
查看>>
docker镜像管理基础
查看>>
黑盒测试和百合测试的优缺点对比
查看>>
SecureCRT的使用方法和技巧(详细使用教程)
查看>>
装饰者模式
查看>>
C++二进制文件中读写bitset
查看>>
右侧导航栏(动态添加数据到list)
查看>>
用Nginx+Lua(OpenResty)开发高性能Web应用
查看>>
virtualbox不能安装64位操作系统
查看>>
gulp 入门---使用gulp压缩JS
查看>>
81、iOS本地推送与远程推送详解
查看>>