Visão geral
Subscore.js é uma biblioteca muito enxuta, com apenas compressão de 4KB. Ele fornece dezenas de métodos de programação funcional, o que facilita bastante a programação do JavaScript. O backbone.js da estrutura do MVC é baseado nesta biblioteca.
Ele define um objeto sublinhado (_) e todos os métodos da biblioteca de funções pertencem a esse objeto. Esses métodos podem ser divididos aproximadamente em cinco categorias: coleta, matriz, função, objeto e utilidade.
Instale no Node.js
Subldscore.js pode ser usado não apenas em ambientes de navegador, mas também no node.js. O comando de instalação é o seguinte:
A cópia do código é a seguinte:
NPM Instale sublinhado
No entanto, o Node.js não pode usar _ diretamente como um nome de variável; portanto, você precisa usar o subscore.js usando o seguinte método.
A cópia do código é a seguinte:
var u = requer ("sublinhado");
Métodos relacionados a coleções
Uma coleta de dados de linguagem JavaScript, incluindo duas estruturas: matrizes e objetos. O método a seguir se aplica a ambas as estruturas.
mapa
Este método executa alguma operação em cada membro da coleção, por sua vez, e armazena os valores retornados em uma nova matriz por sua vez.
A cópia do código é a seguinte:
_.map ([1, 2, 3], função (num) {return num * 3;}); // [3, 6, 9] _. // [3, 6, 9]
Cada
Esse método é semelhante ao mapa, executando alguma operação em cada membro do conjunto em sequência, mas não retorna um valor.
A cópia do código é a seguinte:
_.each ([1, 2, 3], alerta); _.each ({One: 1, dois: 2, três: 3}, alerta);
Reduzir
Este método executa alguma operação em cada membro do conjunto em sequência e, em seguida, acumula os resultados da operação em um determinado valor inicial. Depois que todas as operações são concluídas, o valor acumulado é retornado.
Este método aceita três parâmetros. O primeiro parâmetro é o conjunto a ser processado, o segundo parâmetro é a função que opera em cada membro e o terceiro parâmetro é a variável usada para se acumular.
_.Reduce ([1, 2, 3], function (memorando, num) {retornar memorando + num;}, 0); // 6
O segundo parâmetro do método de redução é a função de operação, que aceita dois parâmetros. A primeira é a variável usada para acumular e a segunda é o valor de cada membro do conjunto.
filtrar e rejeitar
O método do filtro executa alguma operação em cada membro da coleção, e apenas retorna membros cujo resultado de operação é verdadeiro.
A cópia do código é a seguinte:
_.Filter ([1, 2, 3, 4, 5, 6], função (num) {retorna num % 2 == 0;}); // [2, 4, 6]
O método de rejeição retorna apenas membros cujo resultado de operação é falso.
A cópia do código é a seguinte:
_.Reject ([1, 2, 3, 4, 5, 6], função (num) {retorna num % 2 == 0;}); // [1, 3, 5]
Todos e alguns
O método todo método executa alguma operação em cada membro da coleção por sua vez. Se o resultado da operação de todos os membros for verdadeiro, ele retornará verdadeiro, caso contrário, ele retornará falso.
A cópia do código é a seguinte:
_.avery ([1, 2, 3, 4, 5, 6], função (num) {retornar num % 2 == 0;}); // false
Algum método retorna verdadeiro, desde que exista o resultado de operação de um membro, caso contrário, falsa.
A cópia do código é a seguinte:
_. // verdadeiro
Encontrar
Este método executa alguma operação em cada membro do conjunto em sequência, retornando o membro cujo primeiro resultado de operação é verdadeiro. Se o resultado da operação de todos os membros for falso, indefinido será devolvido.
A cópia do código é a seguinte:
_.find ([1, 2, 3, 4, 5, 6], função (num) {retorna num % 2 == 0;}); // 2
contém
Se um valor estiver dentro do conjunto, o método retornará true, caso contrário, ele retornará falso.
A cópia do código é a seguinte:
_.Contains ([1, 2, 3], 3); // verdadeiro
Condeby
Esse método executa alguma operação em cada membro do conjunto em sequência, conta com os membros com o mesmo resultado de operação que uma classe e, finalmente, retorna um objeto, indicando o número de membros correspondentes a cada resultado de operação.
A cópia do código é a seguinte:
_. // {ímpar: 3, mesmo: 2}
embaralhar
Este método retorna uma coleção de ordem desordenada.
A cópia do código é a seguinte:
_.Shuffle ([1, 2, 3, 4, 5, 6]); // [4, 1, 6, 3, 5, 2]
tamanho
Este método retorna o número de membros da coleção.
A cópia do código é a seguinte:
_.size ({One: 1, dois: 2, três: 3}); // 3
Métodos relacionados a objetos
ToArray
Este método converte o objeto em uma matriz.
A cópia do código é a seguinte:
_.toArray ({a: 0, b: 1, c: 2}); // [0, 1, 2]
arrancar
Este método extrai o valor de uma propriedade de vários objetos para uma matriz.
A cópia do código é a seguinte:
var standes = [{nome: 'moe', idade: 40}, {name: 'larry', idade: 50}, {name: 'curly', idade: 60}]; _.pluck (stooges, 'nome'); // ["moe", "Larry", "Curly"]
Métodos relacionados a funções
vincular
Este método liga o contexto do tempo de execução da função e retorna como uma nova função.
A cópia do código é a seguinte:
_.bind (função, objeto, [*argumentos])
Por favor, veja o exemplo abaixo.
A cópia do código é a seguinte:
var o = {p: 2, m: function () {console.log (p);}}; om () // 2 _.bind (om, {p: 1}) () // 1
bindall
Este método liga todos os métodos de um objeto (a menos que especificado de outra forma) a esse objeto.
A cópia do código é a seguinte:
var ButtonView = {Label: 'subscore', OnClick: function () {alert ('Clicou:' + this.label); }, ONHOVER: function () {console.log ('Passando:' + this.label); }}; _.bindall (ButtonView);
parcial
Essa ligação do método liga uma função a um parâmetro e retorna como uma nova função.
A cópia do código é a seguinte:
var add = function (a, b) {return a + b; }; add5 = _.parcial (add, 5); add5 (10); // 15
MECHOIZE
Este método armazena os resultados em execução de uma função para um parâmetro.
A cópia do código é a seguinte:
var fibonacci = _.memoize (function (n) {return n <2? n: fibonacci (n - 1) + fibonacci (n - 2);});
Se uma função possui vários parâmetros, é necessário fornecer uma função de hash para gerar um valor de hash que identifica o cache.
atraso
Este método pode atrasar a função para um tempo especificado antes de ser executado.
A cópia do código é a seguinte:
var log = _.bind (console.log, console); _.delay (log, 1000, 'registrado posteriormente'); // 'registrado mais tarde'
adiar
Esse método pode adiar a função até que o número de tarefas a ser executado seja 0 antes de executar, semelhante ao efeito do setTimeout, atrasando a execução em 0 segundos.
A cópia do código é a seguinte:
_.defer (function () {alert ('diferido');});
acelerar
Este método retorna uma nova versão de uma função. Ao chamar esta nova versão da função continuamente, você deve aguardar um certo período de tempo antes que a próxima execução seja acionada.
A cópia do código é a seguinte:
// retorna a nova versão da função UpdatePosition var apolada = _.throttle (UpdatePosition, 100); // A nova versão da função acionará apenas $ (janela) .Scroll (acelerado);
Debounce
Este método também retorna uma nova versão de uma função. Cada vez que essa nova versão da função é chamada, deve ser um certo intervalo de tempo da última chamada, caso contrário, será inválido. Seu aplicativo típico é impedir que o usuário clique duas vezes em um botão, resultando em dois envios de formulários.
A cópia do código é a seguinte:
$ ("botão"). on ("clique", _.debounce (submitform, 1000));
uma vez
Este método retorna uma nova versão da função para que a função possa ser executada apenas uma vez. Usado principalmente para inicialização do objeto.
A cópia do código é a seguinte:
var inicialize = _.once (createApplication); inicializar(); inicializar(); // o aplicativo é criado apenas uma vez
Depois
Este método retorna uma nova versão da função, que só será executada após ser chamada de um certo número de vezes. É usado principalmente para confirmar que um conjunto de operações é concluído antes de reagir.
A cópia do código é a seguinte:
var renderNotes = _.After (Notes.Length, render); _.Each (Notas, function (Note) {note.asyncSave ({Sucesso: renderNotes});}); // todas as notas são salvas, RenderNote será executado uma vez
enrolar
Este método passa uma função como um parâmetro em outra função e finalmente retorna uma nova versão do primeiro.
A cópia do código é a seguinte:
var hello = function (nome) {return "hello:" + name; }; Olá = _.wrap (hello, function (func) {return "antes," + func ("moe") + ", depois";}); olá(); // 'antes, olá: moe, depois'
compor
Este método aceita uma série de funções como parâmetros, é executada de volta para frente e o resultado em execução da função anterior é usada como o parâmetro em execução da próxima função. Ou seja, converta a forma de f (g (), h ()) em f (g (h ())).
A cópia do código é a seguinte:
var greet = function (nome) {return "oi:" + nome; }; VAR Excem = function (declaração) {declaração de retorno + "!"; }; var de boas -vindas = _.compose (exclamar, cumprimentar); bem -vindo ('moe'); // 'oi: moe!'
Ferramentas e métodos
modelo
Este método é usado para compilar modelos HTML. Ele aceita três parâmetros.
A cópia do código é a seguinte:
_.template (TemplateString, [Data], [Configurações])
Os significados dos três parâmetros são os seguintes:
Templatestring: String de modelo
Dados: insira os dados do modelo
Configurações: Configurações
templatestring
A sequência de modelos templatestring é uma linguagem HTML comum, onde as variáveis são inseridas na forma de < %=… %>; O objeto de dados é responsável por fornecer o valor da variável.
A cópia do código é a seguinte:
var txt = "
< %= word %>
A cópia do código é a seguinte:
"; _.template (txt, {word:" hello world "}) //"
Olá mundo
A cópia do código é a seguinte:
"
Se o valor de uma variável contiver cinco caracteres especiais (& <> "' /), ela precisará ser escapada com < %-… %>.
A cópia do código é a seguinte:
var txt = "
< %- Word %>
A cópia do código é a seguinte:
"; _.template (txt, {word:" h & w "}) //
H&W
Os comandos JavaScript podem ser inseridos na forma de < %… %>. Abaixo está um exemplo de uma declaração de julgamento.
A cópia do código é a seguinte:
var txt = "< %var i = 0; if (i <1) { %>" + "< %= word %>" + "< %} %>"; _.template (txt, {word: "hello world"}) // Olá, mundo
Os usos comuns incluem declarações de loop.
A cópia do código é a seguinte:
var lista = "< % _.Each (pessoas, função (nome) { %>
<%= nome%> <%}); %> "; _.template (list, {pessoas: ['moe', 'curly', 'larry']}); //"
moe
encaracolado
Larry ”
Se o método do modelo tiver apenas o primeiro parâmetro templateString e o segundo parâmetro for omitido, uma função será retornada e os dados poderão ser inseridos nessa função no futuro.
A cópia do código é a seguinte:
var t1 = _.template ("hello <%= user%>!"); t1 ({user: ""}) // 'Olá!'
dados
Todas as variáveis no templatestror são atributos internamente do objeto OBJ, e o objeto OBJ refere -se ao segundo objeto de dados do parâmetro. As duas frases a seguir são equivalentes.
A cópia do código é a seguinte:
_.template ("hello <%= user%>!", {user: ""}) _.template ("hello <%= obj.user%>!", {user: ""})
Se você deseja alterar o nome do objeto OBJ, precisará defini -lo no terceiro parâmetro.
A cópia do código é a seguinte:
_.template ("< %if (data.title) { %> title: < %= title %> < %} %>", null, {variável: "dados"});
Como o modelo usa com instruções internamente ao substituir variáveis, o método acima será mais rápido.