Maison interface Web js tutoriel Comparaison des différences entre SeaJS et RequireJS_AngularJS

Comparaison des différences entre SeaJS et RequireJS_AngularJS

May 16, 2016 pm 04:28 PM
差异

"L'histoire n'est pas le passé, l'histoire se passe maintenant. Avec le développement rapide de spécifications telles que le W3C et les navigateurs, le développement modulaire frontal deviendra progressivement une infrastructure. Tout finira par devenir de l'histoire et l'avenir sera meilleur. "—— Citant le dernier paragraphe de l'article original de Yu Bo, je suis personnellement tout à fait d'accord. Maintenant que nous parlons du « futur », je pense personnellement que si le module front-end js continue de se développer, son format de module est susceptible de devenir une spécification standard pour le futur WEB, entraînant de multiples méthodes d'implémentation. Tout comme le format JSON, il est finalement devenu un standard et a été implémenté nativement par les navigateurs.

Qui est le plus susceptible de devenir le futur standard des modules asynchrones ? SeaJS suit la spécification CMD et RequireJS suit la spécification AMD. Commençons par ces deux formats différents.

CMD

Méthode de déclaration des dépendances du module CMD :

Copier le code Le code est le suivant :

définir (fonction (exiger) {
var a = require('./a');
var b = require('./b');
// plus de code ..
})

Les dépendances CMD sont déclarées à proximité et via la méthode require interne. Mais comme il s'agit d'un module asynchrone, le chargeur doit charger ces modules à l'avance, donc toutes les dépendances du module doivent être extraites avant que le module ne soit réellement utilisé. Qu'il soit extrait à la volée par le chargeur ou pré-extrait via des outils automatisés, ce format de déclaration de dépendance de CMD ne peut être obtenu que via une analyse statique, ce qui est l'inconvénient de CMD.

Inconvénients de la spécification CMD

Ne peut pas être compressé directement : require est une variable locale, ce qui signifie qu'elle ne peut pas être compressée directement via l'outil de compression. Si la variable require est remplacée, le chargeur et les outils d'automatisation ne pourront pas obtenir les dépendances du module.
Il existe des conventions supplémentaires pour l'écriture de modules : les paramètres de chemin ne peuvent pas être soumis à des opérations sur les chaînes et ne peuvent pas être remplacés par des variables, sinon le chargeur et les outils d'automatisation ne pourront pas extraire correctement le chemin.
Les contrats en dehors du cahier des charges impliquent davantage de documentation, à moins qu'ils ne fassent également partie du cahier des charges.

Remarque : l'analyse statique SeaJS est implémentée en plaçant le package de module toString(), puis en utilisant des expressions régulières pour extraire la partie requise afin d'obtenir le chemin du module dépendant.

AMD

Méthode de déclaration des dépendances du module AMD :

Copier le code Le code est le suivant :

définir(['./a', './b'], fonction (a, b) {
// plus de code ..
})

Les dépendances AMD sont déclarées à l'avance. L'avantage de cet avantage est que les dépendances n'ont pas besoin d'être analysées statiquement. Les chargeurs et les outils d'automatisation peuvent obtenir directement les dépendances. La définition des spécifications peut être plus simple, ce qui signifie que des implémentations plus puissantes peuvent être produites. les chargeurs et l’automatisation sont bénéfiques.

Inconvénients des spécifications AMD

La déclaration des dépendances à l'avance n'est pas si conviviale dans l'écriture de code.
Il existe certaines différences entre les modules internes et les modules NodeJS.
Le deuxième point nécessite une explication particulière. En fait, ni CMD ni le module asynchrone d'AMD ne peuvent être cohérents avec la spécification du module synchrone (un seul module ressemble plus à un module synchrone que l'autre). Pour convertir AMD en module synchronisé, en plus de supprimer le wrapper de la fonction de définition, vous devez utiliser require dans l'en-tête pour déclarer les dépendances, tandis que CMD n'a besoin que de supprimer le wrapper de la fonction de définition.

Résumé

En termes de spécifications, AMD est plus simple et plus rigoureux, avec une applicabilité plus large. Avec la forte promotion de RequireJS, il est presque devenu le standard de module asynchrone de facto à l'étranger, et les principales bibliothèques ont également successivement pris en charge les spécifications AMD.

Mais du point de vue de SeaJS et CMD, cela a aussi fait beaucoup de bonnes choses :

1. Style de déclaration de dépendance relativement naturel
2. Petite mais belle implémentation interne
3. Conception de fonctions périphériques intimes
4. Un meilleur soutien de la communauté chinoise

Si possible, j'aimerais que SeaJS supporte également AMD, afin d'être cohérent avec l'environnement communautaire front-end. Au final, la majorité des développeurs seront contents.

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 尊渡假赌尊渡假赌尊渡假赌
Où trouver la courte de la grue à atomide atomique
1 Il y a quelques semaines By DDD

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)

Comparaison et analyse des différences entre SpringBoot et SpringMVC Comparaison et analyse des différences entre SpringBoot et SpringMVC Dec 29, 2023 am 11:02 AM

SpringBoot et SpringMVC sont tous deux des frameworks couramment utilisés dans le développement Java, mais il existe des différences évidentes entre eux. Cet article explorera les fonctionnalités et les utilisations de ces deux frameworks et comparera leurs différences. Tout d’abord, découvrons SpringBoot. SpringBoot a été développé par l'équipe Pivotal pour simplifier la création et le déploiement d'applications basées sur le framework Spring. Il fournit un moyen rapide et léger de créer des fichiers exécutables autonomes.

Mar 22, 2024 pm 12:48 PM

À l’ère de l’Internet mobile, les performances des téléphones mobiles ont toujours été l’une des préoccupations des utilisateurs. En tant que leaders sur le marché des puces pour téléphones mobiles, MediaTek et Qualcomm ont également attiré l'attention des consommateurs pour leurs puces. Récemment, MediaTek a lancé la puce Dimensity 8200, tandis que Qualcomm possède ses puces représentatives de la série Snapdragon. Alors, quelles sont les différences entre ces deux puces ? Cet article procédera à une analyse comparative approfondie entre Dimensity 8200 et Snapdragon. Tout d'abord, du point de vue de la technologie des processus, Dimensity 8200 utilise la dernière technologie de processus 6 nm, tandis que certains des processeurs Qualcomm Snapdragon

Interprétation des différences entre les versions Oracle11g et Oracle12c Interprétation des différences entre les versions Oracle11g et Oracle12c Mar 07, 2024 pm 02:30 PM

Oracle Database a toujours été l'un des leaders en matière de systèmes de gestion de bases de données au niveau de l'entreprise, et ses versions itératives et continuellement mises à jour ont également attiré une large attention. Parmi elles, les versions Oracle11g et Oracle12c sont des versions relativement représentatives et présentent de nombreuses différences. Cet article expliquera certaines différences importantes entre Oracle11g et Oracle12c et joindra des exemples de code spécifiques pour aider les lecteurs à mieux comprendre les différences entre les deux versions. 1. Différences d'architectureOracle1

Git ou contrôle de version ? Différences clés dans la gestion de projet PHP Git ou contrôle de version ? Différences clés dans la gestion de projet PHP Mar 10, 2024 pm 01:04 PM

Contrôle de version : le contrôle de version de base est une pratique de développement logiciel qui permet aux équipes de suivre les modifications dans la base de code. Il fournit un référentiel central contenant toutes les versions historiques des fichiers de projet. Cela permet aux développeurs d'annuler facilement les bogues, d'afficher les différences entre les versions et de coordonner les modifications simultanées de la base de code. Git : système de contrôle de version distribué Git est un système de contrôle de version distribué (DVCS), ce qui signifie que l'ordinateur de chaque développeur dispose d'une copie complète de l'intégralité de la base de code. Cela élimine la dépendance à l’égard d’un serveur central et augmente la flexibilité et la collaboration des équipes. Git permet aux développeurs de créer et de gérer des branches, de suivre l'historique d'une base de code et de partager les modifications avec d'autres développeurs. Git vs contrôle de version : principales différences entre distribution et ensemble

Comparaison des différences entre le langage Go et Java : analyse de la syntaxe et des modèles de programmation Comparaison des différences entre le langage Go et Java : analyse de la syntaxe et des modèles de programmation Feb 01, 2024 am 08:40 AM

Différences entre le langage Go et Java : syntaxe et modèle de programmation Le langage Go et Java sont à la fois des langages de programmation modernes et populaires avec de nombreuses similitudes, mais il existe également de nombreuses différences. Ces différences se reflètent principalement dans la syntaxe et les modèles de programmation. Syntaxe 1. Déclaration de variable En langage Go, la déclaration de variable nécessite l'utilisation du mot-clé var, mais elle n'est pas obligatoire en Java. Par exemple : varaintinta; 2. Inférence de type Le langage Go prend en charge l'inférence de type, c'est-à-dire que le compilateur peut déduire automatiquement le type des variables. Par exemple : a:=10

Évaluation de la qualité : la différence entre OnePlus et Honor Évaluation de la qualité : la différence entre OnePlus et Honor Mar 23, 2024 pm 12:03 PM

Évaluation de la qualité : la différence entre OnePlus et Honor Sur le marché actuel de la téléphonie mobile, extrêmement concurrentiel, les consommateurs ont des exigences de qualité de plus en plus élevées pour les téléphones mobiles. Parmi les nombreuses marques de téléphones mobiles, OnePlus et Honor font partie des marques les plus populaires et sont privilégiées par les consommateurs. Les deux ont leur mot à dire sur le marché, mais quelle est la différence de qualité ? Cet article procédera à une évaluation comparative entre OnePlus et Honor en termes de qualité de téléphone mobile, de performances, d'expérience utilisateur, etc. pour aider les consommateurs à mieux choisir la marque de téléphone mobile qui leur convient. 1. Apparence et conception Les téléphones mobiles OnePlus ont toujours été caractérisés par leur simplicité et leur grandeur.

Une plongée approfondie dans les différences de piles dans Golang Une plongée approfondie dans les différences de piles dans Golang Mar 13, 2024 pm 05:15 PM

Golang est un langage de programmation populaire avec un concept de conception unique en programmation simultanée. Dans Golang, la gestion de la pile (heap et stack) est une tâche très importante et est cruciale pour comprendre le mécanisme de fonctionnement du programme Golang. Cet article approfondira les différences entre les piles dans Golang et démontrera les différences et les connexions entre elles à travers des exemples de code concrets. En informatique, les piles sont deux méthodes courantes d'allocation de mémoire. Elles diffèrent par la gestion de la mémoire et le stockage des données.

Comparez les différences et l'analyse comparative entre Tomcat et Nginx Comparez les différences et l'analyse comparative entre Tomcat et Nginx Dec 28, 2023 am 09:47 AM

Différences et comparaisons entre Tomcat et Nginx Avec le développement rapide d'Internet, la demande d'applications réseau est de plus en plus élevée, et les serveurs Web reçoivent également de plus en plus d'attention. En tant que deux serveurs Web largement utilisés, Tomcat et Nginx montrent leurs avantages et caractéristiques respectifs dans différents scénarios. Cet article comparera Tomcat et Nginx sous différents angles et explorera leurs différences. 1. Contexte Avant de comparer Tomcat et Nginx en profondeur, comprenons d'abord leur

See all articles