7.4 KiB
Lo-Dash v0.2.0
Lo-Dash, from the devs behind jsPerf.com, is a drop-in replacement for Underscore.js that delivers performance improvements, bug fixes, and additional features.
Lo-DashÕs performance is gained by avoiding slower native methods, instead opting for simplified non-ES5 compliant methods optimized for common usage, and by leveraging function compilation to reduce the number of overall function calls.
Dive in
WeÕve got API docs and unit tests.
UnderscoreÕs documentation may also be used.
For a list of upcoming features, check out our roadmap.
Screencasts
For more information check out these screencasts over Lo-Dash:
Features
- AMD loader support
- _.bind supports "lazy" binding
- _.debounceÕed functions match _.throttleÕed functionsÕ return value behavior
- _.forEach is chainable
- _.groupBy accepts a third
thisArgargument - _.partial for more functional fun
- _.size returns the
lengthof a string value
Support
Lo-Dash has been tested in at least Chrome 5-19, Firefox 1.5-12, IE 6-9, Opera 9.25-11.64, Safari 3.0.4-5.1.3, Node.js 0.4.8-0.6.18, Narwhal 0.3.2, RingoJS 0.8, and Rhino 1.7RC3.
Custom builds
Custom builds make it easy to create lightweight versions of Lo-Dash containing only the methods you need. We handle all the method dependency and alias mapping for you.
Custom builds may be created in two ways:
- Use the
includeargument to pass the names of the methods to include in the build.
node build include=each,filter,map,noConflict
node build include="each, filter, map, noConflict"
- Use the
excludeargument to pass the names of the methods to exclude from the build.
node build exclude=isNaN,union,zip
node build exclude="isNaN, union, zip"
Custom builds are saved to lodash.custom.js and lodash.custom.min.js.
Installation and usage
In browsers:
<script src="lodash.js"></script>
Using npm:
npm install lodash
In Node.js and RingoJS v0.8.0+:
var _ = require('lodash');
In Narwhal and RingoJS v0.7.0-:
var _ = require('lodash')._;
In Rhino:
load('lodash.js');
In an AMD loader like RequireJS:
// Lo-Dash is defined as an anonymous module so, through path mapping, it can be
// referenced as the "underscore" module
require({
'paths': {
'underscore': 'path/to/lodash'
}
},
['underscore'], function(_) {
console.log(_.VERSION);
});
Cloning this repo
To clone this repository including all submodules, using Git 1.6.5 or later:
git clone --recursive https://github.com/bestiejs/lodash.git
cd lodash.js
For older Git versions, just use:
git clone https://github.com/bestiejs/lodash.git
cd lodash
git submodule update --init
Closed Underscore issues
- Fix Firefox, IE, Opera, and Safari object iteration bugs #376
- Handle arrays with
undefinedvalues correctly in IE < 9 #601 - Methods should work on pages with incorrectly shimmed native methods #7
- Register as AMD module, but still export to global #431
_.forEachshould be chainable #142_isNaN(new Number(NaN))should returntrue_.reduceRightshould pass correct callback arguments when iterating objects_.sizeshould return thelengthof a string value
Optimized methods (50+)
_.bind_.bindAll_.clone_.compact_.contains,_.include_.defaults_.defer_.difference_.each_.escape_.every,_.all_.extend_.filter,_.select_.find,_.detect_.flatten_.forEach,_.each_.functions,_.methods_.groupBy_.indexOf_.intersection,_.intersect_.invoke_.isEmpty_.isEqual_.isFinite_.isObject_.isString_.keys_.lastIndexOf_.map,_.collect_.max_.memoize_.min_.mixin_.pick_.pluck_.reduce,_.foldl,_.inject_.reject_.result_.shuffle_.some,_.any_.sortBy_.sortedIndex_.template_.throttle_.toArray_.union_.uniq,_.unique_.values_.without_.wrap_.zip- plus all
_(...)method wrappers
Changelog
v0.2.0
- Added custom build options
- Added default
_.templateSettings.variablevalue - Added "lazy bind" support to
_.bind - Added native method overwrite detection to avoid bad native shims
- Added support for more AMD build optimizers and aliasing as the "underscore" module
- Added
thisArgto_.groupBy - Added whitespace to compiled strings
- Added
_.partial - Commented the
iterationFactoryoptions object - Ensured
_.maxand_.minsupport extremely large arrays - Fixed IE < 9
[DontEnum]bug and Firefox < 3.6, Opera > 9.50 - Opera < 11.60, and Safari < 5.1Õs prototype property iteration bug - Inlined
_.isFunctioncalls. - Made
_.debounceÕed functions match_.throttleÕed functionsÕ return value behavior - Made
_.escapeno longer translate the ">" character - Fixed
clearTimeouttypo - Simplified all methods in the "Arrays" category
- Optimized
_.debounce,_.escape,_.flatten,_.forEach,_.groupBy,_.intersection,_.invoke,_.isObject,_.max,_.min,_.pick,_.shuffle,_.sortedIndex,_.template,_.throttle,_.union,_.uniq
v0.1.0
- Initial release
BestieJS
Lo-Dash is part of the BestieJS "Best in Class" module collection. This means we promote solid browser/environment support, ES5 precedents, unit testing, and plenty of documentation.