S'il est séparé de l'architecture interne et du concept, le framework JavaScript actuel peut être divisé en 5 catégories.
Type 1
L'émergence de bibliothèques ou de frameworks de classes orientés espace de noms, tels que la création d'un tableau à l'aide de new Array(), la génération d'un objet à l'aide de new Object(), est entièrement de style Java, nous pouvons donc utiliser un certain objet comme racine, à tout moment. ajoutez-y des attributs d'objet ou des attributs d'objet secondaires pour organiser le code, empilé comme une pyramide. Les œuvres représentatives incluent les premiers YUI et EXT.
Type 2
Ce qui a émergé, ce sont des frameworks orientés usine de classe, comme le célèbre Prototype, ainsi que mootools, Base2 et Ten. Fondamentalement, à l'exception de l'espace de noms le plus basique, les autres modules sont des objets de classe dérivés de fabriques de classes. Surtout mootools 1.3, tous les types sont encapsulés dans des types Type.
Type 3
est un framework orienté sélecteur représenté par jQuery. L'ensemble du framework ou du corps de la bibliothèque est un objet tableau spécial, ce qui facilite les opérations centralisées - car le sélecteur sélectionne généralement N nœuds d'éléments à la fois, ils ont donc été traités ensemble. jQuery contient plusieurs choses intéressantes : technologie "pas de nouvelle instanciation", $(expr) renvoie une instance sans la renouveler explicitement ; définissez d'abord toutes les règles d'accès : système de mise en cache des données. De cette façon, vous pouvez copier les événements du nœud. De plus, IIFE (Immediately-Invoked Function Expression) a également été découverte.
Type 4
sont des frameworks connectés en série avec des chargeurs. Ils ont tous plusieurs fichiers JavaScript, et chaque fichier JavaScript est écrit selon des règles fixes. Le plus connu d’entre eux est AMD. La modularité est le signe que JavaScript évolue vers l'industrialisation. La première des nombreuses « règles d'or » énumérées dans « L'art de la programmation Unix » est celle des modules, qui dit : « La seule façon d'écrire des logiciels complexes sans échouer est de combiner un certain nombre de modules simples avec des interfaces clairement définies, de sorte que d'abord, la plupart des problèmes ne se produiront que localement, il reste donc un espoir d'améliorer ou d'optimiser la zone locale sans affecter l'ensemble du corps. De nombreux frameworks internes d'entreprise adoptent essentiellement cette architecture, comme Dojo, YUI, kissy, qwrap et mass, etc.
Type 5
Il s'agit d'un framework MV* avec une architecture en couches claire. Le premier est JavaScript MVC (maintenant appelé CanJS), backbonejs, spinejs, puis les frameworks MVVM qui sont plus conformes au front-end réel, tels que knockout, ember, angulaire, avalon et winjs. Dans le framework MVVM, les opérations DOM d'origine sont remplacées par une liaison déclarative, qui est gérée par le framework lui-même, et les utilisateurs doivent uniquement se concentrer sur le code métier.
Voici les conclusions sur les caractéristiques du cadre.
Le fonctionnement des types de données de base est la base. Par exemple, jQuery fournit des méthodes telles que trim, camelCase, each et map pour les frameworks intrusifs tels que Prototype.js, des méthodes telles que camelize sont ajoutées au prototype.
La détermination du type est essentielle, et la forme courante est la série isXXX.
Les sélecteurs, domReady et Ajax sont des fonctionnalités standard des frameworks modernes.
L'opération DOM est la priorité absolue. Le parcours de nœuds, l'opération de style et l'opération d'attribut appartiennent également à sa portée. Le fait qu'elle soit subdivisée dépend de l'échelle du framework.
Le reniflage du navigateur est obsolète, la fonctionnalité de détection est utilisée. Cependant, la détection des fonctionnalités présente encore des limites. Si vous ciblez des bogues de rendu, des politiques de sécurité ou la correction de certains bogues dans une certaine version du navigateur, vous devez toujours utiliser le reniflage du navigateur. Mais il devrait être autonome en tant que module ou plugin, supprimant ainsi le cœur du framework.
De nos jours, les systèmes d'événements grand public prennent en charge les proxys d'événements.
Mise en cache et traitement des données. Actuellement, les navigateurs fournissent également des attributs data-* à cet effet, mais ils ne sont pas faciles à utiliser et nécessitent une encapsulation supplémentaire par le framework.
Moteur d'animation, à moins que votre framework ne soit soutenu par un framework d'animation de haut niveau comme script.aculo.us comme Prototype.js, il est préférable de l'ajouter également.
Développement facile et évolutivité des plug-ins.
Fournissez des solutions telles que Deferred pour gérer l'asynchronie.
Même si une fabrique de classes n'est pas spécifiquement fournie, il devrait y avoir une méthode nommée extend ou mixin pour étendre l'objet. Bien que jQuery ne dispose pas de fabrique de classes, il doit en ajouter une dans jQuery UI, ce qui montre son importance.
Depuis que jQuery a sorti une méthode appelée noConflict, les frameworks émergents ont adopté cette méthode afin de survivre dans l'étroit fossé.
De nombreux frameworks attachent une grande importance aux opérations de cookies.