`
big_student
  • 浏览: 40304 次
  • 性别: Icon_minigender_1
  • 来自: 宝鸡
社区版块
存档分类
最新评论

underscore 模版使用

 
阅读更多

官网http://underscorejs.org/中介绍:

你可能用到 Prototype.js中提供的一些扩展,而underscore也是这样的javascript扩展的一个工具库,不同的是underscore扩展的不是js固有对象(Array, Date, String...),使用最多的地方就是和backbone(一种前台javascript版的mvc)协作使用。

这里只是简单介绍下underscore的模版使用方法,有好人已经对underscore进行了中文详细的注释,可到链接http://www.iteye.com/topic/1127861处查看下载。

代码中,有个正则配置

 

_.templateSettings = {

    evaluate    : /<%([\s\S]+?)%>/g,

    interpolate : /<%=([\s\S]+?)%>/g,

    escape      : /<%-([\s\S]+?)%>/g

  };

跟jsp中嵌入java代码有点像,evaluate标签中间的表示为可执行的js代码,interpolate表示输出一个js运行结果的值,escapte表示输出这个变量的值并且进行html标签过滤,将相关的字符如"<"转为"&lt;",比如

evaluate:如果xxx为true则输出字符串<div>xxx</div>

 

<%if(xxx){%>
       <div>xxx</div>
<%}%>

interpolate: 输出表达式结果,如果gender为0则返回字符串为<div>女</div>

 

 

<div>性别:<%= gender == 0 ? "女" : "男"%></div>

 

 

escape: 就是输出这个变量值,如果gender为0则返回字符串为<div>0</div>

<div>性别:<%- gender%></div>

 

 默认的标签使用过程中,可能会造成不便比如jsp中这样的字符串会与java代码冲突,这样我们只修改覆盖默认配置就行,下面就是将"<%%>"替换为“{}”

 

/**
 * underscore template settings
 */
  _.templateSettings = {
	evaluate    : /{([\s\S]+?)}/g,
	interpolate : /{=([\s\S]+?)}/g,
	escape      : /{-([\s\S]+?)}/g
};

 几个例子:

 

var tml = "<div class=\"dialog\" role=\"dialog\" {if(id){} id=\"{-id}\"{}}>" +
			"<div class=\"header\">" +
			"<span class=\"caption\">{-caption}</span>" +
			"{if(closable){}" +
				"<div class=\"button close\"><img src=\"images/close.gif\"/></div>" +
			"{}}</div>" +
			"<div class=\"content\"></div>" +
			"</div>";
tmp = _.template(tml, { id: "dialog1",     caption: "title",    closable: false} );		

 输出字符串为:<div class="dialog" role="dialog" id="dialog1"><div class="header"><span class="caption">title</span></div><div class="content"></div></div>

当然也可以使用underscore提供的forEach:

var tml = "<ul id={-id}>" +
		  "{_.forEach(data, function(item, i){}"+
				"<li>{-i}:{-item.name}</li>"+
		  "{})}"+
		  "</ul>";		
tmp = _.template(tml, {
	id:"students",
	data:[
		{name: "lily", gender: 0}, 
		{name: "lilei", gender: 1}, 
		{name: "jim", genger: 1}
	]	
});

 输出字符串结果为:<ul id=students><li>0:lily</li><li>1:lilei</li><li>2:jim</li></ul>

如果只是单纯想使用他的模版,可以把相关代码提出来http://blog.sina.com.cn/s/blog_842a3c1b0101etsn.html

 

分享到:
评论

相关推荐

    underscore-express:在Express中轻松使用Underscore模板

    下划线在Express中轻松使用Underscore模板。安装这个软件包在npm中注册为underscore-express ,所以很简单... npm install underscore-express ...会做的。用法在您的Express应用设置中... // To use the default '...

    underscore应用

    2. **模板引擎**:underscore的`_.template()`功能可以实现动态HTML模板,结合JavaScript表达式,轻松生成复杂页面结构。 3. **函数封装和优化**:通过`_.throttle()`和`_.debounce()`,可以优化事件监听器,避免...

    underscore-1.6.0.zip

    《深入理解JavaScript库:underscore-1.6.0》 underscore.js是一款轻量级的JavaScript实用库,它为JavaScript开发提供了大量的实用函数,极大地增强了原生JavaScript对象的处理能力。在"underscore-1.6.0.zip"这个...

    underscore1.5.2中文帮助

    - 随着现代浏览器对一些函数(如`forEach`、`map`、`reduce`、`filter`、`every`、`some`、`indexOf`)的原生支持,Underscore会优先使用这些原生函数,以提高性能。 - 为了优化性能,Underscore还提供了压缩版,...

    underscore源码学习计划

    _.template()是Underscore.js的一个特色,它允许开发者使用内联表达式和控制流语句来创建动态模板,简化HTML的生成。 七、源码解析 Underscore.js的源码清晰易读,通过研究源码,我们可以了解到JavaScript的一些...

    underscore-1.4.3.zip

    在实际开发中,Underscore.js常被用来处理数据、辅助模板渲染、实现复杂的逻辑控制等。例如,我们可以使用`_.each`遍历JSON数据,结合`_.filter`和`_.map`进行数据过滤和转换,再用`_.reduce`进行聚合计算。对于异步...

    Underscore.js 的模板功能介绍与应用

    Underscore.js 是一个强大的JavaScript库,它在不污染JavaScript原生对象的基础上提供了大量实用的函数,涵盖了数组、对象、...无论是小型项目还是大型应用,掌握Underscore.js的模板使用都是提高生产力的重要技能。

    underscore-template-strict-loader:不违反严格模式的Underscore模板的加载程序

    用于Webpack的Underscore.js模板加载器,可在严格模式下使用。 下划线模板默认情况下不使用严格模式,因为它们使用with(data)函数使您可以访问数据变量。 此插件的工作方式是在模板中的每个变量前面加上data....

    Underscore ,是js的一个实用库

    6. **模板引擎**:Underscore还包括一个简单的模板引擎,允许使用JavaScript语法在字符串中插入变量和表达式,如`_.template()`函数,这对于动态生成HTML或JSON数据非常有用。 在实际开发中,Underscore.js常与...

    koa-underscore-templates:使用Koa渲染underscore.js模板

    koa下划线模板 使用Koa渲染模板。 适用于Koa 2.x或更高版本。入门将此软件包添加为您的应用程序的中间件: const views = require ( 'koa-underscore-templates' ) ;app . use ( views ( __dirname + '/views' , { /...

    backbone_underscore_注释版

    在视图渲染时,也可能使用 Underscore 模板引擎来动态生成 HTML。 在实际项目中,你可以根据需求选择性地利用这两个库的功能,创建出结构清晰、可维护性高的前端应用。对于初学者来说,了解和掌握这两个库的使用...

    backbone.js underscore.js

    Backbone.js 和 Underscore.js 是两个在JavaScript开发中广泛使用的库,它们为构建复杂的Web应用程序提供了强大的工具。这两个库都是基于jQuery库,其中jQuery-1.10.2.js是jQuery的一个版本,它为DOM操作、事件处理...

    underscore-template-loader:用于Webpack的Underscore和Lodash模板加载器

    用于Webpack的Underscore.js和Lodash模板加载器 变更日志 * 1.1:通过`query`支持宏(thx @ JimYan,@ devlinjunker)* 1.0:Loader现在可与Webpack 4一起使用。 安装 npm install underscore-template-loader ...

    underscore-template:从 Underscore.js 中提取的模板引擎

    underscore.js 的模板引擎很小但很容易使用。 如果你不想使用整个 underscore.js 库但需要一个小巧、优雅的模板引擎,请考虑这个项目。 如何使用 下载库 包括图书馆 &lt; script type =" application/javascript " ...

    underscoreAPI文档(英文版pdf)

    ### Underscore.js API 文档概述 #### 一、引言 Underscore.js 是一个功能强大的 JavaScript 工具库,它提供了大量的函数式编程支持,...无论是初学者还是经验丰富的开发者,都可以从 Underscore 的使用中获益良多。

    ToEat.ly:CRUD w AJAX——Express 后端,Underscore 模板

    此项目主要使用 `Express.js` 作为后端框架,`Underscore.js` 用于模板引擎,提供动态渲染页面的能力。 **Express.js**: `Express.js` 是一个基于 `Node.js` 平台的极简、灵活的 web 应用程序开发框架,它为构建 ...

    underscore.js

    Underscore提供了80多个函数,包括常用的: map, select, invoke — 当然还有更多专业的辅助函数,如:函数绑定, JavaScript模板功能, 强类型相等测试, 等等. 在新的浏览器中, 有许多函数如果浏览器本身直接支持,将会...

    前端项目-underscore.string.zip

    1. **字符串格式化**:在JavaScript中,我们可以使用模板字符串或者_.template方法来实现简单的字符串格式化,但underscore.string提供了一个更为强大的`fmt`方法,允许我们像C语言的printf一样进行复杂的格式化操作...

Global site tag (gtag.js) - Google Analytics