Underscore.js 是一个由 Jeremy Ashkenas 开发的 JavaScript 库,它提供了许多作为开发者的我们在开发 Web 项目所需要的实用功能。
它使代码变得更加易读:
1 2 |
_.isEmpty({}); // true |
它使代码更容易编写:
1 2 |
_.flatten([[0, 1], [2, 3], [4, 5]]); // [0, 1, 2, 3, 4, 5] |
它提供了原生所没有的方法:
1 2 |
_.range(5); // [0, 1, 2, 3, 4] |
它自身甚至可以作为模板引擎:
1 2 |
_.template('<p><%= text %></p>', {text: 'SitePoint Rocks!'}); // <p>SitePoint Rocks!</p> |
Underscore 是一个轻量级的库(minify和gzip压缩后只有5.7 kb),并且被许多知名项目所用,如:
现在我们开始更具体,更深入的讨论它的主要功能。
重要部分
在本教程中,我要强调 Underscored 的三个最常用的方法:
我将分别解释它们是如何使用,然后用它们一起编写一个 Demo,Demo 你可以找到在教程最后找到。与以往一样,这个 Demo 的代码会放在 Github 上。
如果你想跟着例子练习,你需要一份 Underscore 库。你可以从,比如你所喜爱的 CDN 处获取:
1 |
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script> |
一路走来如果发现自己需要帮助,或者你想要了解更多,不要忘了还有内容更广泛的 Underscore官方文档。它还有一个庞大而活跃的社区,意味着很容易得到其他人帮助。
_.each
:写看得懂的循环
任何一个项目都会有类似于此片段的代码:
1 2 3 4 |
var artists = ['Pharrel Williams', 'Led Zeppelin', 'Rolling Stones']; for(var i = 0; i < artists.length; i++) { console.log('artist: ' + artists[i]); } |
Underscore 能够使你用更具可读性的方式编写像这样的代码,:
1 2 3 4 |
var artists = ['Pharrel Williams', 'Led Zeppelin', 'Rolling Stones']; _.each(artists, function(artist, index, artists) { console.log('artist: ' + artist); }); |
很赞不是吗?_.each()
接受两个参数:
- 需要遍历的 Array(或者Object)
- 回调函数
对于 Array 中每一个元素(文档中称为 iteratee
),_.each()都将调用回调函数。在回调函数中我们可以访问三个参数:
- 当前迭代的数组元素(
artist
)的值。例如,对于上面的代码段,在第一次迭代我们会得到“Pharrel Williams”这个值 - 当前迭代的序号(索引),在我们的这个例子下,是从0到2的数
- 被迭代的数组本身(
artists
)
正如你所看到这样,代码更易读,我们不需要像之前提到的for
循环那样使用artist[i]
就可以轻松访问数组中的各个元素。
See the Pen _.each by SitePoint (@SitePoint) on CodePen.
_.template: 简单直白
由于单页应用的兴起,一个可靠的前端模板引擎已经成为工作栈中基本的需要。
Underscore 提供了一个模板引擎,这对于那些熟悉如 PHP 或 Ruby on Rails 语言的人来说可能非常熟悉。
从我们上面的代码片段继续,我们来演示_.template()
是如何工作的。添加如下几行代码
1 2 3 4 5 6 7 8 9 10 11 12 |
var artists = ['Led Zeppelin', 'ACDC', 'Rolling Stones'], artpelin', 'ACDC', 'Rolling Stones'], art a href="http://underscorejs.org" target="_blank">Underscore.js 是一个由 Jeremy Ashkenas 开发的 JavaScript 库,它提供了许多作为开发者的我们在开发 Web 项目所需要的实用功能。
它使代码变得更加易读:
它使代码更容易编写:
它提供了原生所没有的方法:
它自身甚至可以作为模板引擎:
Underscore 是一个轻量级的库(minify和gzip压缩后只有5.7 kb),并且被许多知名项目所用,如: 现在我们开始更具体,更深入的讨论它的主要功能。 重要部分在本教程中,我要强调 Underscored 的三个最常用的方法: 我将分别解释它们是如何使用,然后用它们一起编写一个 Demo,Demo 你可以找到在教程最后找到。与以往一样,这个 Demo 的代码会放在 Github 上。 如果你想跟着例子练习,你需要一份 Underscore 库。你可以从,比如你所喜爱的 CDN 处获取:
一路走来如果发现自己需要帮助,或者你想要了解更多,不要忘了还有内容更广泛的 Underscore官方文档。它还有一个庞大而活跃的社区,意味着很容易得到其他人帮助。
|
1 2 3 4 |
var artists = ['Pharrel Williams', 'Led Zeppelin', 'Rolling Stones']; for(var i = 0; i < artists.length; i++) { console.log('artist: ' + artists[i]); } |
Underscore 能够使你用更具可读性的方式编写像这样的代码,:
1 2 3 4 |
var artists = ['Pharrel Williams', 'Led Zeppelin', 'Rolling Stones']; _.each(artists, function(artist, index, artists) { console.log('artist: ' + artist); }); |
很赞不是吗?_.each()
接受两个参数:
- 需要遍历的 Array(或者Object)
- 回调函数
对于 Array 中每一个元素(文档中称为 iteratee
),_.each()都将调用回调函数。在回调函数中我们可以访问三个参数:
- 当前迭代的数组元素(
artist
)的值。例如,对于上面的代码段,在第一次迭代我们会得到“Pharrel Williams”这个值 - 当前迭代的序号(索引),在我们的这个例子下,是从0到2的数
- 被迭代的数组本身(
artists
)
正如你所看到这样,代码更易读,我们不需要像之前提到的for
循环那样使用artist[i]
就可以轻松访问数组中的各个元素。
See the Pen _.each by SitePoint (@SitePoint) on CodePen.
_.template: 简单直白
由于单页应用的兴起,一个可靠的前端模板引擎已经成为工作栈中基本的需要。
Underscore 提供了一个模板引擎,这对于那些熟悉如 PHP 或 Ruby on Rails 语言的人来说可能非常熟悉。
从我们上面的代码片段继续,我们来演示_.template()
是如何工作的。添加如下几行代码
1 2 3 4 5 6 7 8 9 10 11 12 |
var artists = ['Led Zeppelin', 'ACDC', 'Rolling Stones'], art 行编号"> |