underscore

Underscore.js 入门

青春壹個敷衍的年華 提交于 2020-04-05 23:43:30
1 Underscore对象封装 Underscore并没有在原生的JavaScript对象原型中进行扩展,而是像jQuery一样,将数据封装在一个自定义对象中(下文中称“Underscore对象”)。 你可以通过调用一个Underscore对象的value()方法来获取原生的JavaScript数据,例如: // 定义一个JavaScript内置对象 var jsData = { name : 'data' } // 通过_()方法将对象创建为一个Underscore对象 // underscoreData对象的原型中包含了Underscore中定义的所有方法,你可以任意使用 var underscoreData = _(jsData); // 通过value方法获取原生数据, 即jsData underscoreData.value(); 2 优先调用JavaScript 1.6内置方法 Underscore中有许多方法在JavaScript1.6中已经被纳入规范,因此在Underscore对象内部,会优先调用宿主环境提供的内置方法(如果宿主环境已经实现了这些方法),以此提高函数的执行效率。 而对于不支持JavaScript 1.6的宿主环境,Underscore会通过自己的方式实现,而对开发者来说,这些完全是透明的。 这里所说的宿主环境,可能是Node.js运行环境

【第三方类库】Underscore.js Version (1.2.3) 中文文档

拥有回忆 提交于 2020-04-05 23:03:48
Underscore.js Version (1.2.3) 中文文档 Underscore 一个非常实用的JavaScript库,提供许多编程功能的支持,就像你期望 Prototype.js (或者 Ruby ), 有这些功能且不扩展任何JavaScript的原生对象。 It's the tie to go along with jQuery 's tux. Underscore提供60多个方法,即有普通的功能,例如: map , select , invoke — 也有更多特殊的编程辅助方法,例如:函数绑定、javascript模板、绝对相等判断等待。 如果一些现代的浏览器提供了内置的 forEach , map , reduce , filter , every , some 和 indexOf 方法,Underscore就委托给浏览器原生的方法。 Underscore提供完整的 测试用例集 供你精读。 你也可以阅读有注释的 源代码 。 项目代码放在 GitHub 上,你可以通过 issues页 、Freenode的 #documentcloud 频道、发送tweets给 @documentcloud 三个途径报告bug以及参与特性讨论。 Underscore是 DocumentCloud 的一个开源组件。 下载 (Right-click, and use "Save As")

Underscore骨骼

柔情痞子 提交于 2020-04-05 22:24:33
上次写过一篇 QWrap骨骼 的文章,个人认为,想要了解一个库或框架,首先从他的核心思想入手,理解其思想,那么剩余的就仅仅是方法的堆砌。近年比较火的一个jsMVC框架 backbone 他的核心强依赖库为 underscore 。 抽空提取了一下他的骨骼,其实主要就是他的链式操作的实现,别个剩下的就是具体函数的实现了,当然对于Underscore函数式也是它的最大亮点,可以好好看下函数的实现。 <! DOCTYPE html > < html > < head > < title > Underscore骨骼 < / title> < / head> < body > < script type = " text/javascript " > // Underscore骨骼 ( function () { var root = this ; var breaker = {}; var ArrayProto = Array.prototype, ObjProto = Object.prototype; var nativeForEach = ArrayProto.forEach, nativeMap = ArrayProto.map, nativeFilter = ArrayProto.filter, nativeKeys = Object.keys; var slice =

数组转为对象

佐手、 提交于 2020-04-04 06:34:55
1.js里将两个数组转为对象,第一个数组为key,第二个为value。如[1,2,5]和[18,8,6]转换成对象{1:18,2:8,5:6}。 2.js里将多个数组转为对象,每个数组只有两个值,转成的对象以每个数组里的首位为key,第二位为value。如[a,1]和[b,2]、[c,3]转换成对象{a:1,b:2,c:3}。 只要使用underscore.js框架中的_.object方法就可以办到,不需要写复杂的for语句来遍历,具体实现如下: _.object(['moe', 'larry', 'curly'], [30, 40, 50]); => {moe: 30, larry: 40, curly: 50} _.object([['moe', 30], ['larry', 40], ['curly', 50]]); => {moe: 30, larry: 40, curly: 50} 以下是_.object()方法在underscore里的源码,如果项目没有引用underscore库,也可以像下面那样自己写for循环: _.object(list,values){ var result={}; for(var i=0;i<list.length;i++){ if(values){ result[list[i]]=values[i]; }else{ result[list[i

模块化加载require.js

扶醉桌前 提交于 2020-03-22 22:31:20
一、为什么要用require.js? 最早的时候,所有Javascript代码都写在一个文件里面,只要加载这一个文件就够了。后来,代码越来越多,一个文件不够了,必须分成多个文件,依次加载。下面的网页代码,相信很多人都见过。   <script src="1.js"></script>   <script src="2.js"></script>   <script src="3.js"></script>   <script src="4.js"></script>   <script src="5.js"></script>   <script src="6.js"></script> 这段代码依次加载多个js文件。 这样的写法有很大的缺点。首先,加载的时候,浏览器会停止网页渲染,加载文件越多,网页失去响应的时间就会越长;其次,由于js文件之间存在依赖关系,因此必须严格保证加载顺序(比如上例的1.js要在2.js的前面),依赖性最大的模块一定要放到最后加载,当依赖关系很复杂的时候,代码的编写和维护都会变得困难。 require.js的诞生,就是为了解决这两个问题:      (1)实现js文件的异步加载,避免网页失去响应;   (2)管理模块之间的依赖性,便于代码的编写和维护。 二、require.js的加载 使用require.js的第一步,是先去官方网站 下载 最新版本。

underscore.js源码解析(一)

落花浮王杯 提交于 2020-03-16 19:12:13
一直想针对一个框架的源码好好的学习一下编程思想和技巧,提高一下自己的水平,但是看过一些框架的源码,都感觉看的莫名其妙,看不太懂,最后找到这个underscore.js由于这个比较简短,一千多行,而且读起来容易一些,所以就决定是它了,那废话不多说开始我们的源码学习。 underscore.js源码GitHub地址: https://github.com/jashkenas/underscore/blob/master/underscore.js 本文解析的underscore.js版本是1.8.3 结构解析 我们先从整体的结构开始分析(其中加入了注释加以解释说明) 1 (function() { 2 // 创建一个root对象,在浏览器中表示为window(self)对象,在Node.js中表示global对象, 3 // 之所以用用self代替window是为了支持Web Worker 4 var root = typeof self == 'object' && self.self === self && self || 5 typeof global == 'object' && global.global === global && global || 6 this; 7 // 保存"_"(下划线变量)被覆盖之前的值 8 var previousUnderscore =

require.js的用法

北城以北 提交于 2020-03-03 00:15:55
一、为什么要用require.js? 最早的时候,所有Javascript代码都写在一个文件里面,只要加载这一个文件就够了。后来,代码越来越多,一个文件不够了,必须分成多个文件,依次加载。下面的网页代码,相信很多人都见过。 1 <script src="1.js"></script> 2 <script src="2.js"></script> 3 <script src="3.js"></script> 4 <script src="4.js"></script> 5 <script src="5.js"></script> 6 <script src="6.js"></script> 这段代码依次加载多个js文件。 这样的写法有很大的缺点。首先,加载的时候,浏览器会停止网页渲染,加载文件越多,网页失去响应的时间就会越长;其次,由于js文件之间存在依赖关系,因此必须严格保证加载顺序(比如上例的1.js要在2.js的前面),依赖性最大的模块一定要放到最后加载,当依赖关系很复杂的时候,代码的编写和维护都会变得困难。 require.js的诞生,就是为了解决这两个问题:   (1)实现js文件的异步加载,避免网页失去响应;   (2)管理模块之间的依赖性,便于代码的编写和维护。 二、require.js的加载 使用require.js的第一步,是先去官方网站 下载 最新版本。 下载后

underscore源码解析

淺唱寂寞╮ 提交于 2020-02-25 18:23:25
前言 underscore是最适合初级人士阅读的源码,在阅读源码时,有一些有趣的实现,记录如下。 基于underscore1.8.3。 留存root // Establish the root object, `window` (`self`) in the browser, `global` // on the server, or `this` in some virtual machines. We use `self` // instead of `window` for `WebWorker` support. var root = typeof self == 'object' && self.self === self && self || typeof global == 'object' && global.global === global && global || this || {}; // Save the previous value of the `_` variable. var previousUnderscore = root._; // ....... _.noConflict = function() { root._ = previousUnderscore; return this; }; 在浏览器情况下,self是window自身的引用

require.js的用法

夙愿已清 提交于 2020-02-22 13:00:23
require.js 是一个非常流行的库。 一、为什么要用require.js? 最早的时候,所有Javascript代码都写在一个文件里面,只要加载这一个文件就够了。后来,代码越来越多,一个文件不够了,必须分成多个文件,依次加载。下面的网页代码,相信很多人都见过。 <script src="1.js"></script> <script src="2.js"></script> <script src="3.js"></script> <script src="4.js"></script> <script src="5.js"></script> <script src="6.js"></script> 这段代码依次加载多个js文件。 这样的写法有很大的缺点。首先,加载的时候,浏览器会停止网页渲染,加载文件越多,网页失去响应的时间就会越长;其次,由于js文件之间存在依赖关系,因此必须严格保证加载顺序(比如上例的1.js要在2.js的前面),依赖性最大的模块一定要放到最后加载,当依赖关系很复杂的时候,代码的编写和维护都会变得困难。 require.js的诞生,就是为了解决这两个问题:      (1)实现js文件的异步加载,避免网页失去响应;   (2)管理模块之间的依赖性,便于代码的编写和维护。 二、require.js的加载 使用require.js的第一步,是先去官方网站

初学require.js

拈花ヽ惹草 提交于 2020-02-11 12:40:14
  引入require.js,可以解决的问题: (1)实现js文件的异步加载,避免网页失去响应; (2)管理模板之间的依赖性,便于代码的编写和维护。   它的模块管理遵循AMD规范(Asynchronous Module Definition - 异步加载模块规范);所谓AMD规范,就是为了解决模块化编程带来的代码加载先后顺序问题,以及常规为解决该阻塞问题方式带来的各种附加问题。    核心 是通过define方法将无序混乱代码分割为有序的模块,通过require方法实现代码的模块加载。 一、require.js的加载    把从官网下载的文件放在js目录下,按如下方式引用: <script src="js/require.js"></script>    加载这个文件,也可能造成网页失去响应。解决办法有两个,一个是把它放在网页底部加载,另一个是写成下面这样: <script src="js/require.js" defer async="true" ></script>    加载require.js以后,下一步就要加载我们自己的代码了。假定我们自己的代码文件是main.js,也放在js目录下面。那么,只需要写成下面这样就行了: <script src="js/require.js" data-main="js/main"></script>    data