Table des matières
1. CommonJS
La différence entre exports et module.exports
2. AMD et RequireJS
3. CMD et seajs
Maison interface Web js tutoriel Apprenez les spécifications du module de node(1) de 0 à 1

Apprenez les spécifications du module de node(1) de 0 à 1

Jan 24, 2017 pm 03:30 PM
node 模块

Avant d'expliquer les concepts de CommonJS, AMD et CMD, nous comprenons d'abord la modularité de js. La modularisation, comme son nom l'indique, consiste à décomposer le projet selon des fonctions ou une autre logique. Chaque partie ne gère qu'une seule fonction pour découpler les fonctions afin de faciliter le développement et la maintenance futurs. Ensuite, la modularisation doit avoir les capacités suivantes pour diviser et assembler des modules :

  1. Définir les modules encapsulés

  2. Définir la dépendance ; du nouveau module sur d'autres modules ;

  3. peut prendre en charge l'introduction d'autres modules

Ensuite, un ensemble de spécifications est nécessaire. Des lignes directrices ont été utilisées ; pour définir ces capacités, sont apparus CommonJS, AMD, CMD, etc.

1. CommonJS

CommonJS s'appelait à l'origine ServerJS, qui est la spécification de js côté serveur. C'est la spécification utilisée par node. Selon la spécification CommonJS, un seul fichier est un module, require est utilisé pour charger un module et exports est utilisé pour exposer des méthodes ou des propriétés du module à l'extérieur.

Par exemple :

// hello.jsfunction say(username){    console.log( 'hello, '+username );
}

exports.say = say;
Copier après la connexion

=============

// main.jsvar person = require('./hello');

person.say('wenzi'); // hello, wenziperson.say('师少兵'); // hello, 师少兵person.say('NUC'); // hello, NUC
Copier après la connexion

En même temps, l'instruction require peut être écrite n'importe où dans le fichier, à condition qu'elle soit utilisée avant la référence, elle n'a pas besoin d'être écrite au début du fichier. Cependant, afin de faciliter la lecture du code et de voir intuitivement quels modules sont actuellement référencés, il est préférable de le mettre au début du fichier.

La différence entre exports et module.exports

Certaines personnes ont peut-être vu utiliser directement exports, et d'autres utiliser module.exports. Voici une brève explication de la différence entre les deux.

Prenons un exemple simple :

var a = {name:'wenzi'};var b = a;console.log(a); // {name: "wenzi"}console.log(b); // {name: "wenzi"}
Copier après la connexion

Les résultats de sortie de a et b sont les mêmes. Maintenant, je change la valeur de name dans b :

b.name = 'shaobing';console.log(a); // {name: "shaobing"}console.log(b); // {name: "shaobing"}
Copier après la connexion

Les résultats de sortie de a et b ont changé. Je redéclare b :

var b = {name:'师少兵'};console.log(a); // {name: "shaobing"}console.log(b); // {name: "师少兵"}
Copier après la connexion

Ces trois exemples génèrent trois résultats :

  1. déclare un objet, et attribue a à b, puis a et b génèrent le même résultat ;

  2. change le nom dans b, puis le nom dans a change également

  3. Redéclare l'objet b ; , alors le nom dans a ne change pas avec b

Explication : a est un objet, b est la référence à a, c'est-à-dire a et b point dans la même mémoire, donc la sortie en 1 est la même. Lorsque b est modifié, c'est-à-dire que le contenu de a et b pointant vers la même adresse mémoire a changé, a sera également reflété, donc la sortie du deuxième exemple sera la même. Lorsque b est écrasé, b pointe vers une nouvelle mémoire et a pointe toujours vers la mémoire d'origine, donc la sortie finale sera différente.

Ensuite, vous pouvez introduire exports et module.exports à ce moment :

  1. La valeur initiale de module.exports est un objet vide {}

  2. exports est une référence à module.exports

  3. require() renvoie module.exports au lieu de exports

Si module.exports a un nouveau pointeur, les exportations ne seront pas valides ; si module.exports n'a pas changé, exportez-le simplement directement.

2. AMD et RequireJS

En parlant d'AMD, je dois dire RequireJS qu'AMD est devenu indépendant de la communauté CommonJS et est devenu la seule communauté AMD. La popularité d'AMD est en grande partie due. Il s'appuie également sur la promotion des auteurs RequireJS.

Dans la spécification AMD, le format de module recommandé par défaut est :

// hello.js// 将需要引入的模块全部写入到数组中,然后传递参数进行调用define(['a', 'b'], function(a, ,b){    // do something    return{
        hello : function(username){            console.log( 'hello, '+username );
        }
    }
})
Copier après la connexion

==========

// main.jsdefine(['./hello'], function(h){
    h.hello('wenzi');
})
Copier après la connexion

En d'autres termes, dans AMD, les modules doivent être définis à l'aide de define et les dépendances sont transmises via les paramètres de fonction. L'un des avantages de ceci est que toutes les dépendances peuvent être vues d'un seul coup d'œil.

3. CMD et seajs

La spécification CMD a été proposée par le célèbre Dieu Yubo en Chine. La seule chose à faire est 就近依赖. à cet endroitrequire. SeaJS utilise la spécification CMD :

// hello.jsdefine(function(require, exports, module){    var a = require('a');    // do a    var b = require( 'b' );    // do b    module.exports.hello = hello; // 对外输出hello})
Copier après la connexion

Vous pouvez également voir la différence entre AMD et CMD à partir d'ici :

AMD doit généralement introduire toutes les dépendances en même temps, puis les transmettre via des paramètres tandis que CMD ne les introduit qu'en cas de besoin

Cependant, AMD prend également en charge les formats d'importation tels que CMD, mais l'exécution interne est toujours basée sur la logique d'AMD.

4. Résumé

Cet article présente les différences et les connexions pertinentes entre les spécifications CommonJS, AMD et CMD :

  1. CommonJS : Chaque fichier est un module et n'a pas besoin d'être défini. Le nœud utilise cette spécification

  2. AMD : utilisez Définir pour définir un module et faites attention à

    en fonction de celui-ci ; à l'avance;

  3. CMD : utilisez Définir pour définir les modules et dépendre de

    à proximité

Ensuite, nous va commencer L'apprentissage du nœud est officiellement commencé.


Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Le module d'extension WLAN s'est arrêté [correctif] Le module d'extension WLAN s'est arrêté [correctif] Feb 19, 2024 pm 02:18 PM

S'il y a un problème avec le module d'extension WLAN sur votre ordinateur Windows, cela peut entraîner une déconnexion d'Internet. Cette situation est souvent frustrante, mais heureusement, cet article propose quelques suggestions simples qui peuvent vous aider à résoudre ce problème et à rétablir le bon fonctionnement de votre connexion sans fil. Réparer le module d'extensibilité WLAN s'est arrêté Si le module d'extensibilité WLAN a cessé de fonctionner sur votre ordinateur Windows, suivez ces suggestions pour le réparer : Exécutez l'utilitaire de résolution des problèmes réseau et Internet pour désactiver et réactiver les connexions réseau sans fil Redémarrez le service de configuration automatique WLAN Modifier les options d'alimentation Modifier Paramètres d'alimentation avancés Réinstaller le pilote de la carte réseau Exécuter certaines commandes réseau Examinons-le maintenant en détail

Le module d'extensibilité WLAN ne peut pas démarrer Le module d'extensibilité WLAN ne peut pas démarrer Feb 19, 2024 pm 05:09 PM

Cet article détaille les méthodes permettant de résoudre l'événement ID10000, qui indique que le module d'extension LAN sans fil ne peut pas démarrer. Cette erreur peut apparaître dans le journal des événements du PC Windows 11/10. Le module d'extensibilité WLAN est un composant de Windows qui permet aux fournisseurs de matériel indépendants (IHV) et aux fournisseurs de logiciels indépendants (ISV) de fournir aux utilisateurs des fonctionnalités de réseau sans fil personnalisées. Il étend les fonctionnalités des composants réseau Windows natifs en ajoutant la fonctionnalité par défaut de Windows. Le module d'extensibilité WLAN est démarré dans le cadre de l'initialisation lorsque le système d'exploitation charge les composants réseau. Si le module d'extension LAN sans fil rencontre un problème et ne peut pas démarrer, vous pouvez voir un message d'erreur dans le journal de l'Observateur d'événements.

Comment utiliser Express pour gérer le téléchargement de fichiers dans un projet de nœud Comment utiliser Express pour gérer le téléchargement de fichiers dans un projet de nœud Mar 28, 2023 pm 07:28 PM

Comment gérer le téléchargement de fichiers ? L'article suivant vous expliquera comment utiliser Express pour gérer les téléchargements de fichiers dans le projet de nœud. J'espère qu'il vous sera utile !

Python bibliothèques standard couramment utilisées et bibliothèques tierces module 2-sys Python bibliothèques standard couramment utilisées et bibliothèques tierces module 2-sys Apr 10, 2023 pm 02:56 PM

1. Introduction au module sys Le module os présenté précédemment est principalement destiné au système d'exploitation, tandis que le module sys de cet article est principalement destiné à l'interpréteur Python. Le module sys est un module fourni avec Python. C'est une interface permettant d'interagir avec l'interpréteur Python. Le module sys fournit de nombreuses fonctions et variables pour gérer différentes parties de l'environnement d'exécution Python. 2. Méthodes couramment utilisées du module sys Vous pouvez vérifier quelles méthodes sont incluses dans le module sys via la méthode dir() : import sys print(dir(sys))1.sys.argv-get les paramètres de ligne de commande sys. argv est utilisé pour implémenter la commande depuis l'extérieur du programme. Le programme reçoit des paramètres et il est capable d'obtenir la colonne des paramètres de la ligne de commande.

Une analyse approfondie de l'outil de gestion de processus de Node « pm2 » Une analyse approfondie de l'outil de gestion de processus de Node « pm2 » Apr 03, 2023 pm 06:02 PM

Cet article partagera avec vous l'outil de gestion de processus de Node "pm2" et expliquera pourquoi pm2 est nécessaire, comment installer et utiliser pm2, j'espère qu'il sera utile à tout le monde !

Programmation Python : explication détaillée des points clés de l'utilisation de tuples nommés Programmation Python : explication détaillée des points clés de l'utilisation de tuples nommés Apr 11, 2023 pm 09:22 PM

Préface Cet article continue de présenter le module de collection Python. Cette fois, il y introduit principalement les tuples nommés, c'est-à-dire l'utilisation de nommétuple. Sans plus tarder, commençons – n'oubliez pas d'aimer, de suivre et de transmettre ~ ^_^Création de tuples nommés La classe de tuple nommé nomméeTuples dans la collection Python donne un sens à chaque position dans le tuple et améliore la lisibilité du code sexuel et descriptif. Ils peuvent être utilisés partout où des tuples réguliers sont utilisés et ajoutent la possibilité d'accéder aux champs par nom plutôt que par index de position. Il provient des collections de modules intégrés Python. La syntaxe générale utilisée est : importer des collections XxNamedT

Enseignement du nœud PI: Qu'est-ce qu'un nœud PI? Comment installer et configurer le nœud PI? Enseignement du nœud PI: Qu'est-ce qu'un nœud PI? Comment installer et configurer le nœud PI? Mar 05, 2025 pm 05:57 PM

Explication détaillée et guide d'installation pour les nœuds de pignon Cet article introduira l'écosystème de pignon en détail - nœuds PI, un rôle clé dans l'écosystème de pignon et fournir des étapes complètes pour l'installation et la configuration. Après le lancement du réseau de test de la blockchain pèse, les nœuds PI sont devenus une partie importante de nombreux pionniers participant activement aux tests, se préparant à la prochaine version du réseau principal. Si vous ne connaissez pas encore Pinetwork, veuillez vous référer à ce qu'est Picoin? Quel est le prix de l'inscription? PI Utilisation, exploitation minière et sécurité. Qu'est-ce que Pinetwork? Le projet Pinetwork a commencé en 2019 et possède sa pièce exclusive de crypto-monnaie PI. Le projet vise à en créer un que tout le monde peut participer

Comment utiliser DateTime en Python Comment utiliser DateTime en Python Apr 19, 2023 pm 11:55 PM

Toutes les données reçoivent automatiquement un « DOB » (Date de naissance) au début. Par conséquent, il est inévitable de rencontrer des données de date et d’heure lors du traitement des données à un moment donné. Ce didacticiel vous fera découvrir le module datetime en Python et l'utilisation de certaines bibliothèques périphériques telles que pandas et pytz. En Python, tout ce qui concerne la date et l'heure est géré par le module datetime, qui divise le module en 5 classes différentes. Les classes sont simplement des types de données qui correspondent à des objets. La figure suivante résume les 5 classes datetime en Python ainsi que les attributs et exemples couramment utilisés. 3 extraits utiles 1. Convertir la chaîne au format datetime, peut-être en utilisant datet

See all articles