时间:2021-05-26
/***Template.class.js***/
functionTemplate()
{
this.classname="Template";
this.debug=false;
this.file=newHashMap();
this.root="";
this.varkeys=newHashMap();
this.varvals=newHashMap();
this.unknowns="remove";
this.halt_on_error="yes";
this.last_error="";
this.fso=newActiveXObject("Scripting.FileSystemObject");
this.set_root=_set_root;
this.set_unknowns=_set_unknowns;
this.get_var=_get_var;
this.set_file=_set_file;
this.set_var=_set_var;
this.set_block=_set_block;
this.subst=_subst;
this.parse=_parse;
this.p=_p;
this.pparse=_pparse;
this.finish=_finish;
this.loadfile=_loadfile;
this.is_dir=_is_dir;
this.file_exists=_file_exists;
this.filename=_filename;
this.varname=_varname;
this.halt=_halt;
this.haltmsg=_haltmsg;
}
/**
*设置模板文件根目录
*@paramroot
*/
function_set_root(root)
{
if(!this.is_dir(root))
{
this.halt("set_root:"+root+"isnotadirectory.");
}
this.root=root;
}
/**
*设定对未知模板变量的处理办法
*@paramunknowns
*/
function_set_unknowns(unknowns)
{
this.unknowns=unknowns;
}
/**
*设定模板文件
*@paramhandle
*@paramfilename
*/
function_set_file(handle,filename)
{
this.file.put(handle,this.filename(filename));
}
/**
*设定模板变量
*@paramvarname
*@paramvalue
*/
function_set_var(varname,value)
{
if(!this.varkeys.containsKey(varname))
{
this.varkeys.put(varname,this.varname(varname));
}
if(!this.varvals.containsKey(varname))
{
this.varvals.put(varname,value);
}
else
{
this.varvals.remove(varname);
this.varvals.put(varname,value);
}
//alert(varname+"=================="+value);
}
/**
*设定块变量
*@paramparent
*@paramhandle
*@paramname
*/
function_set_block(parent,handle,name)
{
if(!this.loadfile(parent))
{
this.halt("subst:unabletoload"+parent);
}
if(name=="")
{
name=handle;
}
varstr=this.get_var(parent);
varre=newRegExp("<!--\\s+BEGIN"+handle+"\\s+-->([\\s\\S.]*)<!--\\s+END"+handle+"\\s+-->");
//Matcherm=p.matcher(str);
//varrs=m.find();
//vart=m.group(m.groupCount());
//this.set_var(handle,t);
vararr=re.exec(str);
if(arr!=null)
this.set_var(handle,RegExp.$1);
str=str.replace(re,"{"+name+"}");
this.set_var(parent,str);
}
/**
*进行变量替换
*@paramhandle
*@return
*/
function_subst(handle)
{
if(!this.loadfile(handle))
{
this.halt("subst:unabletoload"+handle);
}
varstr=this.get_var(handle);
varkeys=this.varkeys.keySet();
//alert(keys.length);
for(vari=0;i<keys.length;i++)
{
varkey=keys[i];
varre=newRegExp(this.varkeys.get(key),"g")
str=str.replace(re,this.varvals.get(key));
}
//alert(handle+"++++++++++++++++++"+str);
returnstr;
}
/**
*进行变量复制
*@paramtarget
*@paramhandle
*@paramappend
*/
function_parse(target,handle,append)
{
varstr=this.subst(handle);
if(append)
{
this.set_var(target,this.get_var(target)+str);
}
else
{
this.set_var(target,str);
}
}
/**
*返回替换后的文件
*@paramvarname
*@return
*/
function_p(varname)
{
returnthis.finish(this.get_var(varname));
}
/**
*parse()和p()的合并
*@paramtarget
*@paramhandle
*@paramappend
*@return
*/
function_pparse(target,handle,append)
{
this.parse(target,handle,append);
document.writeln(this.p(target));
}
/**
*加载模板文件
*@paramhandle
*@return
*/
function_loadfile(handle)
{
if(this.varkeys.containsKey(handle)&&this.varvals.get(handle)!=null)
{
returntrue;
}
if(!this.file.containsKey(handle))
{
_halt("loadfile:"+handle+"isnotavalidhandle.");
returnfalse;
}
varfilename=this.file.get(handle);
if(!this.file_exists(filename))
{
this.halt("loadfile:whileloading"+handle+","+filename+"doesnotexist.");
returnfalse;
}
try
{
varfr=this.fso.OpenTextFile(filename);
vars=fr.ReadAll();
if(s=="")
{
halt("loadfile:whileloading"+handle+","+filename+"isempty.");
returnfalse;
}
this.set_var(handle,s);
}
catch(e)
{
}
returntrue;
}
/**
*获取变量
*@paramvarname
*@return
*/
function_get_var(varname)
{
if(this.varvals.containsKey(varname))
returnthis.varvals.get(varname);
else
return"";
}
/**
*判断目录
*@parampath
*@return
*/
function_is_dir(path)
{
if(this.fso.FolderExists(path))
returntrue;
else
returnfalse;
}
/**
*判断文件
*@paramfilename
*@return
*/
function_file_exists(filename)
{
if(this.fso.FileExists(filename))
returntrue;
else
returnfalse;
}
/**
*文件名处理
*@paramfilename
*@return
*/
function_filename(filename)
{
if(!this.file_exists(this.root+filename))
{
this.halt("filename:file"+filename+"doesnotexist.");
}
returnthis.root+filename;
}
/**
*变量名处理
*@paramvarname
*@return
*/
function_varname(varname)
{
return"{"+varname+"}";
}
/**
*完成字符串的处理
*@paramstr
*@return
*/
function_finish(str)
{
varre=newRegExp("{[^\\t\\r\\n\\}]+\\}","g");
if(this.unknowns=="remove")
{
str=str.replace(re,"");
}
elseif(this.unknowns=="comment")
{
str=str.replace(re,"<!--TemplateVariableundefined-->");
}
else
{
}
returnstr;
}
function_halt(msg)
{
this.last_error=msg;
if(this.halt_on_error!="no")
{
_haltmsg(msg);
}
if(this.halt_on_error=="yes")
{
alert("Halted.");
//System.exit(0);
}
}
function_haltmsg(msg)
{
alert("TemplateError:"+msg);
}
/**
*HashMap构造函数
*/
functionHashMap()
{
this.length=0;
this.prefix="hashmap_prefix_20050524_";
}
/**
*向HashMap中添加键值对
*/
HashMap.prototype.put=function(key,value)
{
this[this.prefix+key]=value;
this.length++;
}
/**
*从HashMap中获取value值
*/
HashMap.prototype.get=function(key)
{
returntypeofthis[this.prefix+key]=="undefined"
?null:this[this.prefix+key];
}
/**
*从HashMap中获取所有key的集合,以数组形式返回
*/
HashMap.prototype.keySet=function()
{
vararrKeySet=newArray();
varindex=0;
for(varstrKeyinthis)
{
if(strKey.substring(0,this.prefix.length)==this.prefix)
arrKeySet[index++]=strKey.substring(this.prefix.length);
}
returnarrKeySet.length==0?null:arrKeySet;
}
/**
*从HashMap中获取value的集合,以数组形式返回
*/
HashMap.prototype.values=function()
{
vararrValues=newArray();
varindex=0;
for(varstrKeyinthis)
{
if(strKey.substring(0,this.prefix.length)==this.prefix)
arrValues[index++]=this[strKey];
}
returnarrValues.length==0?null:arrValues;
}
/**
*获取HashMap的value值数量
*/
HashMap.prototype.size=function()
{
returnthis.length;
}
/**
*删除指定的值
*/
HashMap.prototype.remove=function(key)
{
deletethis[this.prefix+key];
this.length--;
}
/**
*清空HashMap
*/
HashMap.prototype.clear=function()
{
for(varstrKeyinthis)
{
if(strKey.substring(0,this.prefix.length)==this.prefix)
deletethis[strKey];
}
this.length=0;
}
/**
*判断HashMap是否为空
*/
HashMap.prototype.isEmpty=function()
{
returnthis.length==0;
}
/**
*判断HashMap是否存在某个key
*/
HashMap.prototype.containsKey=function(key)
{
for(varstrKeyinthis)
{
if(strKey==this.prefix+key)
returntrue;
}
returnfalse;
}
/**
*判断HashMap是否存在某个value
*/
HashMap.prototype.containsValue=function(value)
{
for(varstrKeyinthis)
{
if(this[strKey]==value)
returntrue;
}
returnfalse;
}
/**
*把一个HashMap的值加入到另一个HashMap中,参数必须是HashMap
*/
HashMap.prototype.putAll=function(map)
{
if(map==null)
return;
if(map.constructor!=JHashMap)
return;
vararrKey=map.keySet();
vararrValue=map.values();
for(variinarrKey)
this.put(arrKey[i],arrValue[i]);
}
//toString
HashMap.prototype.toString=function()
{
varstr="";
for(varstrKeyinthis)
{
if(strKey.substring(0,this.prefix.length)==this.prefix)
str+=strKey.substring(this.prefix.length)
+":"+this[strKey]+"\r\n";
}
returnstr;
}
<!--main.htm-->
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"
"http://E","欢迎光临");
for(vari=0;i<10;i++)
{
tmplt.set_var("cols","");
for(varj=0;j<10;j++)
{
tmplt.set_var("NUMBER",i+"."+j);
tmplt.parse("cols","BCOLS",true);
}
tmplt.parse("rows","BROWS",true);
}
tmplt.parse("HEAD","head",false);
tmplt.parse("FOOT","foot",false);
tmplt.pparse("out","fh",false);
</script>
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Handlebars是一个JavaScript页面模板库,帮助你轻松的构建语义化模板。复制代码代码如下:handlebars{{title}}{{body}}/
关于functmplfunctmpl是一个基于JavaScript/Nodejs的高扩展性的模板引擎模板格式如果想在一个模板中插入另一个模板,可以使用比如插入模
模板分离了数据与展现,使得展现的逻辑和效果更易维护。利用javascript的Function对象,一步步构建一个极其简单的模板转化引擎模板简介模板通常是指嵌入
spring整合JDBCspring提供了很多模板整合Dao技术ORM持久化技术模板类JDBCorg.springframework.Jdbc.core.Jdb
template.js一款JavaScript模板引擎,简单,好用。提供一套模板语法,用户可以写一个模板区块,每次根据传入的数据,生成对应数据产生的HTML片段