Descripción general
Underscore.js es una biblioteca muy delgada, con solo 4KB de compresión. Proporciona docenas de métodos de programación funcional, lo que facilita enormemente la programación de JavaScript. El MVC Framework Backbone.js se basa en esta biblioteca.
Define un objeto inferior (_), y todos los métodos de la biblioteca de funciones pertenecen a este objeto. Estos métodos pueden dividirse aproximadamente en cinco categorías: colección, matriz, función, objeto y utilidad.
Instalar en Node.js
Subserscore.js se puede usar no solo en entornos de navegador, sino también en node.js. El comando de instalación es el siguiente:
La copia del código es la siguiente:
NPM Instalar bajo
Sin embargo, Node.js no puede usar _ directamente como un nombre de variable, por lo que debe usar underscore.js utilizando el siguiente método.
La copia del código es la siguiente:
var u = request ("subrayado");
Métodos relacionados con colecciones
Una recopilación de datos del lenguaje JavaScript, incluidas dos estructuras: matrices y objetos. El siguiente método se aplica a ambas estructuras.
mapa
Este método realiza alguna operación en cada miembro de la colección a su vez, y almacena los valores devueltos en una nueva matriz a su vez.
La copia del código es la siguiente:
_.map ([1, 2, 3], función (num) {return num * 3;}); // [3, 6, 9] _.map ({uno: 1, dos: 2, tres: 3}, function (num, key) {return num * 3;}); // [3, 6, 9]
Cada
Este método es similar al mapa, realizando alguna operación en cada miembro del conjunto en secuencia, pero no devuelve un valor.
La copia del código es la siguiente:
_.each ([1, 2, 3], alerta); _.each ({uno: 1, dos: 2, tres: 3}, alerta);
Reducir
Este método realiza alguna operación en cada miembro del conjunto en secuencia, y luego acumula los resultados de la operación en un cierto valor inicial. Después de completar todas las operaciones, se devuelve el valor acumulado.
Este método acepta tres parámetros. El primer parámetro es el conjunto que se procesará, el segundo parámetro es la función que funciona en cada miembro, y el tercer parámetro es la variable utilizada para acumularse.
_.reduce ([1, 2, 3], función (memo, num) {return Memo + num;}, 0); // 6
El segundo parámetro del método de reducción es la función de operación, que en sí misma acepta dos parámetros. La primera es la variable utilizada para acumularse, y la segunda es el valor de cada miembro del conjunto.
filtrar y rechazar
El método de filtro realiza alguna operación en cada miembro de la colección a su vez, y solo devuelve miembros cuyo resultado de operación es verdadero.
La copia del código es la siguiente:
_.filter ([1, 2, 3, 4, 5, 6], función (num) {return num % 2 == 0;}); // [2, 4, 6]
El método de rechazo solo devuelve miembros cuyo resultado de la operación es falso.
La copia del código es la siguiente:
_.reject ([1, 2, 3, 4, 5, 6], función (num) {return num % 2 == 0;}); // [1, 3, 5]
Todos y algunos
Cada método realiza alguna operación en cada miembro de la colección a su vez. Si el resultado de la operación de todos los miembros es verdadero, devuelve verdadero, de lo contrario devuelve falso.
La copia del código es la siguiente:
_.Every ([1, 2, 3, 4, 5, 6], función (num) {return num % 2 == 0;}); // FALSO
Algunos métodos devuelven verdadero siempre que haya el resultado de la operación de un miembro, de lo contrario falso.
La copia del código es la siguiente:
_.Meome ([1, 2, 3, 4, 5, 6], función (num) {return num % 2 == 0;}); // verdadero
Encontrar
Este método realiza alguna operación en cada miembro del conjunto en secuencia, devolviendo el miembro cuyo primer resultado de operación es verdadero. Si el resultado de la operación de todos los miembros es falso, se devuelve indefinido.
La copia del código es la siguiente:
_.find ([1, 2, 3, 4, 5, 6], función (num) {return num % 2 == 0;}); // 2
contiene
Si un valor está dentro del conjunto, el método devuelve verdadero, de lo contrario devuelve falso.
La copia del código es la siguiente:
_.contains ([1, 2, 3], 3); // verdadero
cuenta
Este método realiza alguna operación en cada miembro del conjunto en secuencia, cuenta los miembros con el mismo resultado de la operación que una clase y finalmente devuelve un objeto, lo que indica el número de miembros correspondientes a cada resultado de la operación.
La copia del código es la siguiente:
_.Countby ([1, 2, 3, 4, 5], función (num) {return num % 2 == 0? 'incluso': 'impar';}); // {impar: 3, incluso: 2}
barajar
Este método devuelve una colección de orden desordenado.
La copia del código es la siguiente:
_.shuffle ([1, 2, 3, 4, 5, 6]); // [4, 1, 6, 3, 5, 2]
tamaño
Este método devuelve el número de miembros de la colección.
La copia del código es la siguiente:
_.size ({uno: 1, dos: 2, tres: 3}); // 3
Métodos relacionados con objetos
tóraza
Este método convierte el objeto en una matriz.
La copia del código es la siguiente:
_.toarray ({a: 0, b: 1, c: 2}); // [0, 1, 2]
arrancar
Este método extrae el valor de una propiedad de múltiples objetos en una matriz.
La copia del código es la siguiente:
var standes = [{nombre: 'Moe', edad: 40}, {nombre: 'Larry', edad: 50}, {name: 'curly', edad: 60}]; _.PLUCK (STOOGES, 'Nombre'); // ["Moe", "Larry", "rizado"]
Métodos relacionados con funciones
unir
Este método une el contexto de la función de ejecución y devuelve como una nueva función.
La copia del código es la siguiente:
_.bind (función, objeto, [*argumentos])
Consulte el ejemplo a continuación.
La copia del código es la siguiente:
var o = {p: 2, m: function () {console.log (p);}}; om () // 2 _.bind (om, {p: 1}) () // 1
bindall
Este método une todos los métodos de un objeto (a menos que se especifique lo contrario) a ese objeto.
La copia del código es la siguiente:
var buttonview = {etiqueta: 'subscore', onClick: function () {alert ('Clicked:' + this.label); }, onHover: function () {console.log ('hovering:' + this.label); }}; _.bindall (ButtonView);
parcial
Este enlace de método une una función a un parámetro y devuelve como una nueva función.
La copia del código es la siguiente:
var add = function (a, b) {return a + b; }; add5 = _.Partial (agregar, 5); add5 (10); // 15
memorarse
Este método almacena en caché los resultados en ejecución de una función para un parámetro.
La copia del código es la siguiente:
var fibonacci = _.memoize (function (n) {return n <2? n: fibonacci (n - 1) + fibonacci (n - 2);});
Si una función tiene múltiples parámetros, se debe proporcionar una función hash para generar un valor hash que identifique el caché.
demora
Este método puede retrasar la función durante un tiempo especificado antes de ejecutarse.
La copia del código es la siguiente:
var log = _.bind (console.log, console); _.delay (log, 1000, 'registrado más tarde'); // 'registrado más tarde'
aplazar
Este método puede posponer la función hasta que el número de tareas que se ejecutará es 0 antes de ejecutarse, similar al efecto de SetTimeOut retrasando la ejecución por 0 segundos.
La copia del código es la siguiente:
_.defer (function () {alert ('diferido');});
acelerador
Este método devuelve una nueva versión de una función. Al llamar continuamente esta nueva versión de la función, debe esperar un cierto período de tiempo antes de que se active la próxima ejecución.
La copia del código es la siguiente:
// Devuelve la nueva versión de la función UpdatePosition var liftled = _.throttle (UpdatePosition, 100); // La nueva versión de la función solo activará $ (ventana) .scroll (acelerado);
Debilitar
Este método también devuelve una nueva versión de una función. Cada vez que se llama a esta nueva versión de la función, debe ser un cierto intervalo de tiempo de la última llamada, de lo contrario no será válido. Su aplicación típica es evitar que el usuario haga doble clic en un botón, lo que resulta en dos envíos de formularios.
La copia del código es la siguiente:
$ ("Botón"). ON ("Haga clic", _.deBounce (SubmitForm, 1000));
una vez
Este método devuelve una nueva versión de la función para que la función solo se pueda ejecutar una vez. Utilizado principalmente para la inicialización de objetos.
La copia del código es la siguiente:
var inicialize = _.once (createApplication); inicializar(); inicializar(); // La aplicación se crea solo una vez
Después
Este método devuelve una nueva versión de la función, que solo se ejecutará después de ser llamada un cierto número de veces. Se usa principalmente para confirmar que se completa un conjunto de operaciones antes de reaccionar.
La copia del código es la siguiente:
var rendernotes = _.After (notas.length, render); _.each (notas, function (nota) {nota.asyncsave ({éxito: rendernotes});}); // Todas las notas se guardan, Rendernote se ejecutará una vez
envoltura
Este método pasa una función como un parámetro en otra función, y finalmente devuelve una nueva versión de la primera.
La copia del código es la siguiente:
var hello = function (nombre) {return "Hello:" + Name; }; hola = _.wrap (hello, function (func) {return "antes," + func ("moe") + ", después";}); Hola(); // 'antes, hola: moe, después'
componer
Este método acepta una serie de funciones como parámetros, se ejecuta de regreso a adelante, y el resultado de ejecución de la función anterior se usa como el parámetro en ejecución de la siguiente función. Es decir, convertir la forma de f (g (), h ()) en f (g (h ())).
La copia del código es la siguiente:
var salud = function (name) {return "Hi:" + nombre; }; var excem = function (declaración) {Declaración de retorno + "!"; }; var bienvenido = _.com POSE (exclamar, salud); bienvenido ('moe'); // 'Hola: ¡Moe!'
Herramientas y métodos
plantilla
Este método se utiliza para compilar plantillas HTML. Acepta tres parámetros.
La copia del código es la siguiente:
_.template (TemplateString, [Data], [Configuración])
Los significados de los tres parámetros son los siguientes:
TEMPLATESTRING: cadena de plantilla
Datos: ingrese los datos de la plantilla
Configuración: Configuración
templateestring
La cadena de plantilla TemplateString es un lenguaje HTML ordinario, donde las variables se insertan en forma de < %= ... %>; El objeto de datos es responsable de proporcionar el valor de la variable.
La copia del código es la siguiente:
var txt = "
< %= palabra %>
La copia del código es la siguiente:
"; _.template (txt, {palabra:" hola mundo "}) //"
Hola Mundo
La copia del código es la siguiente:
"
Si el valor de una variable contiene cinco caracteres especiales (& <> "' /), debe escaparse con < %- ... %>.
La copia del código es la siguiente:
var txt = "
< %- palabra %>
La copia del código es la siguiente:
"; _.template (txt, {Word:" H&W "}) //
H&W
Los comandos de JavaScript se pueden insertar en forma de < % ... %>. A continuación se muestra un ejemplo de una declaración de juicio.
La copia del código es la siguiente:
var txt = "< %var i = 0; if (i <1) { %>" + "< %= word %>" + "< %} %>"; _.template (txt, {palabra: "hola mundo"}) // hola mundo
Los usos comunes incluyen declaraciones de bucle.
La copia del código es la siguiente:
var list = "< % _.each (personas, funciones (nombre) { %>
<%= nombre%> <%}); %> "; _.template (lista, {personas: ['moe', 'rizado', 'larry']}); //"
moe
ondulado
Larry "
Si el método de plantilla solo tiene el primer parámetro TemplateString y se omite el segundo parámetro, se devolverá una función y se pueden ingresar los datos a esta función en el futuro.
La copia del código es la siguiente:
var t1 = _.template ("Hola <%= User%>!"); T1 ({usuario: ""}) // '¡Hola!'
datos
Todas las variables en TemplateString son atributos internacionales del objeto OBJ, y el objeto OBJ se refiere al segundo objeto de datos de parámetros. Las siguientes dos oraciones son equivalentes.
La copia del código es la siguiente:
_.template ("hola <%= user%>!", {user: ""}) _.template ("Hola <%= obj.user%>!", {user: ""})
Si desea cambiar el nombre del objeto OBJ, debe configurarlo en el tercer parámetro.
La copia del código es la siguiente:
_.template ("< %if (data.title) { %> title: < %= title %> < %} %>", null, {variable: "data"});
Debido a que la plantilla usa con declaraciones internamente al reemplazar las variables, el método anterior se ejecutará más rápido.