Aperçu
Sous-sachet.js est une bibliothèque très maigre, avec seulement une compression de 4 Ko. Il fournit des dizaines de méthodes de programmation fonctionnelle, ce qui facilite considérablement la programmation JavaScript. Le MVC Framework Backbone.js est basé sur cette bibliothèque.
Il définit un objet de soulignement (_), et toutes les méthodes de la bibliothèque de fonctions appartiennent à cet objet. Ces méthodes peuvent être à peu près divisées en cinq catégories: collection, tableau, fonction, objet et utilité.
Installer sous Node.js
Sous-cite.js peut être utilisé non seulement dans les environnements de navigateur, mais aussi dans Node.js. La commande d'installation est la suivante:
La copie de code est la suivante:
NPM Install Contrôle
Cependant, Node.js ne peut pas utiliser _ directement comme nom de variable, vous devez donc utiliser un sous-ore.js en utilisant la méthode suivante.
La copie de code est la suivante:
var u = require ("sous-traitant");
Méthodes liées aux collections
Une collecte de données du langage JavaScript, y compris deux structures: des tableaux et des objets. La méthode suivante s'applique aux deux structures.
carte
Cette méthode effectue une certaine opération sur chaque membre de la collection à son tour et stocke les valeurs retournées dans un nouveau tableau tour à tour.
La copie de code est la suivante:
_.map ([1, 2, 3], fonction (num) {return num * 3;}); // [3, 6, 9] _.map ({One: 1, deux: 2, trois: 3}, fonction (num, key) {return num * 3;}); // [3, 6, 9]
Chaque
Cette méthode est similaire à MAP, effectuant une certaine opération sur chaque membre de l'ensemble de séquence, mais ne renvoie pas de valeur.
La copie de code est la suivante:
_.each ([1, 2, 3], alerte); _.Each ({One: 1, Two: 2, trois: 3}, alert);
Réduire
Cette méthode effectue une certaine opération sur chaque membre de l'ensemble de séquence, puis accumule les résultats de l'opération sur une certaine valeur initiale. Une fois toutes les opérations terminées, la valeur accumulée est renvoyée.
Cette méthode accepte trois paramètres. Le premier paramètre est l'ensemble à traiter, le deuxième paramètre est la fonction qui fonctionne sur chaque membre, et le troisième paramètre est la variable utilisée pour s'accumuler.
_.reduce ([1, 2, 3], fonction (mémo, num) {return memo + num;}, 0); // 6
Le deuxième paramètre de la méthode de réduction est la fonction de fonctionnement, qui accepte elle-même deux paramètres. Le premier est la variable utilisée pour s'accumuler, et la seconde est la valeur de chaque membre de l'ensemble.
filtre et rejeter
La méthode du filtre effectue une certaine opération sur chaque membre de la collection à son tour et ne renvoie que les membres dont le résultat de l'opération est vrai.
La copie de code est la suivante:
_.filter ([1, 2, 3, 4, 5, 6], fonction (num) {return num% 2 == 0;}); // [2, 4, 6]
La méthode de rejet ne renvoie que les membres dont le résultat de l'opération est faux.
La copie de code est la suivante:
_.reject ([1, 2, 3, 4, 5, 6], fonction (num) {return num% 2 == 0;}); // [1, 3, 5]
Chaque et certains
La méthode effectue une certaine opération sur chaque membre de la collection tour à tour. Si le résultat de l'opération de tous les membres est vrai, il renvoie vrai, sinon il renvoie False.
La copie de code est la suivante:
_.every ([1, 2, 3, 4, 5, 6], fonction (num) {return num% 2 == 0;}); // FAUX
Une méthode renvoie true tant qu'il y a un résultat de fonctionnement d'un membre, sinon faux.
La copie de code est la suivante:
_.Some ([1, 2, 3, 4, 5, 6], fonction (num) {return num% 2 == 0;}); // vrai
Trouver
Cette méthode effectue une certaine opération sur chaque membre de l'ensemble de séquence, renvoyant le membre dont le premier résultat d'opération est vrai. Si le résultat de l'opération de tous les membres est faux, un non-défini est renvoyé.
La copie de code est la suivante:
_.find ([1, 2, 3, 4, 5, 6], fonction (num) {return num% 2 == 0;}); // 2
contient
Si une valeur est dans l'ensemble, la méthode renvoie true, sinon il renvoie False.
La copie de code est la suivante:
_.CONTAINS ([1, 2, 3], 3); // vrai
countby
Cette méthode effectue une certaine opération sur chaque membre de l'ensemble de séquence, compte les membres avec le même résultat d'opération en tant que classe, et renvoie enfin un objet, indiquant le nombre de membres correspondant à chaque résultat d'opération.
La copie de code est la suivante:
_.Countby ([1, 2, 3, 4, 5], fonction (num) {return num% 2 == 0? 'même': 'odd';}); // {Odd: 3, même: 2}
mélanger
Cette méthode renvoie une collection d'ordre désordonné.
La copie de code est la suivante:
_.shuffle ([1, 2, 3, 4, 5, 6]); // [4, 1, 6, 3, 5, 2]
taille
Cette méthode renvoie le nombre de membres de la collection.
La copie de code est la suivante:
_.Size ({One: 1, Two: 2, Three: 3}); // 3
Méthodes liées à l'objet
toarray
Cette méthode convertit l'objet en un tableau.
La copie de code est la suivante:
_.toArray ({a: 0, b: 1, c: 2}); // [0, 1, 2]
cueillir
Cette méthode extrait la valeur d'une propriété de plusieurs objets dans un tableau.
La copie de code est la suivante:
var stands = [{name: 'moe', âge: 40}, {name: 'larry', Âge: 50}, {name: 'curly', Âge: 60}]; _.Pluck (Stooges, 'Name'); // ["Moe", "Larry", "Curly"]
Méthodes liées aux fonctions
lier
Cette méthode lie le contexte de l'exécution de la fonction et revient en tant que nouvelle fonction.
La copie de code est la suivante:
_.bind (fonction, objet, [* arguments])
Veuillez consulter l'exemple ci-dessous.
La copie de code est la suivante:
var o = {p: 2, m: function () {console.log (p);}}; om () // 2 _.bind (om, {p: 1}) () // 1
lier
Cette méthode lie toutes les méthodes d'un objet (sauf indication contraire) à cet objet.
La copie de code est la suivante:
var ButtonView = {label: 'calendrier', onClick: function () {alert ('cliquer:' + this.label); }, onhover: function () {console.log ('hoverring:' + this.label); }}; _.Bindall (ButtonView);
partiel
Cette liaison de méthode lie une fonction à un paramètre et renvoie en tant que nouvelle fonction.
La copie de code est la suivante:
var add = fonction (a, b) {return a + b; }; add5 = _.Partial (ajouter, 5); add5 (10); // 15
faire une mémoire
Cette méthode cache les résultats en cours d'exécution d'une fonction pour un paramètre.
La copie de code est la suivante:
var fibonacci = _.Memoize (fonction (n) {return n <2? n: fibonacci (n - 1) + fibonacci (n - 2);});
Si une fonction a plusieurs paramètres, un hashfonction doit être fourni pour générer une valeur de hachage qui identifie le cache.
retard
Cette méthode peut retarder la fonction pour une durée spécifiée avant l'exécution.
La copie de code est la suivante:
var log = _.bind (console.log, console); _.delay (log, 1000, «enregistré plus tard»); // "enregistré plus tard"
reporter
Cette méthode peut reporter la fonction jusqu'à ce que le nombre de tâches à exécuter soit 0 avant l'exécution, similaire à l'effet de Settimeout retardant l'exécution de 0 seconde.
La copie de code est la suivante:
_.defer (function () {alert ('Deferred');});
étrangler
Cette méthode renvoie une nouvelle version d'une fonction. Lorsque vous appelez cette nouvelle version de la fonction en continu, vous devez attendre une certaine période avant que la prochaine exécution ne soit déclenchée.
La copie de code est la suivante:
// Renvoie la nouvelle version de la fonction de mise à jour var throtTled = _.throttle (UpdatePosition, 100); // La nouvelle version de la fonction ne déclenchera que $ (fenêtre) .scroll (Throtted);
Déboucher
Cette méthode renvoie également une nouvelle version d'une fonction. Chaque fois que cette nouvelle version de la fonction est appelée, elle doit être un certain intervalle de temps du dernier appel, sinon il sera invalide. Son application typique est d'empêcher l'utilisateur de double-cliquer sur un bouton, ce qui entraîne deux soumissions.
La copie de code est la suivante:
$ ("bouton"). sur ("cliquez", _.debounce (soumisForm, 1000));
une fois
Cette méthode renvoie une nouvelle version de la fonction afin que la fonction ne puisse être exécutée qu'une seule fois. Principalement utilisé pour l'initialisation des objets.
La copie de code est la suivante:
var initialize = _.once (createApplication); initialiser(); initialiser(); // l'application n'est créée qu'une seule fois
Après
Cette méthode renvoie une nouvelle version de la fonction, qui ne sera exécutée qu'après avoir été appelée un certain nombre de fois. Il est principalement utilisé pour confirmer qu'un ensemble d'opérations est terminé avant de réagir.
La copie de code est la suivante:
var rendernotes = _.after (notes.length, rendu); _.each (notes, function (note) {note.asyncsave ({Success: Rendernotes});}); // Toutes les notes sont enregistrées, Rendernote fonctionnera une fois
envelopper
Cette méthode transmet une fonction comme un paramètre dans une autre fonction et renvoie enfin une nouvelle version de la première.
La copie de code est la suivante:
var hello = function (name) {return "Hello:" + name; }; bonjour = _.wrap (bonjour, fonction (func) {return "avant," + func ("moe") + ", après";}); Bonjour(); // 'avant, bonjour: moe, après'
composer
Cette méthode accepte une série de fonctions comme paramètres, fonctionne de l'arrière vers l'avant et le résultat en cours d'exécution de la fonction précédente est utilisé comme paramètre en cours d'exécution de la fonction suivante. C'est-à-dire, convertir la forme de f (g (), h ()) en f (g (h ())).
La copie de code est la suivante:
var salut = function (name) {return "hi:" + name; }; var exmec = fonction (instruction) {return instruction + "!"; }; var bienvenue = _.compose (s'exclamer, saluer); Bienvenue («Moe»); // 'Salut: Moe!'
Outils et méthodes
modèle
Cette méthode est utilisée pour compiler les modèles HTML. Il accepte trois paramètres.
La copie de code est la suivante:
_.Template (templatestring, [data], [Paramètres])
Les significations des trois paramètres sont les suivantes:
Templatestring: chaîne de modèle
Données: entrez les données du modèle
Paramètres: Paramètres
template
Le modèle de chaîne Templatestring est une langue HTML ordinaire, où les variables sont insérées sous la forme de <% =…%>; L'objet de données est chargé de fournir la valeur de la variable.
La copie de code est la suivante:
var txt = "
<% = word%>
La copie de code est la suivante:
"; _.emplate (txt, {word:" Hello World "}) //"
Bonjour le monde
La copie de code est la suivante:
"
Si la valeur d'une variable contient cinq caractères spéciaux (& <> ”'/), il doit être échappé avec <% -…%>.
La copie de code est la suivante:
var txt = "
<% - Word%>
La copie de code est la suivante:
"; _.emplate (txt, {word:" h & w "}) //
H&W
Les commandes JavaScript peuvent être insérées sous la forme de <%…%>. Vous trouverez ci-dessous un exemple de déclaration de jugement.
La copie de code est la suivante:
var txt = "<% var i = 0; if (i <1) {%>" + "<% = word%>" + "<%}%>"; _.Template (txt, {Word: "Hello World"}) // Hello World
Les usages courants incluent les instructions de boucle.
La copie de code est la suivante:
var list = "<% _.each (personnes, fonction (nom) {%>
<% = name%> <%}); %> "; _.Template (list, {People: ['Moe', 'Curly', 'Larry']}); //"
moe
bouclé
Larry "
Si la méthode du modèle n'a que le premier paramètre Templatestring et que le deuxième paramètre est omis, une fonction sera renvoyée et les données peuvent être entrées à cette fonction à l'avenir.
La copie de code est la suivante:
var t1 = _.Template ("Hello <% = user%>!"); t1 ({utilisateur: ""}) // 'bonjour!'
données
Toutes les variables dans Templatestring sont des attributs en interne de l'objet OBJ, et l'objet OBJ fait référence au deuxième objet de données de paramètre. Les deux phrases suivantes sont équivalentes.
La copie de code est la suivante:
_.Template ("Hello <% = user%>!", {utilisateur: ""}) _.Template ("Hello <% = obj.User%>!", {User: ""})
Si vous souhaitez modifier le nom de l'objet OBJ, vous devez le définir dans le troisième paramètre.
La copie de code est la suivante:
_.Template ("<% if (data.title) {%> title: <% = title%> <%}%>", null, {variable: "data"});
Étant donné que le modèle utilise avec des instructions en interne lors du remplacement des variables, la méthode ci-dessus s'exécutera plus rapidement.