underscore.js 是一个工具函数库,可以用在浏览器端,也可以用在node.js中。
underscore是一个JavaScript实用库,提供了一整套函数式编程的实用功能,但是没有扩展任何JavaScript内置对象,而是像jQuery一样,将数据封装在一个自定义对象中。它弥补了部分jQuery没有实现的功能,同时又是Backbone.js必不可少的部分。
Underscore提供了100多个函数,包括常用的: map, filter, invoke — 当然还有更多专业的辅助函数,如:函数绑定, JavaScript模板功能,创建快速索引, 强类型相等测试, 等等.
underscore.js的简单使用
underscore.js文档详细介绍了每个函数的使用方法,下面具体说明一下
1、zip _.zip(*arrays)
和 unzip _.unzip(*arrays)
var _ = require('underscore');
var names = ['Tom', 'Jack', 'Gina'];
var ages = [23, 17, 34];
var genders = ['男', '男', '女'];
// zip 将 每个arrays中相应位置的值合并在一起。
var result = _.zip(names, ages, genders);
console.log(result);
// unzip与zip功能相反的函数,给定若干arrays,返回一串联的新数组,
// 新数组第一元素包含所有的输入数组的第一元素,其第二包含了所有的第二元素,依此类推。
result = _.unzip(result);
console.log(result);
node命令运行该js文件
2、template _.template(templateString, [settings])
将 JavaScript 模板编译为可以用于页面呈现的函数, 对于通过JSON数据源生成复杂的HTML并呈现出来的操作非常有用。
(1)使用 <%= … %>插入变量
var _ = require('underscore');
// 声明一段HTML模板代码
var html = '<h2><%= name %></h2>';
// template() 函数返回的依然是一个函数
var fn = _.template(html);
// 调用 template() 返回的这个函数 fn
// fn 接收一个数据对象, 并用该数据对象,将 html 中的模板内容替换, 生成最终的 HTML代码
html = fn({name: 'Tom'});
console.log(html);
// fn 函数的源代码
// function fn(data) {
// return render.call(this, data, _);
// }
(2)使用<% … %>执行任意的 JavaScript 代码
var _ = require('underscore');
// 声明一段HTML模板代码
var html = '<ul><% for(var i = 0; i < 5; i++) { %><li>underscore.js的template()函数</li><% } %></ul>';
// template() 函数返回的依然是一个函数
var fn = _.template(html);
// 调用 template() 返回的这个函数 fn
html = fn();
console.log(html);