Maison >interface Web >js tutoriel >Discussion sur les idées de programmation du cadre de classe MVW pour une connaissance introductive d'AngularJS_AngularJS
En implémentant deux exigences métier simples, cet article explore les différences entre AngularJS et l'implémentation DOM de contrôle JavaScript traditionnel, et tente de comprendre les idées de programmation de frameworks tels que MVW dans le développement frontal Web populaire.
Cette exigence est très courante. Par exemple, dans un menu à deux niveaux, lorsque l'on clique sur l'élément de menu de premier niveau, l'élément de sous-menu correspondant doit être affiché ou masqué.
Implémentation de jQuery :
$('li.parent_item').click(function(){
$(this).children('ul.child').toggle();
})
Directives
2.Expressions
etng-hide sont deux directives fournies avec le framework. La première équivaut à fournir un gestionnaire d'événements à la balise li dans l'élément HTML (. li) Lorsque vous cliquez dessus, l'expression (expression) hide_child = !hide_child sera exécutée. Jetons d'abord un coup d'œil à la directive ng-hide, qui contrôle si l'élément HTML doit être affiché en fonction du résultat de l'expression assignée (valeur booléenne) (implémentée via CSS). Autrement dit, si la variable hide_child est vraie, alors ul sera masqué, sinon le résultat sera l'inverse. Hide_child est en fait une variable sur $scope
. La modification de sa valeur peut également être réalisée en encapsulant une méthode dans le contrôleur. Cependant, l'instruction actuelle est relativement simple et peut être écrite directement dans In. l'attribution de l'instruction. 1. Le fonctionnement du DOM est scellé par des instructions et des expressions, et seul un code simple peut enregistrer du code JavaScript supplémentaire2. L'application des instructions et des expressions n'est directement imbriquée que dans HTML, ce qui est quelque peu contraire au style de code JavaScript discret promu par jQuery
Examinons d'abord une autre exigence, puis expliquons la conclusion ci-dessus en détail.
L'élément HTML Form traditionnel n'est pas très convivial à utiliser sur les appareils mobiles d'aujourd'hui. Par exemple, le bouton radio Bouton radio nécessite un positionnement précis sur un écran tactile pour contrôler ce composant, mais le positionnement des doigts est très approximatif. Une approche courante consiste à ajouter un contrôle Label correspondant, mais le rapport d'écran du texte lui-même n'est pas idéal et il n'a pas un effet clair de transmission des informations. Par conséquent, une balise div ou li avec une surface relativement grande est généralement exploitée indirectement.
Implémentation de jQuery :
//javascript
$('li.selection').click(function(){
$(this).children('input[type="radio"]').click();
})
AngularJS的实现:
Dans cette solution, nous n'avons pas non plus impliqué de code JavaScript supplémentaire et avons utilisé quelques instructions supplémentaires. À titre de comparaison et de référence, nous ne nous soucions que des expressions des deux directives ng-click et ng-model.
Regardons d'abord la directive ng-model de l'élément input. L'affectation ici signifie que nous associons l'entrée sur le modèle à l'attribut option de l'objet $scope.model pour obtenir un in. -Compréhension approfondie des données. Pour la liaison, veuillez vous référer à Data Binding. Cette association spécifiée permet au contrôle de modèle d'être directement lié au modèle de données, et cette liaison est bidirectionnelle. Cela signifie qu'une fois que l'utilisateur modifie la valeur dans le contrôle (vérifiez l'entrée radio), l'objet Modèle correspondant sera réaffecté (model.option) en même temps, si la valeur de l'objet Modèle change, le contrôle d'entrée dans le le modèle correspondra également à refléter les modifications. Ceci n'est en fait pas réalisé dans l'implémentation jQuery ci-dessus.
Ainsi, grâce à la liaison de données d'AngularJS, le processus de déclenchement indirect de l'entrée en cliquant sur l'élément li est le suivant :
1. Cliquez sur la balise li et attribuez une valeur à model.option
2. Modifiez l'objet Model et localisez le contrôle d'entrée correspondant (la valeur de value est celle de model.option
) ;
3. Activez l'attribut coché du contrôle de saisie
A travers les deux cas ci-dessus, nous avons une nouvelle compréhension du fonctionnement du front-end Web.
Tout d'abord, en termes de mise en œuvre technique, en introduisant de nouvelles instructions, expressions, liaisons de données et autres concepts, nous pouvons faire fonctionner le DOM d'une manière complètement nouvelle, pas seulement le code JavaScript qui se limite à l'interaction entre les utilisateurs. et les composants HTML accomplissent. Ce changement de mentalité est énorme.
Depuis l'essor de la programmation Web dynamique au début de ce siècle, la technologie de programmation côté serveur s'est améliorée. Depuis le début de CGI/PHP/ASP, le langage et la plate-forme ont donné naissance à .NET contre Java, l'efficacité du développement et le processus logiciel ont favorisé le framework MVC/ORM/AOP, etc., et les performances et le Big Data ont apporté NodeJS/NoSQL/ Hadoop, etc., et les exigences techniques pour le front-end du navigateur ne semblent pas avoir été aussi radicales. D'une part, la plupart des besoins métiers du modèle B/S peuvent être satisfaits via le serveur et la base de données ; d'autre part, le navigateur lui-même présente des différences entre les différentes plates-formes et n'est pas compatible avec les normes de langage de script et de rendu ; technologie et présente des limites en termes de puissance de calcul et de considérations de sécurité.
Dans ce cas, les exigences du côté du navigateur ne nécessitent la plupart du temps que de prendre en compte le rendu de la page et la simple interaction de l'utilisateur. HTML/DOM plus JavaScript/CSS réalisent ainsi le travail principal du front-end. Par conséquent, il n’y avait pas de travailleurs front-end dans le passé, seuls des concepteurs Web étaient nécessaires. Peu à peu, les exigences pour le front-end se multiplient, et jQuery est devenu la bibliothèque d'encapsulation JavaScript la plus utilisée pour faire fonctionner le DOM. À ce stade, la tâche principale de jQuery/JavaScript est encore simplement un outil de présentation et d’interaction sur le terminal du navigateur utilisateur.
Comprenant l'origine de jQuery, il n'est pas difficile de constater que certaines des règles que nous avons suivies auparavant, comme le JavaScript discret, étaient limitées aux moyens et aux méthodes d'implémentation afin de séparer la logique du code DOM et JavaScript, nous avons donné la priorité aux plus maintenables. Après l'augmentation de la demande frontale pour JavaScript, de nombreux frameworks frontaux MVC/MVP sont apparus, ainsi que ce que l'on appelle MVW (Model-View-Whatever) d'AngularJS, et la taille unique- toute l'approche de JavaScript et du DOM a changé. À l'origine, nous envisageions le fonctionnement direct de l'affichage de l'interface et de l'interaction utilisateur. Nous disposons désormais de la liaison de données côté client, d'instructions riches et de l'injection de dépendances. Ce qui nous attend sera un nouveau modèle de programmation et une nouvelle façon de penser.