前言 在業務開發過程當中,咱們常常會重複使用日期格式化、cookie 操做、模板、瀏覽器判斷、類型判斷等功能。爲了不不一樣項目之間進行復制粘貼,能夠將這些經常使用的函數封裝到一塊兒併發布 npm 包。在將近三年的前端開發工做中,筆者將本身平時用到的工具庫通通封裝到了一個項目中 Licia。目前所包含模塊已達三百個,基本能夠知足前端的平常工發需求。若是你對該項目感興趣,歡迎試用並幫忙持續改進:)
使用方法 1、安裝 npm 包 首先安裝 npm 包到本地。javascript
npm i licia --save
安裝完以後,你就能夠直接在項目中引用模塊了,就像使用 lodash 同樣。css
var uuid = require('licia/uuid'); console.log(uuid()); // -> 0e3b84af-f911-4a55-b78a-cedf6f0bd815
2、使用打包工具 該項目自帶打包工具 eustia,能夠經過配置文件或命令行掃描源碼自動生成項目專用的工具庫。html
npm i eustia -g
假設你想html文件中使用trim方法,先直接在代碼中使用:前端
<html> <head> <meta charset="utf-8"/> <title>Eustia</title> <script src="util.js"></script> </head> <body> <script> var projectName = _.trim(' Eustia '); // Some code... </script> </body> </html>
而後跑下命令:java
eustia build
該工具會掃描你的html代碼並生成一個util.js(默認文件名)文件,大功告成!
PS: 以前作的手機調試工具 eruda 源碼裏的 util.js 就是使用該工具生成的:)
3、使用在線工具生成 util 庫 你能夠直接訪問 https://eustia.liriliri.io/bu... 在輸入框輸入須要的工具函數(以空格分隔),而後點擊下載 util.js 文件並將該文件放入項目中去便可。
好比在小程序中你須要使用時間格式化,直接輸入 dateFormat 後將生成的 util.js 放入小程序源碼中,以後再在代碼裏引用:node
import { dateFormat } from './util.js'; dateFormat(1525764204163, 'yyyy-mm-dd HH:MM:ss'); // -> '2018-05-08 15:23:24'
支持模塊彙總 $ jQuery like style dom manipulator.
Available methods offset, hide, show, first, last, get, eq, on, off, html, text, val, css, attr, data, rmAttr, remove, addClass, rmClass, toggleClass, hasClass, append, prepend, before, afterjquery
var $btn = $('#btn'); $btn.html('eustia'); $btn.addClass('btn'); $btn.show(); $btn.on('click', function () { // Do something... });
$attr Element attribute manipulation.
Get the value of an attribute for the first element in the set of matched elements.
Name Type Desc element string array element Elements to manipulate name string Attribute name return string Attribute value of first element Set one or more attributes for the set of matched elements.
Name Type Desc element string array element Elements to manipulate name string Attribute name value string Attribute value Name Type Desc element string array element Elements to manipulate attributes object Object of attribute-value pairs to set remove Remove an attribute from each element in the set of matched elements.
Name Type Desc element string array element Elements to manipulate name string Attribute namelinux
$attr('#test', 'attr1', 'test'); $attr('#test', 'attr1'); // -> test $attr.remove('#test', 'attr1'); $attr('#test', { 'attr1': 'test', 'attr2': 'test' });
$class Element class manipulations.
add Add the specified class(es) to each element in the set of matched elements.
Name Type Desc element string array element Elements to manipulate names string array Classes to add has Determine whether any of the matched elements are assigned the given class.
Name Type Desc element string array element Elements to manipulate name string Class name return boolean True if elements has given class name toggle Add or remove one or more classes from each element in the set of matched elements, depending on either the class's presence or the value of the state argument.
Name Type Desc element string array element Elements to manipulate name string Class name to toggle remove Remove a single class, multiple classes, or all classes from each element in the set of matched elements.
Name Type Desc element string array element Elements to manipulate names string Class names to removeandroid
$class.add('#test', 'class1'); $class.add('#test', ['class1', 'class2']); $class.has('#test', 'class1'); // -> true $class.remove('#test', 'class1'); $class.has('#test', 'class1'); // -> false $class.toggle('#test', 'class1'); $class.has('#test', 'class1'); // -> true
$css Element css manipulation.
Get the computed style properties for the first element in the set of matched elements.
Name Type Desc element string array element Elements to manipulate name string Property name return string Css value of first element Set one or more CSS properties for the set of matched elements.
Name Type Desc element string array element Elements to manipulate name string Property name value string Css value Name Type Desc element string array element Elements to manipulate properties object Object of css-value pairs to setios
$css('#test', { 'color': '#fff', 'background': 'black' }); $css('#test', 'display', 'block'); $css('#test', 'color'); // -> #fff
$data Wrapper of $attr, adds data- prefix to keys.
$data('#test', 'attr1', 'eustia');
$event bind events to certain dom elements.
function clickHandler() { // Do something... } $event.on('#test', 'click', clickHandler); $event.off('#test', 'click', clickHandler);
$insert Insert html on different position.
before Insert content before elements.
after Insert content after elements.
prepend Insert content to the beginning of elements.
append Insert content to the end of elements.
Name Type Desc element string array element Elements to manipulate content string Html strings
// <div id="test"><div class="mark"></div></div> $insert.before('#test', '<div>licia</div>'); // -> <div>licia</div><div id="test"><div class="mark"></div></div> $insert.after('#test', '<div>licia</div>'); // -> <div id="test"><div class="mark"></div></div><div>licia</div> $insert.prepend('#test', '<div>licia</div>'); // -> <div id="test"><div>licia</div><div class="mark"></div></div> $insert.append('#test', '<div>licia</div>'); // -> <div id="test"><div class="mark"></div><div>licia</div></div>
$offset Get the position of the element in document.
Name Type Desc element string array element Elements to get offset
$offset('#test'); // -> {left: 0, top: 0, width: 0, height: 0}
$property Element property html, text, val getter and setter.
html Get the HTML contents of the first element in the set of matched elements or set the HTML contents of every matched element.
text Get the combined text contents of each element in the set of matched elements, including their descendants, or set the text contents of the matched elements.
val Get the current value of the first element in the set of matched elements or set the value of every matched element.
$property.html('#test', 'licia'); $property.html('#test'); // -> licia
$remove Remove the set of matched elements from the DOM.
Name Type Desc element string array element Elements to delete
$remove('#test');
$safeEls Convert value into an array, if it's a string, do querySelector.
Name Type Desc value element array string Value to convert return array Array of elements
$safeEls('.test'); // -> Array of elements with test class
$show Show elements.
Name Type Desc element string array element Elements to show
$show('#test');
Blob Use Blob when available, otherwise BlobBuilder.
constructor Name Type Desc parts array Blob parts [opts] object Options
var blob = new Blob([]);
Class Create JavaScript class.
Name Type Desc methods object Public methods [statics] object Static methods return function Function used to create instances
var People = Class({ initialize: function People(name, age) { this.name = name; this.age = age; }, introduce: function () { return 'I am ' + this.name + ', ' + this.age + ' years old.'; } }); var Student = People.extend({ initialize: function Student(name, age, school) { this.callSuper(People, 'initialize', arguments); this.school = school; }, introduce: function () { return this.callSuper(People, 'introduce') + '\n I study at ' + this.school + '.'; } }, { is: function (obj) { return obj instanceof Student; } }); var a = new Student('allen', 17, 'Hogwarts'); a.introduce(); // -> 'I am allen, 17 years old. \n I study at Hogwarts.' Student.is(a); // -> true
Color Color converter.
constructor Name Type Desc color string object Color to convert toRgb Get color rgb string format.
toHex Get color hex string format.
toHsl Get color hsl string format.
parse [static] Parse color string into object containing value and model.
Name Type Desc color string Color string return object Object containing value and model
Color.parse('rgb(170, 287, 204, 0.5)'); // -> {val: [170, 187, 204, 0.5], model: 'rgb'} var color = new Color('#abc'); color.toRgb(); // -> 'rgb(170, 187, 204)' color.toHsl(); // -> 'hsl(210, 25%, 73%)'
Dispatcher Flux dispatcher.
Related docs.
var dispatcher = new Dispatcher(); dispatcher.register(function (payload) { switch (payload.actionType) { // Do something } }); dispatcher.dispatch({ actionType: 'action' });
Emitter Event emitter class which provides observer pattern.
on Bind event.
off Unbind event.
once Bind event that trigger once.
Name Type Desc event string Event name listener function Event listener emit Emit event.
Name Type Desc event string Event name ...args * Arguments passed to listener mixin [static] Mixin object class methods.
Name Type Desc obj object Object to mixin
var event = new Emitter(); event.on('test', function () { console.log('test') }); event.emit('test'); // Logs out 'test'. Emitter.mixin({});
Enum Enum type implementation.
constructor Name Type Desc arr array Array of strings Name Type Desc obj object Pairs of key and value
var importance = new Enum([ 'NONE', 'TRIVIAL', 'REGULAR', 'IMPORTANT', 'CRITICAL' ]); if (val === importance.CRITICAL) { // Do something. }
JsonTransformer Json to json transformer.
constructor Name Type Desc [data={}] object Json object to manipulate set Set object value.
Name Type Desc [key] string Object key val * Value to set If key is not given, the whole source object is replaced by val.
get Get object value.
Name Type Desc [key] string Object key return * Specified value or whole object remove Name Type Desc key array string Object keys to remove map Shortcut for array map.
Name Type Desc from string From object path to string Target object path fn function Function invoked per iteration filter Shortcut for array filter.
compute Compute value from several object values.
Name Type Desc from array string Source values to string Target object path fn function Function to compute target value
var data = new JsonTransformer({ books: [{ title: 'Book 1', price: 5 }, { title: 'Book 2', price: 10 }], author: { lastname: 'Su', firstname: 'RedHood' } }); data.filter('books', function (book) { return book.price > 5 }); data.compute('author', function (author) { return author.firstname + author.lastname }); data.set('count', data.get('books').length); data.get(); // -> {books: [{title: 'Book 2', price: 10}], author: 'RedHoodSu', count: 1}
LinkedList Doubly-linked list implementation.
push Add an value to the end of the list.
Name Type Desc val * Value to push return number Current size pop Get the last value of the list.
unshift Add an value to the head of the list.
shift Get the first value of the list.
forEach Iterate over the list.
toArr Convert the list to a JavaScript array.
var linkedList = new LinkedList(); linkedList.push(5); linkedList.pop(); // -> 5
LocalStore LocalStorage wrapper.
Extend from Store.
constructor Name Type Desc name string LocalStorage item name data object Default data
var store = new LocalStore('licia'); store.set('name', 'licia');
Logger Simple logger with level filter.
constructor Name Type Desc name string Logger name [level=DEBUG] number Logger level setLevel Name Type Desc level number string Logger level getLevel Get current level.
trace, debug, info, warn, error Logging methods.
Log Levels TRACE, DEBUG, INFO, WARN, ERROR and SILENT.
var logger = new Logger('licia', Logger.level.ERROR); logger.trace('test'); // Format output. logger.formatter = function (type, argList) { argList.push(new Date().getTime()); return argList; }; logger.on('all', function (type, argList) { // It's not affected by log level. }); logger.on('debug', function (argList) { // Affected by log level. });
MutationObserver Safe MutationObserver, does nothing if MutationObserver is not supported.
var observer = new MutationObserver(function (mutations) { // Do something. }); observer.observe(document.htmlElement); observer.disconnect();
Promise Lightweight Promise implementation.
Promises spec
function get(url) { return new Promise(function (resolve, reject) { var req = new XMLHttpRequest(); req.open('GET', url); req.onload = function () { req.status == 200 ? resolve(req.reponse) : reject(Error(req.statusText)); }; req.onerror = function () { reject(Error('Network Error')) }; req.send(); }); } get('test.json').then(function (result) { // Do something... });
Queue Queue data structure.
clear Clear the queue.
enqueue Add an item to the queue.
Name Type Desc item * Item to enqueue return number Current size dequeue Remove the first item of the queue.
peek Get the first item without removing it.
forEach Iterate over the queue.
Name Type Desc iteratee function Function invoked iteration [ctx] * Function context toArr Convert queue to a JavaScript array.
var queue = new Queue(); console.log(queue.size); // -> 0 queue.enqueue(2); queue.enqueue(3); queue.dequeue(); // -> 2 console.log(queue.size); // -> 1 queue.peek(); // -> 3 console.log(queue.size); // -> 1
ReduceStore Simplified redux like state container.
constructor Name Type Desc reducer function Function returns next state initialState * Initial state subscribe Add a change listener.
Name Type Desc listener function Callback to invoke on every dispatch return function Function to unscribe dispatch Dispatch an action.
Name Type Desc action object Object representing changes return object Same action object getState Get the current state.
var store = new ReduceStore(function (state, action) { switch (action.type) { case 'INCREMENT': return state + 1; case 'DECREMENT': return state - 1; default: return state; } }, 0); store.subscribe(function () { console.log(store.getState()); }); store.dispatch({type: 'INCREMENT'}); // 1 store.dispatch({type: 'INCREMENT'}); // 2 store.dispatch({type: 'DECREMENT'}); // 1
Select Simple wrapper of querySelectorAll to make dom selection easier.
constructor Name Type Desc selector string Dom selector string find Get desdendants of current matched elements.
Name Type Desc selector string Dom selector string each Iterate over matched elements.
Name Type Desc fn function Function to execute for each element
var $test = new Select('#test'); $test.find('.test').each(function (idx, element) { // Manipulate dom nodes });
SessionStore SessionStorage wrapper.
Extend from Store.
constructor Name Type Desc name string SessionStorage item name data object Default data
var store = new SessionStore('licia'); store.set('name', 'licia');
Stack Stack data structure.
clear Clear the stack.
push Add an item to the stack.
Name Type Desc item * Item to add return number Current size pop Get the last item of the stack.
peek Get the last item without removing it.
forEach Iterate over the stack.
Name Type Desc iteratee function Function invoked iteration [ctx] * Function context toArr Convert the stack to a JavaScript stack.
var stack = new Stack(); stack.push(2); // -> 1 stack.push(3); // -> 2 stack.pop(); // -> 3
State Simple state machine.
Extend from Emitter.
constructor Name Type Desc initial string Initial state events string Events to change state is Check current state.
Name Type Desc value string State to check return boolean True if current state equals given value
var state = new State('empty', { load: {from: 'empty', to: 'pause'}, play: {from: 'pause', to: 'play'}, pause: {from: ['play', 'empty'], to: 'pause'}, unload: {from: ['play', 'pause'], to: 'empty'} }); state.is('empty'); // -> true state.load(); state.is('pause'); // -> true state.on('play', function (src) { console.log(src); // -> 'eustia' }); state.on('error', function (err, event) { // Error handler }); state.play('eustia');
Store Memory storage.
Extend from Emitter.
constructor Name Type Desc data object Initial data set Set value.
Name Type Desc key string Value key val * Value to set Set values.
Name Type Desc vals object Key value pairs This emit a change event whenever is called.
get Get value.
Name Type Desc key string Value key return * Value of given key Get values.
Name Type Desc keys array Array of keys return object Key value pairs remove Remove value.
Name Type Desc key string array Key to remove clear Clear all data.
each Iterate over values.
Name Type Desc fn function Function invoked per interation
var store = new Store('test'); store.set('user', {name: 'licia'}); store.get('user').name; // -> 'licia' store.clear(); store.each(function (val, key) { // Do something. }); store.on('change', function (key, newVal, oldVal) { // It triggers whenever set is called. });
Tween Tween engine for JavaScript animations.
Extend from Emitter.
constructor Name Type Desc obj object Values to tween to Name Type Desc destination obj Final properties duration number Tween duration ease string function Easing function play Begin playing forward.
pause Pause the animation.
paused Get animation paused state.
progress Update or get animation progress.
Name Type Desc [progress] number Number between 0 and 1
var pos = {x: 0, y: 0}; var tween = new Tween(pos); tween.on('update', function (target) { console.log(target.x, target.y); }).on('end', function (target) { console.log(target.x, target.y); // -> 100, 100 }); tween.to({x: 100, y: 100}, 1000, 'inElastic').play();
Url Simple url manipulator.
constructor Name Type Desc url=location string Url string setQuery Set query value.
Name Type Desc name string Query name value string Query value return Url this Name Type Desc names object query object return Url this rmQuery Remove query value.
Name Type Desc name string array Query name return Url this parse [static] Parse url into an object.
Name Type Desc url string Url string return object Url object stringify [static] Stringify url object into a string.
Name Type Desc url object Url object return string Url string An url object contains the following properties:
Name Desc protocol The protocol scheme of the URL (e.g. http:) slashes A boolean which indicates whether the protocol is followed by two forward slashes (//) auth Authentication information portion (e.g. username:password) hostname Host name without port number port Optional port number pathname URL path query Parsed object containing query string hash The "fragment" portion of the URL including the pound-sign (#)
var url = new Url('http://example.com:8080?eruda=true'); console.log(url.port); // -> '8080' url.query.foo = 'bar'; url.rmQuery('eruda'); utl.toString(); // -> 'http://example.com:8080/?foo=bar'
Validator Object values validation.
constructor Name Type Desc options object Validation configuration validate Validate object.
Name Type Desc obj object Object to validate return * Validation result, true means ok addPlugin [static] Add plugin.
Name Type Desc name string Plugin name plugin function Validation handler Default Plugins Required, number, boolean, string and regexp.
Validator.addPlugin('custom', function (val, key, config) { if (typeof val === 'string' && val.length === 5) return true; return key + ' should be a string with length 5'; }); var validator = new Validator({ 'test': { required: true, custom: true } }); validator.validate({}); // -> 'test is required' validator.validate({test: 1}); // -> 'test should be a string with length 5'; validator.validate({test: 'licia'}); // -> true
abbrev Calculate the set of unique abbreviations for a given set of strings.
Name Type Desc ...arr string List of names return object Abbreviation map
abbrev('lina', 'luna'); // -> {li: 'lina', lin: 'lina', lina: 'lina', lu: 'luna', lun: 'luna', luna: 'luna'}
after Create a function that invokes once it's called n or more times.
Name Type Desc n number Number of calls before invoked fn function Function to restrict return function New restricted function
var fn = after(5, function() { // -> Only invoke after fn is called 5 times. });
ajax Perform an asynchronous HTTP request.
Name Type Desc options object Ajax options Available options:
Name Type Desc url string Request url data string object Request data dataType=json string Response type(json, xml) contentType=application/x-www-form-urlencoded string Request header Content-Type success function Success callback error function Error callback complete function Callback after request timeout number Request timeout get Shortcut for type = GET;
post Shortcut for type = POST;
Name Type Desc url string Request url [data] string object Request data success function Success callback dataType function Response type
ajax({ url: 'http://example.com', data: {test: 'true'}, error: function () {}, success: function (data) { // ... }, dataType: 'json' }); ajax.get('http://example.com', {}, function (data) { // ... });
allKeys Retrieve all the names of object's own and inherited properties.
Name Type Desc obj object Object to query return array Array of all property names Members of Object's prototype won't be retrieved.
var obj = Object.create({zero: 0}); obj.one = 1; allKeys(obj) // -> ['zero', 'one']
arrToMap Make an object map using array of strings.
Name Type Desc arr array Array of strings val=true * Key value return object Object map
var needPx = arrToMap([ 'column-count', 'columns', 'font-weight', 'line-weight', 'opacity', 'z-index', 'zoom' ]); if (needPx[key]) val += 'px';
atob Use Buffer to emulate atob when running in node.
atob('SGVsbG8gV29ybGQ='); // -> 'Hello World'
average Get average value of given numbers.
Name Type Desc ...num number Numbers to calculate return number Average value
average(5, 3, 1); // -> 3
base64 Basic base64 encoding and decoding.
encode Turn a byte array into a base64 string.
Name Type Desc arr array Byte array return string Base64 string
base64.encode([168, 174, 155, 255]); // -> 'qK6b/w=='
decode Turn a base64 string into a byte array.
Name Type Desc str string Base64 string return array Byte array
base64.decode('qK6b/w=='); // -> [168, 174, 155, 255]
before Create a function that invokes less than n times.
Name Type Desc n number Number of calls at which fn is no longer invoked fn function Function to restrict return function New restricted function Subsequent calls to the created function return the result of the last fn invocation.
$(element).on('click', before(5, function() {})); // -> allow function to be call 4 times at last.
bind Create a function bound to a given object.
Name Type Desc fn function Function to bind ctx This binding of given fn [...rest] Optional arguments return function New bound function
var fn = bind(function (msg) { console.log(this.name + ':' + msg); }, {name: 'eustia'}, 'I am a utility library.'); fn(); // -> 'eustia: I am a utility library.'
btoa Use Buffer to emulate btoa when running in node.
btoa('Hello World'); // -> 'SGVsbG8gV29ybGQ='
bubbleSort Bubble sort implementation.
Name Type Desc arr array Array to sort [cmp] function Comparator
bubbleSort([2, 1]); // -> [1, 2]
callbackify Convert a function that returns a Promise to a function following the error-first callback style.
Name Type Desc fn function Function that returns a Promise return function Function following the error-fist callback style
function fn() { return new Promise(function (resolve, reject) { // ... }); } var cbFn = callbackify(fn); cbFn(function (err, value) { // ... });
camelCase Convert string to "camelCase".
Name Type Desc str string String to convert return string Camel cased string
camelCase('foo-bar'); // -> fooBar camelCase('foo bar'); // -> fooBar camelCase('foo_bar'); // -> fooBar camelCase('foo.bar'); // -> fooBar
capitalize Convert the first character to upper case and the remaining to lower case.
Name Type Desc str string String to capitalize return string Capitalized string
capitalize('rED'); // -> Red
castPath Cast value into a property path array.
Name Type Desc str * Value to inspect [obj] object Object to query return array Property path array
castPath('a.b.c'); // -> ['a', 'b', 'c'] castPath(['a']); // -> ['a'] castPath('a[0].b'); // -> ['a', '0', 'b'] castPath('a.b.c', {'a.b.c': true}); // -> ['a.b.c']
centerAlign Center align text in a string.
Name Type Desc str string array String to align [width] number Total width of each line return string Center aligned string
centerAlign('test', 8); // -> ' test' centerAlign('test\nlines', 8); // -> ' test\n lines' centerAlign(['test', 'lines'], 8); // -> ' test\n lines'
char Return string representing a character whose Unicode code point is the given integer.
Name Type Desc num number Integer to convert return string String representing corresponding char
char(65); // -> 'A' char(97); // -> 'a'
chunk Split array into groups the length of given size.
Name Type Desc arr array Array to process size=1 number Length of each chunk
chunk([1, 2, 3, 4], 2); // -> [[1, 2], [3, 4]] chunk([1, 2, 3, 4], 3); // -> [[1, 2, 3], [4]] chunk([1, 2, 3, 4]); // -> [[1], [2], [3], [4]]
clamp Clamp number within the inclusive lower and upper bounds.
Name Type Desc n number Number to clamp [lower] number Lower bound upper number Upper bound return number Clamped number
clamp(-10, -5, 5); // -> -5 clamp(10, -5, 5); // -> 5 clamp(2, -5, 5); // -> 2 clamp(10, 5); // -> 5 clamp(2, 5); // -> 2
className Utility for conditionally joining class names.
Name Type Desc ...class string object array Class names return string Joined class names
className('a', 'b', 'c'); // -> 'a b c' className('a', false, 'b', 0, 1, 'c'); // -> 'a b 1 c' className('a', ['b', 'c']); // -> 'a b c' className('a', {b: false, c: true}); // -> 'a c' className('a', ['b', 'c', {d: true, e: false}]); // -> 'a b c d';
clone Create a shallow-copied clone of the provided plain object.
Any nested objects or arrays will be copied by reference, not duplicated.
Name Type Desc val Value to clone return Cloned value
clone({name: 'eustia'}); // -> {name: 'eustia'}
cloneDeep Recursively clone value.
Name Type Desc val Value to clone return Deep cloned Value
var obj = [{a: 1}, {a: 2}]; var obj2 = cloneDeep(obj); console.log(obj[0] === obj2[1]); // -> false
cmpVersion Compare version strings.
Name Type Desc v1 string Version to compare v2 string Version to compare return number Comparison result
cmpVersion('1.1.8', '1.0.4'); // -> 1 cmpVersion('1.0.2', '1.0.2'); // -> 0 cmpVersion('2.0', '2.0.0'); // -> 0 cmpVersion('3.0.1', '3.0.0.2'); // -> 1 cmpVersion('1.1.1', '1.2.3'); // -> -1
compact Return a copy of the array with all falsy values removed.
The values false, null, 0, "", undefined, and NaN are falsey.
Name Type Desc arr array Array to compact return array New array of filtered values
compact([0, 1, false, 2, '', 3]); // -> [1, 2, 3]
compose Compose a list of functions.
Each function consumes the return value of the function that follows.
Name Type Desc ...fn function Functions to compose return function Composed function
var welcome = compose(function (name) { return 'hi: ' + name; }, function (name) { return name.toUpperCase() + '!'; }); welcome('licia'); // -> 'hi: LICIA!'
compressImg Compress image using canvas.
Name Type Desc file File Blob Image file opts object Options cb function Callback Available options:
Name Type Desc maxWidth number Max width maxHeight number Max height width number Output image width height number Output image height mineType string Mine type quality=0.8 number Image quality, range from 0 to 1 In order to keep image ratio, height will be ignored when width is set.
And maxWith, maxHeight will be ignored if width or height is set.
compressImg(file, { maxWidth: 200 }, function (err, file) { // ... });
concat Concat multiple arrays into a single array.
Name Type Desc ...arr array Arrays to concat return array Concatenated array
concat([1, 2], [3], [4, 5]); // -> [1, 2, 3, 4, 5]
contain Check if the value is present in the list.
Name Type Desc array array object Target list value * Value to check return boolean True if value is present in the list
contain([1, 2, 3], 1); // -> true contain({a: 1, b: 2}, 1); // -> true
convertBase Convert base of a number.
Name Type Desc num number string Number to convert from number Base from to number Base to return string Converted number
convertBase('10', 2, 10); // -> '2' convertBase('ff', 16, 2); // -> '11111111'
cookie Simple api for handling browser cookies.
get Get cookie value.
Name Type Desc key string Cookie key return string Corresponding cookie value set Set cookie value.
Name Type Desc key string Cookie key val string Cookie value [options] object Cookie options return exports Module cookie remove Remove cookie value.
Name Type Desc key string Cookie key [options] object Cookie options return exports Module cookie
cookie.set('a', '1', {path: '/'}); cookie.get('a'); // -> '1' cookie.remove('a');
copy Copy text to clipboard using document.execCommand.
Name Type Desc text string Text to copy [cb] function Optional callback
copy('text', function (err) { // Handle errors. });
createAssigner Used to create extend, extendOwn and defaults.
Name Type Desc keysFn function Function to get object keys defaults boolean No override when set to true return function Result function, extend... createUrl CreateObjectURL wrapper.
Name Type Desc data File Blob string array Url data [opts] object Used when data is not a File or Blob return string Blob url
createUrl('test', {type: 'text/plain'}); // -> Blob url createUrl(['test', 'test']); createUrl(new Blob([])); createUrl(new File(['test'], 'test.txt'));
cssSupports Check if browser supports a given CSS feature.
Name Type Desc name string Css property name [val] string Css property value return boolean True if supports
cssSupports('display', 'flex'); // -> true cssSupports('display', 'invalid'); // -> false cssSupports('text-decoration-line', 'underline'); // -> true cssSupports('grid'); // -> true cssSupports('invalid'); // -> false
curry Function currying.
Name Type Desc fn function Function to curry return function New curried function
var add = curry(function (a, b) { return a + b }); var add1 = add(1); add1(2); // -> 3
dateFormat Simple but extremely useful date format function.
Name Type Desc [date=new Date] Date Date object to format mask string Format mask [utc=false] boolean UTC or not [gmt=false] boolean GMT or not Mask Description d Day of the month as digits; no leading zero for single-digit days dd Day of the month as digits; leading zero for single-digit days ddd Day of the week as a three-letter abbreviation dddd Day of the week as its full name m Month as digits; no leading zero for single-digit months mm Month as digits; leading zero for single-digit months mmm Month as a three-letter abbreviation mmmm Month as its full name yy Year as last two digits; leading zero for years less than 10 yyyy Year represented by four digits h Hours; no leading zero for single-digit hours (12-hour clock) hh Hours; leading zero for single-digit hours (12-hour clock) H Hours; no leading zero for single-digit hours (24-hour clock) HH Hours; leading zero for single-digit hours (24-hour clock) M Minutes; no leading zero for single-digit minutes MM Minutes; leading zero for single-digit minutes s Seconds; no leading zero for single-digit seconds ss Seconds; leading zero for single-digit seconds l L Milliseconds. l gives 3 digits. L gives 2 digits t Lowercase, single-character time marker string: a or p tt Lowercase, two-character time marker string: am or pm T Uppercase, single-character time marker string: A or P TT Uppercase, two-character time marker string: AM or PM Z US timezone abbreviation, e.g. EST or MDT o GMT/UTC timezone offset, e.g. -0500 or +0230 S The date's ordinal suffix (st, nd, rd, or th) UTC: Must be the first four characters of the mask
dateFormat('isoDate'); // -> 2016-11-19 dateFormat('yyyy-mm-dd HH:MM:ss'); // -> 2016-11-19 19:00:04 dateFormat(new Date(), 'yyyy-mm-dd'); // -> 2016-11-19
debounce Return a new debounced version of the passed function.
Name Type Desc fn function Function to debounce wait number Number of milliseconds to delay return function New debounced function
$(window).resize(debounce(calLayout, 300));
debug A tiny JavaScript debugging utility.
Name Type Desc name string Namespace return function Function to print decorated log
var d = debug('test'); d('doing lots of uninteresting work'); d.enabled = false;
decodeUriComponent Better decodeURIComponent that does not throw if input is invalid.
Name Type Desc str string String to decode return string Decoded string
decodeUriComponent('%%25%'); // -> '%%%' decodeUriComponent('%E0%A4%A'); // -> '\xE0\xA4%A'
defaults Fill in undefined properties in object with the first value present in the following list of defaults objects.
Name Type Desc obj object Destination object *src object Sources objects return object Destination object
defaults({name: 'RedHood'}, {name: 'Unknown', age: 24}); // -> {name: 'RedHood', age: 24}
define Define a module, should be used along with use.
Name Type Desc name string Module name [requires] array Dependencies method function Module body The module won't be executed until it's used by use function.
define('A', function () { return 'A'; }); define('B', ['A'], function (A) { return 'B' + A; });
defineProp Shortcut for Object.defineProperty(defineProperties).
Name Type Desc obj object Object to define prop string Property path descriptor object Property descriptor return object Object itself Name Type Desc obj object Object to define prop object Property descriptors return object Object itself
var obj = {b: {c: 3}, d: 4, e: 5}; defineProp(obj, 'a', { get: function () { return this.e * 2; } }); console.log(obj.a); // -> 10 defineProp(obj, 'b.c', { set: (function (val) { // this is pointed to obj.b this.e = val; }).bind(obj) }); obj.b.c = 2; console.log(obj.a); // -> 4; obj = {a: 1, b: 2, c: 3}; defineProp(obj, { a: { get: function () { return this.c; } }, b: { set: function (val) { this.c = val / 2; } } }); console.log(obj.a); // -> 3 obj.b = 4; console.log(obj.a); // -> 2
delay Invoke function after certain milliseconds.
Name Type Desc fn function Function to delay wait number Number of milliseconds to delay invocation [...args] * Arguments to invoke fn with
delay(function (text) { console.log(text); }, 1000, 'later'); // -> Logs 'later' after one second
delegate Event delegation.
add Add event delegation.
Name Type Desc el element Parent element type string Event type selector string Match selector cb function Event callback remove Remove event delegation.
var container = document.getElementById('container'); function clickHandler() { // Do something... } delegate.add(container, 'click', '.children', clickHandler); delegate.remove(container, 'click', '.children', clickHandler);
detectBrowser Detect browser info using ua.
Name Type Desc [ua=navigator.userAgent] string Browser userAgent return object Object containing name and version Browsers supported: ie, chrome, edge, firefox, opera, safari, ios(mobile safari), android(android browser)
var browser = detectBrowser(); if (browser.name === 'ie' && browser.version < 9) { // Do something about old IE... }
detectOs Detect operating system using ua.
Name Type Desc [ua=navigator.userAgent] string Browser userAgent return string Operating system name Supported os: windows, os x, linux, ios, android, windows phone
if (detectOs() === 'ios') { // Do something about ios... }
difference Create an array of unique array values not included in the other given array.
Name Type Desc arr array Array to inspect [...rest] array Values to exclude return array New array of filtered values
difference([3, 2, 1], [4, 2]); // -> [3, 1]
dotCase Convert string to "dotCase".
Name Type Desc str string String to convert return string Dot cased string
dotCase('fooBar'); // -> foo.bar dotCase('foo bar'); // -> foo.bar
download Trigger a file download on client side.
Name Type Desc data Blob File string array Data to download name string File name type=text/plain string Data type
download('test', 'test.txt');
each Iterate over elements of collection and invokes iteratee for each element.
Name Type Desc obj object array Collection to iterate over iteratee function Function invoked per iteration [ctx] * Function context
each({'a': 1, 'b': 2}, function (val, key) {});
easing Easing functions adapted from http://jqueryui.com/
Name Type Desc percent number Number between 0 and 1 return number Calculated number
easing.linear(0.5); // -> 0.5 easing.inElastic(0.5, 500); // -> 0.03125
endWith Check if string ends with the given target string.
Name Type Desc str string The string to search suffix string String suffix return boolean True if string ends with target
endWith('ab', 'b'); // -> true
escape Escapes a string for insertion into HTML, replacing &, <, >, ", `, and ' characters.
Name Type Desc str string String to escape return string Escaped string
escape('You & Me'); -> // -> 'You & Me'
escapeJsStr Escape string to be a valid JavaScript string literal between quotes.
http://www.ecma-international...
Name Type Desc str string String to escape return string Escaped string
escapeJsStr('\"\n'); // -> '\\"\\\\n'
escapeRegExp Escape special chars to be used as literals in RegExp constructors.
Name Type Desc str string String to escape return string Escaped string
escapeRegExp('[licia]'); // -> '\\[licia\\]'
evalCss Load css into page.
Name Type Desc css string Css code
evalCss('body{background:#08c}');
evalJs Execute js in given context.
Name Type Desc js string JavaScript code [ctx=global] object Context
evalJs('5+2'); // -> 7 evalJs('this.a', {a: 2}); // -> 2
every Check if predicate return truthy for all elements.
Name Type Desc obj array object Collection to iterate over predicate function Function invoked per iteration ctx * Predicate context return boolean True if all elements pass the predicate check
every([2, 4], function (val) { return val % 2 === 0; }); // -> false
extend Copy all of the properties in the source objects over to the destination object.
Name Type Desc obj object Destination object ...src object Sources objects return object Destination object
extend({name: 'RedHood'}, {age: 24}); // -> {name: 'RedHood', age: 24}
extendDeep Recursive object extending.
Name Type Desc obj object Destination object ...src object Sources objects return object Destination object
extendDeep({ name: 'RedHood', family: { mother: 'Jane', father: 'Jack' } }, { family: { brother: 'Bruce' } }); // -> {name: 'RedHood', family: {mother: 'Jane', father: 'Jack', brother: 'Bruce'}}
extendOwn Like extend, but only copies own properties over to the destination object.
Name Type Desc obj object Destination object *src object Sources objects return object Destination object
extendOwn({name: 'RedHood'}, {age: 24}); // -> {name: 'RedHood', age: 24}
extractBlockCmts Extract block comments from source code.
Name Type Desc str string String to extract return array Block comments
extractBlockCmts('\/*licia*\/'); // -> ['licia']
extractUrls Extract urls from plain text.
Name Type Desc str string Text to extract return array Url list
var str = '[Official site: http://eustia.liriliri.io](http://eustia.liriliri.io)'; extractUrl(str); // -> ['http://eustia.liriliri.io']
fetch Turn XMLHttpRequest into promise like.
Note: This is not a complete fetch pollyfill.
Name Type Desc url string Request url options object Request options return promise Request promise
fetch('test.json', { method: 'GET', timeout: 3000, headers: {}, body: '' }).then(function (res) { return res.json(); }).then(function (data) { console.log(data); });
fibonacci Calculate fibonacci number.
Name Type Desc n number Index of fibonacci sequence return number Expected fibonacci number
fibonacci(1); // -> 1 fibonacci(3); // -> 2
fileSize Turn bytes into human readable file size.
Name Type Desc bytes number File bytes return string Readable file size
fileSize(5); // -> '5' fileSize(1500); // -> '1.46K' fileSize(1500000); // -> '1.43M' fileSize(1500000000); // -> '1.4G' fileSize(1500000000000); // -> '1.36T'
fill Fill elements of array with value.
Name Type Desc arr array Array to fill val * Value to fill array with start=0 number Start position end=arr.length number End position return array Filled array
fill([1, 2, 3], '*'); // -> ['*', '*', '*'] fill([1, 2, 3], '*', 1, 2); // -> [1, '*', 3]
filter Iterates over elements of collection, returning an array of all the values that pass a truth test.
Name Type Desc obj array Collection to iterate over predicate function Function invoked per iteration [ctx] * Predicate context return array Array of all values that pass predicate
filter([1, 2, 3, 4, 5], function (val) { return val % 2 === 0; }); // -> [2, 4]
find Find the first value that passes a truth test in a collection.
Name Type Desc obj array object Collection to iterate over predicate function Function invoked per iteration [ctx] Predicate context return First value that passes predicate
find([{ name: 'john', age: 24 }, { name: 'jane', age: 23 }], function (val) { return val.age === 23; }); // -> {name: 'jane', age: 23}
findIdx Return the first index where the predicate truth test passes.
Name Type Desc arr array Array to search predicate function Function invoked per iteration return number Index of matched element
findIdx([{ name: 'john', age: 24 }, { name: 'jane', age: 23 }], function (val) { return val.age === 23; }); // -> 1
findKey Return the first key where the predicate truth test passes.
Name Type Desc obj object Object to search predicate function Function invoked per iteration [ctx] * Predicate context return string Key of matched element
findKey({a: 1, b: 2}, function (val) { return val === 1; }); // -> a
findLastIdx Return the last index where the predicate truth test passes.
Name Type Desc arr array Array to search predicate function Function invoked per iteration return number Last index of matched element
findLastIdx([{ name: 'john', age: 24 }, { name: 'jane', age: 23 }, { name: 'kitty', age: 24 }], function (val) { return val.age === 24; }); // -> 2
flatten Recursively flatten an array.
Name Type Desc arr array Array to flatten return array New flattened array
flatten(['a', ['b', ['c']], 'd', ['e']]); // -> ['a', 'b', 'c', 'd', 'e']
fnParams Get a function parameter's names.
Name Type Desc fn function Function to get parameters return array Names
fnParams(function (a, b) {}); // -> ['a', 'b']
format Format string in a printf-like format.
Name Type Desc str string String to format ...values * Values to replace format specifiers return string Formatted string Format Specifiers Specifier Desc %s String %d, %i Integer %f Floating point value %o Object
format('%s_%s', 'foo', 'bar'); // -> 'foo bar'
fraction Convert number to fraction.
Name Type Desc num number Number to convert return string Corresponding fraction
fraction(1.2); // -> '6/5'
freeze Shortcut for Object.freeze.
Use Object.defineProperties if Object.freeze is not supported.
Name Type Desc obj object Object to freeze return object Object passed in
var a = {b: 1}; freeze(a); a.b = 2; console.log(a); // -> {b: 1}
freezeDeep Recursively use Object.freeze.
Name Type Desc obj object Object to freeze return object Object passed in
var a = {b: {c: 1}}; freezeDeep(a); a.b.c = 2; console.log(a); // -> {b: {c: 1}}
gcd Compute the greatest common divisor using Euclid's algorithm.
Name Type Desc a number Number to calculate b number Number to calculate return number Greatest common divisor
gcd(121, 44); // -> 11
getUrlParam Get url param.
Name Type Desc name string Param name url=location string Url to get param return string Param value
getUrlParam('test', 'http://example.com/?test=true'); // -> 'true'
has Checks if key is a direct property.
Name Type Desc obj object Object to query key string Path to check return boolean True if key is a direct property
has({one: 1}, 'one'); // -> true
hotkey Capture keyboard input to trigger given events.
on Register keyboard listener.
Name Type Desc key string Key string listener function Key listener off Unregister keyboard listener.
hotkey.on('k', function () { console.log('k is pressed'); }); function keyDown() {} hotkey.on('shift+a, shift+b', keyDown); hotkey.off('shift+a', keyDown);
hslToRgb Convert hsl to rgb.
Name Type Desc hsl array Hsl values return array Rgb values
hslToRgb([165, 59, 50, 0.8]); // -> [52, 203, 165, 0.8]
identity Return the first argument given.
Name Type Desc val Any value return Given value
identity('a'); // -> 'a'
idxOf Get the index at which the first occurrence of value.
Name Type Desc arr array Array to search val * Value to search for fromIdx=0 number Index to search from
idxOf([1, 2, 1, 2], 2, 2); // -> 3
indent Indent each line in a string.
Name Type Desc str string String to indent [char] string Character to prepend [len] number Indent length return string Indented string
indent('foo\nbar', ' ', 4); // -> 'foo\n bar'
inherits Inherit the prototype methods from one constructor into another.
Name Type Desc Class function Child Class SuperClass function Super Class
function People(name) { this._name = name; } People.prototype = { getName: function () { return this._name; } }; function Student(name) { this._name = name; } inherits(Student, People); var s = new Student('RedHood'); s.getName(); // -> 'RedHood'
insertionSort Insertion sort implementation.
Name Type Desc arr array Array to sort [cmp] function Comparator
insertionSort([2, 1]); // -> [1, 2]
intersect Compute the list of values that are the intersection of all the arrays.
Name Type Desc ...arr array Arrays to inspect return array New array of inspecting values
intersect([1, 2, 3, 4], [2, 1, 10], [2, 1]); // -> [1, 2]
intersectRange Intersect two ranges.
Name Type Desc a object Range a b object Range b return object Intersection if exist
intersectRange({start: 0, end: 12}, {start: 11, end: 13}); // -> {start: 11, end: 12} intersectRange({start: 0, end: 5}, {start: 6, end: 7}); // -> undefined
invert Create an object composed of the inverted keys and values of object.
Name Type Desc obj object Object to invert return object New inverted object If object contains duplicate values, subsequent values overwrite property assignments of previous values unless multiValue is true.
invert({a: 'b', c: 'd', e: 'f'}); // -> {b: 'a', d: 'c', f: 'e'}
isAbsoluteUrl Check if an url is absolute.
Name Type Desc url string Url to check return boolean True if url is absolute
isAbsoluteUrl('http://www.surunzi.com'); // -> true isAbsoluteUrl('//www.surunzi.com'); // -> false isAbsoluteUrl('surunzi.com'); // -> false
isArgs Check if value is classified as an arguments object.
Name Type Desc val * Value to check return boolean True if value is an arguments object
(function () { isArgs(arguments); // -> true })();
isArr Check if value is an
Array
object.
Name Type Desc val * Value to check return boolean True if value is an
Array
object
isArr([]); // -> true isArr({}); // -> false
isArrBuffer Check if value is an ArrayBuffer.
Name Type Desc val * Value to check return boolean True if value is an ArrayBuffer
isArrBuffer(new ArrayBuffer(8)); // -> true
isArrLike Check if value is array-like.
Name Type Desc val * Value to check return boolean True if value is array like Function returns false.
isArrLike('test'); // -> true isArrLike(document.body.children); // -> true; isArrLike([1, 2, 3]); // -> true
isBlob Check if value is a Blob.
Name Type Desc val * Value to check return boolean True if value is a Blob
isBlob(new Blob([])); // -> true; isBlob([]); // -> false
isBool Check if value is a boolean primitive.
Name Type Desc val * Value to check return boolean True if value is a boolean
isBool(true); // -> true isBool(false); // -> true isBool(1); // -> false
isBrowser Check if running in a browser.
console.log(isBrowser); // -> true if running in a browser
isBuffer Check if value is a buffer.
Name Type Desc val * The value to check return boolean True if value is a buffer
isBuffer(new Buffer(4)); // -> true
isClose Check if values are close(almost equal) to each other.
abs(a-b) <= max(relTol * max(abs(a), abs(b)), absTol)
Name Type Desc a number Number to compare b number Number to compare relTol=1e-9 number Relative tolerance absTol=0 number Absolute tolerance return boolean True if values are close
isClose(1, 1.0000000001); // -> true isClose(1, 2); // -> false isClose(1, 1.2, 0.3); // -> true isClose(1, 1.2, 0.1, 0.3); // -> true
isDataUrl Check if a string is a valid data url.
Name Type Desc str string String to check return boolean True if string is a data url
isDataUrl('http://eustia.liriliri.io'); // -> false isDataUrl('data:text/plain;base64,SGVsbG8sIFdvcmxkIQ%3D%3D'); // -> true
isDate Check if value is classified as a Date object.
Name Type Desc val * value to check return boolean True if value is a Date object
isDate(new Date()); // -> true
isEl Check if value is a DOM element.
Name Type Desc val * Value to check return boolean True if value is a DOM element
isEl(document.body); // -> true
isEmail Loosely validate an email address.
Name Type Desc val string Value to check return boolean True if value is an email like string
isEmail('surunzi@foxmail.com'); // -> true
isEmpty Check if value is an empty object or array.
Name Type Desc val * Value to check return boolean True if value is empty
isEmpty([]); // -> true isEmpty({}); // -> true isEmpty(''); // -> true
isEqual Performs an optimized deep comparison between the two objects, to determine if they should be considered equal.
Name Type Desc val Value to compare other Other value to compare return boolean True if values are equivalent
isEqual([1, 2, 3], [1, 2, 3]); // -> true
isErr Check if value is an error.
Name Type Desc val * Value to check return boolean True if value is an error
isErr(new Error()); // -> true
isEven Check if number is even.
Name Type Desc num number Number to check return boolean True if number is even
isOdd(0); // -> true isOdd(1); // -> false isOdd(2); // -> true
isFile Check if value is a file.
Name Type Desc val * Value to check return boolean True if value is a file
isFile(new File(['test'], "test.txt", {type: "text/plain"})); // -> true
isFinite Check if value is a finite primitive number.
Name Type Desc val * Value to check return boolean True if value is a finite number
isFinite(3); // -> true isFinite(Infinity); // -> false
isFn Check if value is a function.
Name Type Desc val * Value to check return boolean True if value is a function Generator function is also classified as true.
isFn(function() {}); // -> true isFn(function*() {}); // -> true
isGeneratorFn Check if value is a generator function.
Name Type Desc val * Value to check return boolean True if value is a generator function
isGeneratorFn(function * () {}); // -> true; isGeneratorFn(function () {}); // -> false;
isInt Checks if value is classified as a Integer.
Name Type Desc val * Value to check return boolean True if value is correctly classified
isInt(5); // -> true isInt(5.1); // -> false isInt({}); // -> false
isJson Check if value is a valid JSON.
It uses
JSON.parse()
and a
try... catch
block.
Name Type Desc val string JSON string return boolean True if value is a valid JSON
isJson('{"a": 5}'); // -> true isJson("{'a': 5}"); // -> false
isLeapYear Check if a year is a leap year.
Name Type Desc year number Year to check return boolean True if year is a leap year
isLeapYear(2000); // -> true isLeapYear(2002); // -> false
isMatch Check if keys and values in src are contained in obj.
Name Type Desc obj object Object to inspect src object Object of property values to match return boolean True if object is match
isMatch({a: 1, b: 2}, {a: 1}); // -> true
isMiniProgram Check if running in wechat mini program.
console.log(isMiniProgram); // -> true if running in mini program.
isMobile Check whether client is using a mobile browser using ua.
Name Type Desc [ua=navigator.userAgent] string User agent return boolean True if ua belongs to mobile browsers
isMobile(navigator.userAgent);
isNaN Check if value is an NaN.
Name Type Desc val * Value to check return boolean True if value is an NaN Undefined is not an NaN, different from global isNaN function.
isNaN(0); // -> false isNaN(NaN); // -> true
isNative Check if value is a native function.
Name Type Desc val * Value to check return boolean True if value is a native function
isNative(function () {}); // -> false isNative(Math.min); // -> true
isNil Check if value is null or undefined, the same as value == null.
Name Type Desc val * Value to check return boolean True if value is null or undefined
isNil(null); // -> true isNil(void 0); // -> true isNil(undefined); // -> true isNil(false); // -> false isNil(0); // -> false isNil([]); // -> false
isNode Check if running in node.
console.log(isNode); // -> true if running in node
isNull Check if value is an Null.
Name Type Desc val * Value to check return boolean True if value is an Null
isNull(null); // -> true
isNum Check if value is classified as a Number primitive or object.
Name Type Desc val * Value to check return boolean True if value is correctly classified
isNum(5); // -> true isNum(5.1); // -> true isNum({}); // -> false
isNumeric Check if value is numeric.
Name Type Desc val * Value to check return boolean True if value is numeric
isNumeric(1); // -> true isNumeric('1'); // -> true isNumeric(Number.MAX_VALUE); // -> true isNumeric(0144); // -> true isNumeric(0xFF); // -> true isNumeric(''); // -> false isNumeric('1.1.1'); // -> false isNumeric(NaN); // -> false
isObj Check if value is the language type of Object.
Name Type Desc val * Value to check return boolean True if value is an object Language Spec
isObj({}); // -> true isObj([]); // -> true
isOdd Check if number is odd.
Name Type Desc num number Number to check return boolean True if number is odd
isOdd(0); // -> false isOdd(1); // -> true isOdd(2); // -> false
isPlainObj Check if value is an object created by Object constructor.
Name Type Desc val * Value to check return boolean True if value is a plain object
isPlainObj({}); // -> true isPlainObj([]); // -> false isPlainObj(function () {}); // -> false
isPrimitive Check if value is string, number, boolean or null.
Name Type Desc val * Value to check return boolean True if value is a primitive
isPrimitive(5); // -> true isPrimitive('abc'); // -> true isPrimitive(false); // -> true
isPromise Check if value looks like a promise.
Name Type Desc val * Value to check return boolean True if value looks like a promise
isPromise(new Promise(function () {})); // -> true isPromise({}); // -> false
isRegExp Check if value is a regular expression.
Name Type Desc val * Value to check return boolean True if value is a regular expression
isRegExp(/a/); // -> true
isRelative Check if path appears to be relative.
Name Type Desc path string Path to check return boolean True if path appears to be relative
isRelative('README.md'); // -> true
isRetina Determine if running on a high DPR device or not.
console.log(isRetina); // -> true if high DPR
isStr Check if value is a string primitive.
Name Type Desc val * Value to check return boolean True if value is a string primitive
isStr('licia'); // -> true
isStream Check if value is a Node.js stream.
Name Type Desc val * Value to check return boolean True if value is a Node.js stream
var stream = require('stream'); isStream(new stream.Stream()); // -> true
isTypedArr Check if value is a typed array.
Name Type Desc val * Value to check return boolean True if value is a typed array
isTypedArr([]); // -> false isTypedArr(new Unit8Array); // -> true
isUndef Check if value is undefined.
Name Type Desc val * Value to check return boolean True if value is undefined
isUndef(void 0); // -> true isUndef(null); // -> false
isUrl Loosely validate an url.
Name Type Desc val string Value to check return boolean True if value is an url like string
isUrl('http://www.example.com?foo=bar¶m=test'); // -> true
isWindows Check if platform is windows.
console.log(isWindows); // -> true if running on windows
jsonp A simple jsonp implementation.
Name Type Desc opts object Jsonp Options Available options:
Name Type Desc url string Request url data object Request data success function Success callback param=callback string Callback param name string Callback name error function Error callback complete function Callback after request timeout number Request timeout
jsonp({ url: 'http://example.com', data: {test: 'true'}, success: function (data) { // ... } });
kebabCase Convert string to "kebabCase".
Name Type Desc str string String to convert return string Kebab cased string
kebabCase('fooBar'); // -> foo-bar kebabCase('foo bar'); // -> foo-bar kebabCase('foo_bar'); // -> foo-bar kebabCase('foo.bar'); // -> foo-bar
keyCode Key codes and key names conversion.
Get key code's name.
Name Type Desc code number Key code return string Corresponding key name Get key name's code.
Name Type Desc name string Key name return number Corresponding key code
keyCode(13); // -> 'enter' keyCode('enter'); // -> 13
keys Create an array of the own enumerable property names of object.
Name Type Desc obj object Object to query return array Array of property names
keys({a: 1}); // -> ['a']
last Get the last element of array.
Name Type Desc arr array The array to query return * The last element of array
last([1, 2]); // -> 2
lazyRequire Require modules lazily.
var r = lazyRequire(require); var _ = r('underscore'); // underscore is required only when _ is called. _().isNumber(5);
linkify Hyperlink urls in a string.
Name Type Desc str string String to hyperlink [hyperlink] function Function to hyperlink url return string Result string
var str = 'Official site: http://eustia.liriliri.io' linkify(str); // -> 'Official site: <a href="http://eustia.liriliri.io">http://eustia.liriliri.io</a>' linkify(str, function (url) { return '<a href="' + url + '" target="_blank">' + url + '</a>'; });
loadCss Inject link tag into page with given href value.
Name Type Desc src string Style source cb function Onload callback
loadCss('style.css', function (isLoaded) { // Do something... });
loadImg Load image with given src.
Name Type Desc src string Image source [cb] function Onload callback
loadImg('http://eustia.liriliri.io/img.jpg', function (err, img) { console.log(img.width, img.height); });
loadJs Inject script tag into page with given src value.
Name Type Desc src string Script source cb function Onload callback
loadJs('main.js', function (isLoaded) { // Do something... });
longest Get the longest item in an array.
Name Type Desc arr array Array to inspect return * Longest item
longest(['a', 'abcde', 'abc']); // -> 'abcde'
lowerCase Convert string to lower case.
Name Type Desc str string String to convert return string Lower cased string
lowerCase('TEST'); // -> 'test'
lpad Pad string on the left side if it's shorter than length.
Name Type Desc str string String to pad len number Padding length [chars] string String used as padding return string Resulted string
lpad('a', 5); // -> ' a' lpad('a', 5, '-'); // -> '----a' lpad('abc', 3, '-'); // -> 'abc' lpad('abc', 5, 'ab'); // -> 'ababc'
ltrim Remove chars or white-spaces from beginning of string.
Name Type Desc str string String to trim chars string array Characters to trim return string Trimmed string
ltrim(' abc '); // -> 'abc ' ltrim('_abc_', '_'); // -> 'abc_' ltrim('_abc_', ['a', '_']); // -> 'bc_'
map Create an array of values by running each element in collection through iteratee.
Name Type Desc obj array object Collection to iterate over iteratee function Function invoked per iteration [ctx] * Function context return array New mapped array
map([4, 8], function (n) { return n * n; }); // -> [16, 64]
mapObj Map for objects.
Name Type Desc obj object Object to iterate over iteratee function Function invoked per iteration [ctx] * Function context return object New mapped object
mapObj({a: 1, b: 2}, function (val, key) { return val + 1 }); // -> {a: 2, b: 3}
matcher Return a predicate function that checks if attrs are contained in an object.
Name Type Desc attrs object Object of property values to match return function New predicate function
var objects = [ {a: 1, b: 2, c: 3 }, {a: 4, b: 5, c: 6 } ]; filter(objects, matcher({a: 4, c: 6 })); // -> [{a: 4, b: 5, c: 6 }]
max Get maximum value of given numbers.
Name Type Desc ...num number Numbers to calculate return number Maximum value
max(2.3, 1, 4.5, 2); // 4.5
memStorage Memory-backed implementation of the Web Storage API.
A replacement for environments where localStorage or sessionStorage is not available.
var localStorage = window.localStorage || memStorage; localStorage.setItem('test', 'licia');
memoize Memoize a given function by caching the computed result.
Name Type Desc fn function Function to have its output memoized [hashFn] function Function to create cache key return function New memoized function
var fibonacci = memoize(function(n) { return n < 2 ? n : fibonacci(n - 1) + fibonacci(n - 2); });
meta Document meta manipulation, turn name and content into key value pairs.
Get meta content with given name. If name is omitted, all pairs will be return.
Name Type Desc [name] string array Meta name return string Meta content Set meta content.
Name Type Desc name string Meta name content string Meta content Name Type Desc metas object Object of name content pairs remove Remove metas.
Name Type Desc name string array Meta name
// <meta name="a" content="1"/> <meta name="b" content="2"/> <meta name="c" content="3"/> meta(); // -> {a: '1', b: '2', c: '3'} meta('a'); // -> '1' meta(['a', 'c']); // -> {a: '1', c: '3'} meta('d', '4'); meta({ d: '5', e: '6', f: '7' }); meta.remove('d'); meta.remove(['e', 'f']);
methods Return a sorted list of the names of every method in an object.
Name Type Desc obj object Object to check return array Function names in object
methods(console); // -> ['Console', 'assert', 'dir', ...]
min Get minimum value of given numbers.
Name Type Desc ...num number Numbers to calculate return number Minimum value
min(2.3, 1, 4.5, 2); // 1
mkdir Recursively create directories.
Name Type Desc dir string Directory to create [mode=0777] number Directory mode callback function Callback
mkdir('/tmp/foo/bar/baz', function (err) { if (err) console.log(err); else console.log('Done'); });
moment Tiny moment.js like implementation.
It only supports a subset of moment.js api.
Available methods format, isValid, isLeapYear, isSame, isBefore, isAfter, year, month, date, hour, minute, second, millisecond, unix, clone, toDate, toArray, toJSON, toISOString, toObject, toString, set, startOf, endOf, add, subtract, diff
Not supported locale and units like quarter and week.
Note: Format uses dateFormat module, so the mask is not quite the same as moment.js.
moment('20180501').format('yyyy-mm-dd'); // -> '2018-05-01'
ms Convert time string formats to milliseconds.
Turn time string into milliseconds.
Name Type Desc str string String format return number Milliseconds Turn milliseconds into time string.
Name Type Desc num number Milliseconds return string String format
ms('1s'); // -> 1000 ms('1m'); // -> 60000 ms('1.5h'); // -> 5400000 ms('1d'); // -> 86400000 ms('1y'); // -> 31557600000 ms('1000'); // -> 1000 ms(1500); // -> '1.5s' ms(60000); // -> '1m'
negate Create a function that negates the result of the predicate function.
Name Type Desc predicate function Predicate to negate return function New function
function even(n) { return n % 2 === 0 } filter([1, 2, 3, 4, 5, 6], negate(even)); // -> [1, 3, 5]
nextTick Next tick for both node and browser.
Name Type Desc cb function Function to call Use process.nextTick if available.
Otherwise setImmediate or setTimeout is used as fallback.
nextTick(function () { // Do something... });
noop A no-operation function.
noop(); // Does nothing
normalizePath Normalize file path slashes.
Name Type Desc path string Path to normalize return string Normalized path
normalizePath('\\foo\\bar\\'); // -> '/foo/bar/' normalizePath('./foo//bar'); // -> './foo/bar'
now Gets the number of milliseconds that have elapsed since the Unix epoch.
now(); // -> 1468826678701
objToStr Alias of Object.prototype.toString.
Name Type Desc value * Source value return string String representation of given value
objToStr(5); // -> '[object Number]'
omit Opposite of pick.
Name Type Desc obj object Source object filter string array function Object filter return object Filtered object
omit({a: 1, b: 2}, 'a'); // -> {b: 2} omit({a: 1, b: 2, c: 3}, ['b', 'c']) // -> {a: 1} omit({a: 1, b: 2, c: 3, d: 4}, function (val, key) { return val % 2; }); // -> {b: 2, d: 4} ## once Create a function that invokes once. |Name |Type |Desc | |------|--------|-----------------------| |fn |function|Function to restrict | |return|function|New restricted function|
javascript
function init() {};
var initOnce = once(init);
initOnce();
initOnce(); // -> init is invoked once
optimizeCb Used for function context binding. orientation Screen orientation helper. on Bind change event. off Unbind change event. get Get current orientation(landscape or portrait).
orientation.on('change', function (direction)
{
console.log(direction); // -> 'portrait'
});
orientation.get(); // -> 'landscape'
pad Pad string on the left and right sides if it's shorter than length. Name Type Desc str string String to pad len number Padding length chars string String used as padding return string Resulted string
pad('a', 5); // -> ' a '
pad('a', 5, '-'); // -> '--a--'
pad('abc', 3, '-'); // -> 'abc'
pad('abc', 5, 'ab'); // -> 'babca'
pad('ab', 5, 'ab'); // -> 'ababa'
pairs Convert an object into a list of [key, value] pairs. Name Type Desc obj object Object to convert return array List of [key, value] pairs
pairs({a: 1, b: 2}); // -> [['a', 1], ['b', 2]]
parallel Run an array of functions in parallel. Name Type Desc tasks array Array of functions [cb] function Callback once completed
parallel([
function(cb) { setTimeout(function () { cb(null, 'one') }, 200); }, function(cb) { setTimeout(function () { cb(null, 'two') }, 100); }
], function (err, results)
{
// results -> ['one', 'two']
});
parseArgs Parse command line argument options, the same as minimist. Name Type Desc args array Argument array opts object Parse options return object Parsed result options Name Type Desc names object option names shorthands object option shorthands
parseArgs(['eustia', '--output', 'util.js', '-w'], {
names: { output: 'string', watch: 'boolean' }, shorthands: { output: 'o', watch: 'w' }
});
// -> {remain: ['eustia'], output: 'util.js', watch: true}
partial Partially apply a function by filling in given arguments. Name Type Desc fn function Function to partially apply arguments to ...partials * Arguments to be partially applied return function New partially applied function
var sub5 = partial(function (a, b) { return b - a }, 5);
sub(20); // -> 15
pascalCase Convert string to "pascalCase". Name Type Desc str string String to convert return string Pascal cased string
pascalCase('fooBar'); // -> FooBar
pascalCase('foo bar'); // -> FooBar
pascalCase('foo_bar'); // -> FooBar
pascalCase('foo.bar'); // -> FooBar
perfNow High resolution time up to microsecond precision.
var start = perfNow();
// Do something.
console.log(perfNow() - start);
pick Return a filtered copy of an object. Name Type Desc obj object Source object filter string array function Object filter return object Filtered object
pick({a: 1, b: 2}, 'a'); // -> {a: 1}
pick({a: 1, b: 2, c: 3}, ['b', 'c']) // -> {b: 2, c: 3}
pick({a: 1, b: 2, c: 3, d: 4}, function (val, key)
{
return val % 2;
}); // -> {a: 1, c: 3}
pluck Extract a list of property values. Name Type Desc obj object array Collection to iterate over key string array Property path return array New array of specified property
var stooges = [
{name: 'moe', age: 40}, {name: 'larry', age: 50}, {name: 'curly', age: 60}
];
pluck(stooges, 'name'); // -> ['moe', 'larry', 'curly']
precision Find decimal precision of a given number. Name Type Desc num number Number to check return number Precision
precision(1.234); // -> 3;
prefix Add vendor prefixes to a CSS attribute. Name Type Desc name string Property name return string Prefixed property name dash Create a dasherize version.
prefix('text-emphasis'); // -> 'WebkitTextEmphasis'
prefix.dash('text-emphasis'); // -> '-webkit-text-emphasis'
prefix('color'); // -> 'color'
promisify Convert callback based functions into Promises. Name Type Desc fn function Callback based function [multiArgs=false] boolean If callback has multiple success value return boolean Result function If multiArgs is set to true, the resulting promise will always fulfill with an array of the callback's success values.
var fs = require('fs');
var readFile = promisify(fs.readFile);
readFile('test.js', 'utf-8').then(function (data)
{
// Do something with file content.
});
property Return a function that will itself return the key property of any passed-in object. Name Type Desc path string array Path of the property to get return function New accessor function
var obj = {a: {b: 1}};
property('a')(obj); // -> {b: 1}
property(['a', 'b'])(obj); // -> 1
query Parse and stringify url query strings. parse Parse a query string into an object. Name Type Desc str string Query string return object Query object stringify Stringify an object into a query string. Name Type Desc obj object Query object return string Query string
query.parse('foo=bar&eruda=true'); // -> {foo: 'bar', eruda: 'true'}
query.stringify({foo: 'bar', eruda: 'true'}); // -> 'foo=bar&eruda=true'
query.parse('name=eruda&name=eustia'); // -> {name: ['eruda', 'eustia']}
raf Shortcut for requestAnimationFrame. Use setTimeout if native requestAnimationFrame is not supported.
var id = raf(function tick()
{
// Animation stuff raf(tick);
});
raf.cancel(id);
random Produces a random number between min and max(inclusive). Name Type Desc min number Minimum possible value max number Maximum possible value [floating=false] boolean Float or not return number Random number
random(1, 5); // -> an integer between 0 and 5
random(5); // -> an integer between 0 and 5
random(1.2, 5.2, true); /// -> a floating-point number between 1.2 and 5.2
randomBytes Random bytes generator. Use crypto module in node or crypto object in browser if possible. Name Type Desc size number Number of bytes to generate return object Random bytes of given length
randomBytes(5); // -> [55, 49, 153, 30, 122]
range Create flexibly-numbered lists of integers. Name Type Desc [start] number Start of the range end number End of the range step=1 number Value to increment or decrement by
range(5); // -> [0, 1, 2, 3, 4]
range(0, 5, 2) // -> [0, 2, 4]
ready Invoke callback when dom is ready, similar to jQuery ready. Name Type Desc fn function Callback function
ready(function ()
{
// It's safe to manipulate dom here.
});
reduce Turn a list of values into a single value. Name Type Desc obj object array Collection to iterate over [iteratee=identity] function Function invoked per iteration [initial] * Initial value [ctx] * Function context return * Accumulated value
reduce([1, 2, 3], function (sum, n) { return sum + n }, 0); // -> 6
reduceRight Right-associative version of reduce.
reduceRight([[1], [2], [3]], function (a, b) { return a.concat(b) }, []); // -> [3, 2, 1]
reject Opposite of filter. Name Type Desc obj array Collection to iterate over predicate function Function invoked per iteration [ctx] * Predicate context return array Array of all values that pass predicate
reject([1, 2, 3, 4, 5], function (val)
{
return val % 2 === 0;
}); // -> [1, 3, 5]
remove Remove all elements from array that predicate returns truthy for and return an array of the removed elements. Unlike filter, this method mutates array. Name Type Desc obj array Collection to iterate over predicate function Function invoked per iteration [ctx] * Predicate context return array Array of all values that are removed
var arr = [1, 2, 3, 4, 5];
var evens = remove(arr, function (val) { return val % 2 === 0 });
console.log(arr); // -> [1, 3, 5]
console.log(evens); // -> [2, 4]
repeat Repeat string n-times. Name Type Desc str string String to repeat n number Repeat times return string Repeated string
repeat('a', 3); // -> 'aaa'
repeat('ab', 2); // -> 'abab'
repeat('*', 0); // -> ''
restArgs This accumulates the arguments passed into an array, after a given index. Name Type Desc function function Function that needs rest parameters startIndex number The start index to accumulates return function Generated function with rest parameters
var paramArr = restArgs(function (rest) { return rest });
paramArr(1, 2, 3, 4); // -> [1, 2, 3, 4]
rgbToHsl Convert rgb to hsl. Name Type Desc rgb array Rgb values return array Hsl values
rgbToHsl([52, 203, 165, 0.8]); // -> [165, 59, 50, 0.8]
rmCookie Loop through all possible path and domain to remove cookie. Name Type Desc key string Cookie key
rmCookie('test');
rmdir Recursively remove directories. Name Type Desc dir string Directory to remove callback function Callback
rmdir('/tmp/foo/bar/baz', function (err)
{
if (err) console.log (err); else console.log('Done');
});
root Root object reference,
global
in nodeJs,
window
in browser. rpad Pad string on the right side if it's shorter than length. Name Type Desc str string String to pad len number Padding length chars string String used as padding return string Resulted string
rpad('a', 5); // -> 'a '
rpad('a', 5, '-'); // -> 'a----'
rpad('abc', 3, '-'); // -> 'abc'
rpad('abc', 5, 'ab'); // -> 'abcab'
rtrim Remove chars or white-spaces from end of string. Name Type Desc str string String to trim chars string array Characters to trim return string Trimmed string
rtrim(' abc '); // -> ' abc'
rtrim('_abc_', '_'); // -> '_abc'
rtrim('_abc_', ['c', '_']); // -> '_ab'
safeCb Create callback based on input value. safeDel Delete object property. Name Type Desc obj object Object to query path array string Path of property to delete return * Deleted value or undefined
var obj = {a: {aa: {aaa: 1}}};
safeDel(obj, 'a.aa.aaa'); // -> 1
safeDel(obj, ['a', 'aa']); // -> {}
safeDel(obj, 'a.b'); // -> undefined
safeGet Get object property, don't throw undefined error. Name Type Desc obj object Object to query path array string Path of property to get return * Target value or undefined
var obj = {a: {aa: {aaa: 1}}};
safeGet(obj, 'a.aa.aaa'); // -> 1
safeGet(obj, ['a', 'aa']); // -> {aaa: 1}
safeGet(obj, 'a.b'); // -> undefined
safeSet Set value at path of object. If a portion of path doesn't exist, it's created. Name Type Desc obj object Object to modify path array string Path of property to set val * Value to set
var obj = {};
safeSet(obj, 'a.aa.aaa', 1); // obj = {a: {aa: {aaa: 1}}}
safeSet(obj, ['a', 'aa'], 2); // obj = {a: {aa: 2}}
safeSet(obj, 'a.b', 3); // obj = {a: {aa: 2, b: 3}}
safeStorage Use storage safely in safari private browsing and older browsers. Name Type Desc [type='local'] string local or session return object Specified storage
var localStorage = safeStorage('local');
localStorage.setItem('licia', 'util');
sample Sample random values from a collection. Name Type Desc obj array object Collection to sample n number Number of values return array Array of sample values
sample([2, 3, 1], 2); // -> [2, 3]
sample({a: 1, b: 2, c: 3}, 1); // -> [2]
scrollTo Scroll to a target with animation. Name Type Desc target element string number Scroll target options object Scroll options Options Name Type Default Desc tolerance number 0 Tolerance of target to scroll duration number 800 Scroll duration easing string function outQuart Easing function callback function noop Function to run once scrolling complete
scrollTo('body', {
tolerance: 0, duration: 800, easing: 'outQuart', callback: function () {}
});
selectionSort Selection sort implementation. Name Type Desc arr array Array to sort [cmp] function Comparator
selectionSort([2, 1]); // -> [1, 2]
shuffle Randomize the order of the elements in a given array. Name Type Desc arr array Array to randomize return array Randomized Array
shuffle([1, 2, 3]); // -> [3, 1, 2]
size Get size of object, length of array like object or the number of keys. Name Type Desc obj array object Collection to inspect return number Collection size
size({a: 1, b: 2}); // -> 2
size([1, 2, 3]); // -> 3
slice Create slice of source array or array-like object. Name Type Desc array array Array to slice [start=0] number Start position [end=array.length] number End position, not included
slice([1, 2, 3, 4], 1, 2); // -> [2]
snakeCase Convert string to "snakeCase". Name Type Desc str string String to convert return string Snake cased string
snakeCase('fooBar'); // -> foo_bar
snakeCase('foo bar'); // -> foo_bar
snakeCase('foo.bar'); // -> foo_bar
some Check if predicate return truthy for any element. Name Type Desc obj array object Collection to iterate over predicate function Function to invoked per iteration ctx * Predicate context return boolean True if any element passes the predicate check
some([2, 5], function (val)
{
return val % 2 === 0;
}); // -> true
spaceCase Convert string to "spaceCase". Name Type Desc str string String to convert return string Space cased string
spaceCase('fooBar'); // -> foo bar
spaceCase('foo.bar'); // -> foo bar
spaceCase('foo.bar'); // -> foo bar
splitCase Split different string case to an array. Name Type Desc str string String to split return array Result array
splitCase('foo-bar'); // -> ['foo', 'bar']
splitCase('foo bar'); // -> ['foo', 'bar']
splitCase('foo_bar'); // -> ['foo', 'bar']
splitCase('foo.bar'); // -> ['foo', 'bar']
splitCase('fooBar'); // -> ['foo', 'bar']
splitCase('foo-Bar'); // -> ['foo', 'bar']
splitPath Split path into device, dir, name and ext. Name Type Desc path string Path to split return object Object containing dir, name and ext
splitPath('f:/foo/bar.txt'); // -> {dir: 'f:/foo/', name: 'bar.txt', ext: '.txt'}
splitPath('/home/foo/bar.txt'); // -> {dir: '/home/foo/', name: 'bar.txt', ext: '.txt'}
startWith Check if string starts with the given target string. Name Type Desc str string String to search prefix string String prefix return boolean True if string starts with prefix
startWith('ab', 'a'); // -> true
strHash String hash function using djb2. Name Type Desc str string String to hash return number Hash result
strHash('test'); // -> 2090770981
stringify JSON stringify with support for circular object, function etc. Undefined is treated as null value. Name Type Desc obj object Object to stringify spaces number Indent spaces return string Stringified object
stringify({a: function () {}}); // -> '{"a":"[Function function () {}]"}'
var obj = {a: 1};
obj.b = obj;
stringify(obj); // -> '{"a":1,"b":"[Circular ~]"}'
stripAnsi Strip ansi codes from a string. Name Type Desc str string String to strip return string Resulted string
stripAnsi('u001b[4mcakeu001b[0m'); // -> 'cake'
stripCmt Strip comments from source code. Name Type Desc str string Source code return string Code without comments
stripCmts('// comment n var a = 5; / comment2n comment3n */'); // -> ' var a = 5; '
stripColor Strip ansi color codes from a string. Name Type Desc str string String to strip return string Resulted string
stripColor('u001b[31mredu001b[39m'); // -> 'red'
stripHtmlTag Strip html tags from a string. Name Type Desc str string String to strip return string Resulted string
stripHtmlTag('<p>Hello</p>'); // -> 'Hello'
sum Compute sum of given numbers. Name Type Desc ...num number Numbers to calculate return number Sum of numbers
sum(1, 2, 5); // -> 8
template Compile JavaScript template into function that can be evaluated for rendering. Name Type String str string Template string return function Compiled template function
template('Hello <%= name %>!')({name: 'licia'}); // -> 'Hello licia!'
template('<p><%- name %></p>')({name: '<licia>'}); // -> '<p><licia></p>'
template('<%if (echo) {%>Hello licia!<%}%>')({echo: true}); // -> 'Hello licia!'
throttle Return a new throttled version of the passed function. Name Type Desc fn function Function to throttle wait number Number of milliseconds to delay return function New throttled function
$(window).scroll(throttle(updatePos, 100));
through Tiny wrapper of stream Transform. Name Type Desc [opts={}] Object Options to initialize stream transform function Transform implementation [flush] function Flush implementation obj Shortcut for setting objectMode to true. ctor Return a class that extends stream Transform.
fs.createReadStream('in.txt')
.pipe(through(function (chunk, enc, cb)
{
// Do something to chunk this.push(chunk); cb();
})).pipe(fs.createWriteStream('out.txt'));
timeAgo Format datetime with *** time ago statement. Name Type Desc date Date Date to calculate [now=new Date] Date Current date return string Formatted time ago string
var now = new Date().getTime();
timeAgo(now - 1000 * 6); // -> right now
timeAgo(now + 1000 * 15); // -> in 15 minutes
timeAgo(now - 1000 60 60 * 5, now); // -> 5 hours ago
timeTaken Get execution time of a function. Name Type Desc fn function Function to measure time return number Execution time, ms
timeTaken(function ()
{
// Do something.
}); // -> Time taken to execute given function.
toArr Convert value to an array. Name Type Desc val * Value to convert return array Converted array
toArr({a: 1, b: 2}); // -> [{a: 1, b: 2}]
toArr('abc'); // -> ['abc']
toArr(1); // -> [1]
toArr(null); // -> []
toBool Convert value to a boolean. Name Type Desc val * Value to convert return boolean Converted boolean
toBool(true); // -> true
toBool(null); // -> false
toBool(1); // -> true
toBool(0); // -> false
toBool('0'); // -> false
toBool('1'); // -> true
toBool('false'); // -> false
toDate Convert value to a Date. Name Type Desc val * Value to convert return Date Converted Date
toDate('20180501');
toDate('2018-05-01');
toDate(1525107450849);
toEl Convert html string to dom elements. There should be only one root element. Name Type Desc str string Html string return element Html element
toEl('<div>test</div>');
toInt Convert value to an integer. Name Type Desc val * Value to convert return number Converted integer
toInt(1.1); // -> 1
toInt(undefined); // -> 0
toNum Convert value to a number. Name Type Desc val * Value to process return number Resulted number
toNum('5'); // -> 5
toSrc Convert function to its source code. Name Type Desc fn function Function to convert return string Source code
toSrc(Math.min); // -> 'function min() { [native code] }'
toSrc(function () {}) // -> 'function () { }'
toStr Convert value to a string. Name Type Desc val * Value to convert return string Resulted string
toStr(null); // -> ''
toStr(1); // -> '1'
toStr(false); // -> 'false'
toStr([1, 2, 3]); // -> '1,2,3'
topoSort Topological sorting algorithm. Name Type Desc edges array Dependencies return array Sorted order
topoSort([[1, 2], [1, 3], [3, 2]]); // -> [1, 3, 2]
trigger Trigger browser events. Name Type Desc [el=document] element Element to trigger type string Event type opts object Options
trigger(el, 'mouseup');
trigger('keydown', {keyCode: 65});
trim Remove chars or white-spaces from beginning end of string. Name Type Desc str string String to trim chars string array Characters to trim return string Trimmed string
trim(' abc '); // -> 'abc'
trim('_abc_', '_'); // -> 'abc'
trim('_abc_', ['a', 'c', '_']); // -> 'b'
tryIt Run function in a try catch. Name Type Desc fn function Function to try catch [cb] function Callback
tryIt(function ()
{
// Do something that might cause an error.
}, function (err, result)
{
if (err) console.log(err);
});
type Determine the internal JavaScript [[Class]] of an object. Name Type Desc val * Value to get type return string Type of object, lowercased
type(5); // -> 'number'
type({}); // -> 'object'
type(function () {}); // -> 'function'
type([]); // -> 'array'
ucs2 UCS-2 encoding and decoding. encode Create a string using an array of code point values. Name Type Desc arr array Array of code points return string Encoded string decode Create an array of code point values using a string. Name Type Desc str string Input string return array Array of code points
ucs2.encode([0x61, 0x62, 0x63]); // -> 'abc'
ucs2.decode('abc'); // -> [0x61, 0x62, 0x63]
'𝌆'.length; // -> 2
ucs2.decode('𝌆').length; // -> 1
unescape Convert HTML entities back, the inverse of escape. Name Type Desc str string String to unescape return string unescaped string
unescape('You & Me'); -> // -> 'You & Me'
union Create an array of unique values, in order, from all given arrays. Name Type Desc ...arr array Arrays to inspect return array New array of combined values
union([2, 1], [4, 2], [1, 2]); // -> [2, 1, 4]
uniqId Generate a globally-unique id. Name Type Desc prefix string Id prefix return string Globally-unique id
uniqId('eusita_'); // -> 'eustia_xxx'
unique Create duplicate-free version of an array. Name Type Desc arr array Array to inspect [compare] function Function for comparing values return array New duplicate free array
unique([1, 2, 3, 1]); // -> [1, 2, 3]
unzip Opposite of zip. Name Type Desc arr array Array of grouped elements to process return array New array of regrouped elements
unzip([['a', 1, true], ['b', 2, false]]); // -> [['a', 'b'], [1, 2], [true, false]]
upperCase Convert string to upper case. Name Type Desc str string String to convert return string Uppercased string
upperCase('test'); // -> 'TEST'
upperFirst Convert the first character of string to upper case. Name Type Desc str string String to convert return string Converted string
upperFirst('red'); // -> Red
use Use modules that is created by define. Name Type Desc [requires] array Dependencies method function Codes to be executed
define('A', function ()
{
return 'A';
});
use(['A'], function (A)
{
console.log(A + 'B'); // -> 'AB'
});
utf8 UTF-8 encoding and decoding. encode Turn any UTF-8 decoded string into UTF-8 encoded string. Name Type Desc str string String to encode return string Encoded string decode Name Type Desc str string String to decode [safe=false] boolean Suppress error if true return string Decoded string Turn any UTF-8 encoded string into UTF-8 decoded string.
utf8.encode('uD800uDC00'); // -> 'xF0x90x80x80'
utf8.decode('xF0x90x80x80'); // -> 'uD800uDC00'
uuid RFC4122 version 4 compliant uuid generator. Check RFC4122 4.4 for reference.
uuid(); // -> '53ce0497-6554-49e9-8d79-347406d2a88b'
values Create an array of the own enumerable property values of object. Name Type Desc obj object Object to query return array Array of property values
values({one: 1, two: 2}); // -> [1, 2]
viewportScale Get viewport scale.
viewportScale(); // -> 3
waterfall Run an array of functions in series. Name Type Desc tasks array Array of functions [cb] function Callback once completed
waterfall([
function (cb) { cb(null, 'one'); }, function (arg1, cb) { // arg1 -> 'one' cb(null, 'done'); }
], function (err, result)
{
// result -> 'done'
});
workerize Move a stand-alone function to a worker thread. Name Type Desc fn function Function to turn return function Workerized Function
workerize(function (a, b)
{
return a + b;
});
workerize(1, 2).then(function (value)
{
console.log(value); // -> 3
});
wrap Wrap the function inside a wrapper function, passing it as the first argument. Name Type Desc fn * Function to wrap wrapper function Wrapper function return function New function
var p = wrap(escape, function(fn, text)
{
return '<p>' + fn(text) + '</p>';
});
p('You & Me'); // -> '<p>You & Me</p>'
zip Merge together the values of each of the arrays with the values at the corresponding position. Name Type Desc *arr array Arrays to process return array New array of grouped elements
zip(['a', 'b'], [1, 2], [true, false]); // -> [['a', 1, true], ['b', 2, false]]
轉載於猿2048:☞[《Licia:最全最實用的 JavaScript 工具庫》][1]