`
yuyongkun4519
  • 浏览: 44853 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

简单实用的js模板引擎

阅读更多
简单实用的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模板引擎从无到有

    本篇文章将深入探讨如何从零开始构建一个简单的JavaScript模板引擎,逐步改进并理解其核心原理。 首先,我们需要理解模板引擎的基本工作流程。模板引擎接受两部分输入:数据和模板。模板通常是一段包含占位符的HTML...

    简单小巧js模板引擎

    比较简单,又小巧的js模板引擎,非常好用的。

    tstemplate一个基于模板字符串的模板引擎的最简实现只适用于node环境

    综上所述,tstemplate是一个基于JavaScript模板字符串的简单模板引擎,专为Node.js环境设计,适用于快速、轻量级的服务器端渲染需求。如果需要更复杂的功能或更广泛的应用场景,开发者可能需要寻找其他更成熟的模板...

    简单的前端模板引擎能实现最基本的数据渲染

    例如,Mustache和Handlebars是两个流行的JavaScript模板引擎,它们提供了丰富的语法结构,如`{{#if}}...{{/if}}`(条件判断)和`{{#each}}...{{/each}}`(循环遍历数组)。 总的来说,前端模板引擎是前端开发中不可...

    JS 模板引擎

    4. **Underscore.js/Lodash**:这两个库提供了简单的模板功能,它们的核心是JavaScript utility belt,但同时也包含模板引擎。 5. **Nunjucks**:灵感来源于Django模板语言,提供了一套丰富的模板语言,包括继承、...

    基于JavaScript的模板引擎

    JavaScript模板引擎种类繁多,每种都有其独特的特点和适用场景。例如: 1. **Mustache**:这是一种逻辑less的模板引擎,遵循“逻辑不可见”的原则,避免在模板中出现复杂的条件判断和循环。它的语法简洁,跨语言,...

    几款前端模板引擎合集.zip

    tpl.js是一款轻量级的JavaScript模板引擎,它的设计目标是简单易用。tpl支持基本的模板语法,如变量替换、条件判断和循环,适合小型项目或快速原型开发。 4. BaiduTemplate BaiduTemplate是由百度开发的模板引擎,...

    百度JS模板引擎 baiduTemplate 1.0.6 版

    百度JS模板引擎,简称baiduTemplate,是一个由百度公司开发的JavaScript模板引擎,主要用于前端开发中数据与HTML的绑定,实现动态内容的渲染。在1.0.6版中,百度Template进行了重构,修复了定义变量的bug,并且增加...

    mustache.js v2.2.1强大的Javascript模板引擎

    mustache.js是一个简单强大的Javascript模板引擎,使用它可以简化在js代码中的html编写,压缩后只有9KB,非常值得在项目中使用。 本资源包含了mustache.js 、mustache.min.js包 版本号v2.2.1

    mustache.js javascript模板引擎

    **Mustache.js:JavaScript模板引擎详解** Mustache.js,又称为mustache,是一款轻量级且功能强大的模板引擎,专为JavaScript设计。它遵循“逻辑less”的理念,将视图和数据分离,使得代码更易于理解和维护。...

    templatejs的webpakc编译loader一款javascript模板引擎

    Template.js作为JavaScript模板引擎,具有以下优点: - **简洁的语法**:它的模板语法简单直观,易于学习和使用。 - **高效性能**:通过预编译模板为JavaScript函数,可以在运行时快速生成HTML,提高页面渲染速度。 ...

    JavaScript模板引擎Mustache.zip

    基于javascript 实现的模板引擎,类似于 Microsoft’s jQuery template plugin,但更简单易用! 标签:Mustache

    基于jQuery开发的javascript模板引擎-jTemplates

    **基于jQuery开发的JavaScript模板引擎——jTemplates** jTemplates是一个基于jQuery的JavaScript模板引擎,它允许开发者使用HTML标记和简单的语法来创建动态数据驱动的页面。这个强大的工具可以帮助前端工程师将...

    Javascript最简单的模板引擎

    总的来说,JavaScript模板引擎是提高前端开发效率的重要工具,它们通过分离数据和视图,使代码更具可读性和可维护性。开发者可以根据项目的需求,从众多模板引擎中挑选最适合的一个,以实现高效、优雅的动态内容渲染...

    wu.tmpl.js, 高性能模板引擎 (js template).zip

    ** Wu_TMPL.js:高性能JavaScript模板引擎概述** `Wu.tmpl.js` 是一款高性能的JavaScript模板引擎,专为Web开发设计,旨在提高前端数据渲染的效率和灵活性。这款开源库允许开发者通过简单的模板语法来生成动态HTML...

    artTemplate模板引擎

    总之,ArtTemplate是一款优秀的JavaScript模板引擎,它凭借其出色的性能、安全的渲染方式和简单易用的特性,成为了前端开发者的得力工具。无论是在小型项目还是大型复杂应用中,都能看到ArtTemplate的身影。

    JavaScript的mustache模板引擎的一个极其快速和小的子实现

    Mustache模板引擎的核心特点是其双大括号`{{ }}`语法,用于插入变量或执行简单的逻辑。 在给定的标题"JavaScript的mustache模板引擎的一个极其快速和小的子实现"中,我们可以推断这里提到的是一个轻量级的、高效的...

    只有 20 行的 JavaScript 模板引擎实例详解

    总结起来,这个20行的JavaScript模板引擎实例展示了如何使用正则表达式解析模板字符串,以及如何通过`Function`构造函数动态生成代码并执行,从而实现了动态数据绑定和简单的逻辑控制。尽管这个简单的实现可能无法...

    常用的JavaScript模板引擎介绍

    其次是doT.js,这是一款专为浏览器和Node.js环境设计的JavaScript模板引擎。它提供了强大的模板功能,允许开发者定义块和部分模板,通过使用简单的语法来创建复用的模板片段。doT.js能够很好地处理循环和条件语句,...

Global site tag (gtag.js) - Google Analytics