Maison interface Web js tutoriel Une brève discussion sur l'utilisation du mode MVC pour les compétences de développement de programmes JavaScript_javascript

Une brève discussion sur l'utilisation du mode MVC pour les compétences de développement de programmes JavaScript_javascript

May 16, 2016 pm 03:32 PM
javascript mvc

Alors que le développement front-end est de plus en plus valorisé et que la proportion de code client augmente de jour en jour, la question de savoir comment appliquer le modèle MVC dans le développement JavaScript semble être mentionnée tout le temps, j'aimerais donc en parler brièvement à propos de mes opinions ici.

L'idée de base du modèle MVC est de réduire le couplage et de simplifier le développement en encapsulant une application en trois parties : modèle, vue et contrôleur. C’est creux de dire ça. Prenons un exemple :

<select id="selAnimal">
  <option value="cat">cat</option>
  <option value="fish">fish</option>
  <option value="bird">bird</option>
</select>
<p id="whatDoesThisAnimalDo"></p>

<script type="text/javascript">
document.getElementById('selAnimal').onchange = function() {
  var thisAnimalDoes;
  switch ( this.value ) {
    case 'cat':
      thisAnimalDoes = "cat meows";
      break;
    case 'fish':
      thisAnimalDoes = "fish swims";
      break;
    case 'bird':
      thisAnimalDoes = "bird flies";
      break;
    default:
      thisAnimalDoes = "wuff&#63;";
  }
  document.getElementById('whatDoesThisAnimalDo').innerHTML = thisAnimalDoes;
}
</script>

Copier après la connexion

Ce petit programme fera écho à ce que l'animal que vous sélectionnez dans le menu déroulant "selAnimal" peut faire sur la page Web. Ce qui précède est du code écrit sans appliquer de modèles de conception ou d’idées de programmation. Si nous voulons appliquer le modèle MVC ici, à quoi ressemblera le code ?

<select id="selAnimal">
  <option value="cat">cat</option>
  <option value="fish">fish</option>
  <option value="bird">bird</option>
</select>
<p id="whatDoesThisAnimalDo"></p>

<script type="text/javascript">
// whatDoesAnimalDo 就是一个controller
var whatDoesAnimalDo = {
  // 选择视图
  start: function() {
    this.view.start();
  },
  // 将用户的操作映射到模型的更新上
  set: function(animalName) {
    this.model.setAnimal(animalName);
  },
};
// whatDoesAnimalDo的数据model
whatDoesAnimalDo.model = {
  // animal的数据
  animalDictionary: {
    cat: "meows",
    fish: "swims",
    bird: "flies"
  },
  // 当前的animal,也就是这个application的状态
  currentAnimal: null,
  // 数据模型负责业务逻辑和数据存储
  setAnimal: function(animalName) {
    this.currentAnimal = this.animalDictionary[animalName] &#63; animalName : null;
    this.onchange();
  },
  // 并且通知视图更新显示
  onchange: function() {
    whatDoesAnimalDo.view.update();
  },
  // 还需要响应视图对当前状态的查询
  getAnimalAction: function() {
    return this.currentAnimal &#63; this.currentAnimal + " " + this.animalDictionary[this.currentAnimal] : "wuff&#63;";
  }
};
// whatDoesAnimalDo的视图
whatDoesAnimalDo.view = {
  // 用户输入触发onchange事件
  start: function() {
    document.getElementById('selAnimal').onchange = this.onchange;
  },
  // 该事件将用户请求发送给控制器
  onchange: function() {
    whatDoesAnimalDo.set(document.getElementById('selAnimal').value);
  },
  // 视图更新显示的方法,其中视图会向model查询当前的状态,并将其显示给用户
  update: function() {
    document.getElementById('whatDoesThisAnimalDo').innerHTML = whatDoesAnimalDo.model.getAnimalAction();
  }
};
whatDoesAnimalDo.start();
</script>

Copier après la connexion

...Tout à coup, le code est devenu tellement exagéré....
——Odu n'y a pas encore implémenté le mode observateur...
Ce n'est vraiment pas bon.

Cela fait ressortir la plus grande critique du modèle MVC : l'application du modèle MVC dans un système simple augmentera la complexité de la structure et réduira l'efficacité.

Je pense donc qu'à l'exception de quelques contrôles javascript, tels que le contrôle de grille de données/arborescence permettant de cliquer n'importe où pour modifier, ou les éditeurs de texte enrichi comme FckEditor/tinyMCE qui prennent en charge les plugins personnalisés, qui sont très adaptés à l'application de MVC, dans La plupart Dans un système B/S pratique, tant que vous suivez le modèle d'usine dans le développement JavaScript, vous en bénéficierez beaucoup. Cela est dû à la nature différente du développement front-end et du développement back-end. Si vous appliquez le modèle MVC dans un projet ASP.net ou JSP, le SDK générera plus ou moins automatiquement du code de vue et de contrôleur. Mais qu'en est-il de JavaScript : JavaScript n'a même pas de SDK utile. Bien qu'il existe de nombreux frameworks matures, cela augmentera considérablement la quantité de développement.

Par rapport à la quantité de développement, ce qui est plus problématique est la question de l'efficacité. L'intercommunication entre les trois couches représente une surcharge supplémentaire. Côté serveur, la surcharge provoquée par ces communications est presque négligeable. Mais pour un langage relativement inefficace comme javascript, quelques appels supplémentaires et l'écoute d'événements réduiront évidemment les performances. De plus, en raison de la fonction de fermeture de javascript, des fuites de mémoire peuvent se produire accidentellement. Il s'agit d'un cas authentique de vol de poulet mais de perte de riz...
. Par conséquent, pour le développement JavaScript, un développement modéré peut être plus important que l'application des connaissances académiques que vous avez acquises. Après tout, le développement front-end est basé sur la résolution de problèmes pratiques et non sur la démonstration de compétences. Bien sûr, Dflying gg a un dicton selon lequel "la refactorisation est partout" - si vous sentez que votre propre code devient de plus en plus compliqué et plus difficile à maintenir, alors vous devriez vous demander si vous devez utiliser MVC pour le refactoriser ~

.

Encore une chose : l'ensemble du développement front-end n'a-t-il plus besoin d'utiliser MVC ? non non~ En fait, tout le développement front-end est une grande architecture MVC——

Modèle : Informations en HTML/XHTML
Vue : Feuille de style
Contrôleur : EMAScripts et autres scripts
N'est-ce pas le but ultime des standards du web....

Par conséquent, il est toujours plus important de comprendre la structure de l'ensemble du code front-end que de sur-appliquer des modèles de conception dans le développement JavaScript !

Cependant, il existe également d'excellents frameworks MVC. Gordon L. Hempton, hacker et concepteur à Seattle, a fait une comparaison ici pour y jeter un œil :

1. Backbone.js - Avantages : communauté forte, forte dynamique Inconvénients : abstraction faible, de nombreuses fonctions doivent être ajoutées de toute urgence ;
2. SproutCore - Avantages : prise en charge de la liaison, communauté fiable, grand nombre de fonctionnalités Inconvénients : surspécification, difficile à dissocier des fonctionnalités inutiles ;
3. Sammy.js - Avantages : facile à apprendre et plus facile à intégrer aux applications serveur existantes Inconvénients : trop simple pour être utilisé dans de grandes applications ;
4. Spine.js - Avantages : documentation légère et complète ; Inconvénients : Son concept de base « spine » est une interface utilisateur asynchrone, ce qui signifie qu'idéalement l'interface utilisateur ne sera jamais bloquée, et cette fondation est imparfaite. .
5. Cappuccino - Avantages : Grand framework bien pensé, bonne communauté, excellent modèle d'héritage ; Inconvénients : Créé par des développeurs iOS, utilisant JavaScript pour simuler Objective-C ;
6. Knockout.js - Avantages : Prise en charge de la liaison, documentation complète et tutoriels Inconvénients : Mauvaise syntaxe de liaison, manque de hiérarchie de composants de vue unifiée ;
7. Javascript MVC - Avantages : communauté fiable ; Inconvénients : mauvais modèle d'héritage basé sur les chaînes, relation trop étroite entre le contrôleur et la vue et manque de liaison.
8. GWT (Google Web Toolkit) - Avantages : framework complet, bonne communauté, modèle d'héritage de composants fiable basé sur Java Inconvénients : peut ne pas résister à l'épreuve du temps, de plus, Java est côté client ; L'abstraction ci-dessus est un peu maladroite.
9. Google Closure——Avantages : Très bon système de composition d'interface utilisateur basé sur des composants. Inconvénients : manque de prise en charge des liaisons d'interface utilisateur.
10. Ember.js - Avantages : Système de modèles très riche, avec des vues composites et une liaison d'interface utilisateur Inconvénients : Il est relativement nouveau et la documentation n'est pas assez complète ;
11. Angular.js - Avantages : il prend en compte la portée du modèle et la conception du contrôleur, dispose d'un système d'injection de dépendances et prend en charge une syntaxe de liaison d'interface utilisateur riche. Inconvénients : La modularité du code n'est pas forte, et la modularité de la vue n'est pas suffisante.
12. Batman.js——Avantages : code clair, méthodes de liaison et de persistance simples. Inconvénients : un contrôleur singleton est utilisé.

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)

Comment mettre en œuvre un système de reconnaissance vocale en ligne à l'aide de WebSocket et JavaScript Comment mettre en œuvre un système de reconnaissance vocale en ligne à l'aide de WebSocket et JavaScript Dec 17, 2023 pm 02:54 PM

Comment utiliser WebSocket et JavaScript pour mettre en œuvre un système de reconnaissance vocale en ligne Introduction : Avec le développement continu de la technologie, la technologie de reconnaissance vocale est devenue une partie importante du domaine de l'intelligence artificielle. Le système de reconnaissance vocale en ligne basé sur WebSocket et JavaScript présente les caractéristiques d'une faible latence, d'un temps réel et d'une multiplateforme, et est devenu une solution largement utilisée. Cet article explique comment utiliser WebSocket et JavaScript pour implémenter un système de reconnaissance vocale en ligne.

WebSocket et JavaScript : technologies clés pour mettre en œuvre des systèmes de surveillance en temps réel WebSocket et JavaScript : technologies clés pour mettre en œuvre des systèmes de surveillance en temps réel Dec 17, 2023 pm 05:30 PM

WebSocket et JavaScript : technologies clés pour réaliser des systèmes de surveillance en temps réel Introduction : Avec le développement rapide de la technologie Internet, les systèmes de surveillance en temps réel ont été largement utilisés dans divers domaines. L'une des technologies clés pour réaliser une surveillance en temps réel est la combinaison de WebSocket et de JavaScript. Cet article présentera l'application de WebSocket et JavaScript dans les systèmes de surveillance en temps réel, donnera des exemples de code et expliquera leurs principes de mise en œuvre en détail. 1. Technologie WebSocket

Comment mettre en œuvre un système de réservation en ligne à l'aide de WebSocket et JavaScript Comment mettre en œuvre un système de réservation en ligne à l'aide de WebSocket et JavaScript Dec 17, 2023 am 09:39 AM

Comment utiliser WebSocket et JavaScript pour mettre en œuvre un système de réservation en ligne. À l'ère numérique d'aujourd'hui, de plus en plus d'entreprises et de services doivent fournir des fonctions de réservation en ligne. Il est crucial de mettre en place un système de réservation en ligne efficace et en temps réel. Cet article explique comment utiliser WebSocket et JavaScript pour implémenter un système de réservation en ligne et fournit des exemples de code spécifiques. 1. Qu'est-ce que WebSocket ? WebSocket est une méthode full-duplex sur une seule connexion TCP.

Comment utiliser JavaScript et WebSocket pour mettre en œuvre un système de commande en ligne en temps réel Comment utiliser JavaScript et WebSocket pour mettre en œuvre un système de commande en ligne en temps réel Dec 17, 2023 pm 12:09 PM

Introduction à l'utilisation de JavaScript et de WebSocket pour mettre en œuvre un système de commande en ligne en temps réel : avec la popularité d'Internet et les progrès de la technologie, de plus en plus de restaurants ont commencé à proposer des services de commande en ligne. Afin de mettre en œuvre un système de commande en ligne en temps réel, nous pouvons utiliser les technologies JavaScript et WebSocket. WebSocket est un protocole de communication full-duplex basé sur le protocole TCP, qui peut réaliser une communication bidirectionnelle en temps réel entre le client et le serveur. Dans le système de commande en ligne en temps réel, lorsque l'utilisateur sélectionne des plats et passe une commande

Architecture PHP MVC : créer des applications Web pour le futur Architecture PHP MVC : créer des applications Web pour le futur Mar 03, 2024 am 09:01 AM

Introduction Dans le monde numérique en évolution rapide d'aujourd'hui, il est crucial de créer des applications WEB robustes, flexibles et maintenables. L'architecture PHPmvc fournit une solution idéale pour atteindre cet objectif. MVC (Model-View-Controller) est un modèle de conception largement utilisé qui sépare les différents aspects d'une application en composants indépendants. Les fondements de l'architecture MVC Le principe fondamental de l'architecture MVC est la séparation des préoccupations : Modèle : encapsule les données et la logique métier de l'application. Vue : responsable de la présentation des données et de la gestion des interactions des utilisateurs. Contrôleur : coordonne l'interaction entre les modèles et les vues, gère les demandes des utilisateurs et la logique métier. Architecture PHPMVC L'architecture phpMVC suit le modèle MVC traditionnel mais introduit également des fonctionnalités spécifiques au langage. Ce qui suit est PHPMVC

JavaScript et WebSocket : créer un système efficace de prévisions météorologiques en temps réel JavaScript et WebSocket : créer un système efficace de prévisions météorologiques en temps réel Dec 17, 2023 pm 05:13 PM

JavaScript et WebSocket : Construire un système efficace de prévisions météorologiques en temps réel Introduction : Aujourd'hui, la précision des prévisions météorologiques revêt une grande importance pour la vie quotidienne et la prise de décision. À mesure que la technologie évolue, nous pouvons fournir des prévisions météorologiques plus précises et plus fiables en obtenant des données météorologiques en temps réel. Dans cet article, nous apprendrons comment utiliser la technologie JavaScript et WebSocket pour créer un système efficace de prévisions météorologiques en temps réel. Cet article démontrera le processus de mise en œuvre à travers des exemples de code spécifiques. Nous

Tutoriel JavaScript simple : Comment obtenir le code d'état HTTP Tutoriel JavaScript simple : Comment obtenir le code d'état HTTP Jan 05, 2024 pm 06:08 PM

Tutoriel JavaScript : Comment obtenir le code d'état HTTP, des exemples de code spécifiques sont requis Préface : Dans le développement Web, l'interaction des données avec le serveur est souvent impliquée. Lors de la communication avec le serveur, nous devons souvent obtenir le code d'état HTTP renvoyé pour déterminer si l'opération a réussi et effectuer le traitement correspondant en fonction de différents codes d'état. Cet article vous apprendra comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournira quelques exemples de codes pratiques. Utilisation de XMLHttpRequest

Comment utiliser insertBefore en javascript Comment utiliser insertBefore en javascript Nov 24, 2023 am 11:56 AM

Utilisation : En JavaScript, la méthode insertBefore() est utilisée pour insérer un nouveau nœud dans l'arborescence DOM. Cette méthode nécessite deux paramètres : le nouveau nœud à insérer et le nœud de référence (c'est-à-dire le nœud où le nouveau nœud sera inséré).

See all articles