Underscore.js常用方法总结(3)

该方法接受一系列函数作为参数,由后向前依次运行,上一个函数的运行结果,作为后一个函数的运行参数。也就是说,将f(g(),h())的形式转化为f(g(h()))。

复制代码 代码如下:


var greet    = function(name){ return "hi: " + name; };  var exclaim  = function(statement){ return statement + "!"; };  var welcome = _.compose(exclaim, greet);  welcome('moe');  // 'hi: moe!'

工具方法

template

该方法用于编译HTML模板。它接受三个参数。

复制代码 代码如下:


_.template(templateString, [data], [settings])


三个参数的含义如下:

templateString:模板字符串
data:输入模板的数据
settings:设置
 

templateString

模板字符串templateString就是普通的HTML语言,其中的变量使用<%= … %>的形式插入;data对象负责提供变量的值。

复制代码 代码如下:


var txt = "

<%= word %>

复制代码 代码如下:


";    _.template(txt, {word : "Hello World"})  // "


Hello World

复制代码 代码如下:


"


如果变量的值包含五个特殊字符(& < > ” ‘ /),就需要用<%- … %>转义。

复制代码 代码如下:


var txt = "


<%- word %>

复制代码 代码如下:


";    _.template(txt, {word : "H & W"})  //


H & W

JavaScript命令可以采用<% … %>的形式插入。下面是判断语句的例子。

复制代码 代码如下:


var txt = "<% var i = 0; if (i<1){ %>"          + "<%= word %>"          + "<% } %>";    _.template(txt, {word : "Hello World"})  // Hello World


常见的用法还有循环语句。

复制代码 代码如下:


var list = "<% _.each(people, function(name) { %>


<%= name %> <% }); %>”;    _.template(list, {people : [‘moe', ‘curly', ‘larry']});  // “
moe
curly
larry”
如果template方法只有第一个参数templateString,省略第二个参数,那么会返回一个函数,以后可以向这个函数输入数据。

复制代码 代码如下:


var t1 = _.template("Hello <%=user%>!");      t1({ user: "" })   // 'Hello !'

data

templateString中的所有变量,在内部都是obj对象的属性,而obj对象就是指第二个参数data对象。下面两句语句是等同的。

复制代码 代码如下:


_.template("Hello <%=user%>!", { user: "" })  _.template("Hello <%=obj.user%>!", { user: "" })


如果要改变obj这个对象的名字,需要在第三个参数中设定。

复制代码 代码如下:


_.template("<%if (data.title) { %>Title: <%= title %><% } %>", null,                  { variable: "data" });


因为template在变量替换时,内部使用with语句,所以上面这样的做法,运行速度会比较快。

您可能感兴趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wgfddf.html