Mise en œuvre du cadre de base mvvm par JS natif

Utilisateur 3847331201471 2021-09-15 07:26:47
mise en uvre du cadre


MVCC'est un modèle de cadre,C'est aussi le premier mode de cadre à toucher lors de l'apprentissage de l'avant,EtMVPAvecMVVMTout est dansMVCSur la base de,Chacun a ses avantages et ses inconvénients,Cet article est principalement présenté selon la carte de pensée ci - dessous.

Un.、mvc mvp mvvmConcept de conception

1.Model-View-Controller (MVC)

· Model —— Logique opérationnelle responsable de l'application.Il gère l'état de l'application.Cela comprend également la lecture et l'écriture de données,Persister l'état de l'application,Peut même inclure des tâches liées à la gestion des données,Par exemple, la validation des réseaux et des données.

· View —— Cette partie a deux tâches importantes:Montrer aux utilisateurs les données et traiter les interactions entre les utilisateurs et les applications.

· Controller —— view Couche et model La couche passe par un ou plusieurs controller Lier ensemble.

2.Model-View-Presenter (MVP) 

· Model —— model Représente un ensemble de classes qui décrivent la logique opérationnelle et les données.Il établit les règles de modification et de manipulation des données.

· View —— view Responsable de l'interaction avec l'utilisateur . Cela n'a rien à voir avec la logique à mettre en œuvre dans le processus .

· Presenter —— presenter De View Obtenir l'entrée,In model Traitement des données avec l'aide de , Et transmettre les résultats à view.

3.Model-View-ViewModel (MVVM)

· Model —— MVVM Dans model Couche et MVC Dans model Les couches sont très similaires , Contient les données de base nécessaires au bon fonctionnement de l'alimentation .

· View —— view La couche est l'interface graphique entre l'utilisateur et le mode de conception ,Similaire à MVC Dans view Couche. Pour présenter les données traitées .

· View-Model —— view-model Est à la fois une abstraction de la couche de vue , Fournit également l'emballage des données du modèle à accéder . C'est - à - dire, Il contient un modèle qui peut être converti en vue , Et contient aussi des commandes , Les couches de vue peuvent utiliser ces commandes pour modifier le modèle .

2.、mvc mvp mvvmComparer

Évaluation du rendement  —— Quand on teste UI Quand la performance de , En ce qui concerne le cadre rendu ,Peut être considéré comme MVP C'est l'un des plus fiables , Le plus petit blocage .MVVM La liaison des données dans crée une surcharge supplémentaire , Il est probable qu'il y aura une grave dégradation des performances lors de l'exécution de tâches complexes .

Compatibilité —— Quand on teste leur compatibilité ,MVVM Le meilleur d'entre eux , Grâce à sa liaison de données .MVP Mieux que MVC, Ce dernier a de sérieux problèmes de redémarrage .

Extensibilité —— En parlant de modèles de conception , Ils doivent avoir une certaine extensibilité , C'est pourquoi nous pouvons continuellement ajouter de nouvelles fonctionnalités et de nouvelles politiques à nos applications . D'après ce qui précède ,MVP Et MVVM La différence est moindre ,Mais MVVM Un peu plus maintenable que .Dans la plupart des cas, Chaque extension ultérieure ,Adoption MVC L'application du modèle nécessite plus de changements .

Références —— In MVC Moyenne,view Pas de référence directe controller,Et MVP Moyenne, La vue fait référence à presenter,In MVVM Moyenne,view Cité view-model.

Entrée de l'application  —— Pour MVC, L'entrée de l'application est controller,Et pour MVP Et MVVM,L'entrée est view.

Trois、PrimitivejsRéalisationMVVMCadre de base

1.Définitions de base

Object.defineProperty Objet de la déclaration générale , Définir et modifier les propriétés \

Syntaxe:

Object.defineProperty(obj,prop,descriptor)

obj: Objet cible à traiter

prop:Nom de l'attribut à définir ou à modifier

descriptor:Descripteurs d'attributs à définir ou à modifier

Descripteur descriptorIl y a deux formes: Descripteurs de données et descripteurs de stockage , Les deux ont des propriétés communes :

configurable,Supprimer ou non,Par défautfalse, Impossible de modifier après la définition

enumerable, Est - ce que ,Par défautfalse, Impossible de modifier à l'avenir

Descripteur de données value:La valeur de cet attribut,Par défautundefined. writable: Quand et quand trueHeure,valuePour être modifié par l'opérateur d'affectation.Par défautfalse.

writableEtconfigurable La différence est que le premier est value Peut être modifié ,Ce dernier estvalue Peut être supprimé .

Descripteur de stockage get():Un pour la propriétégetterMéthode,Par défautundefined. set():Un pour la propriétésetterMéthode,Par défautundefined.

Propriétés communes configurableSet tofalseHeure, Ses propriétés internes ne peuvent pas être utilisées deleteSupprimer; Pour supprimer ,J'ai besoin d'aide.configurableSet totrue.

Attention!: Le descripteur de données et le descripteur de stockage ne peuvent pas coexister ,Sinon, une erreur sera signalée

Interception des données UtiliserObject.definePropertyPour intercepter les données, Pour permettre l'écoute des données .

En d'autres termes,,C'estdata Les propriétés internes sont surveillées , Quand la propriété est appelée , On peut faire des trucs dessus. , Faire tomber la valeur retournée ; Lors du réglage des propriétés , Ne lui donne pas .

Bien sûr que c'est ennuyeux ,J'essaie juste d'expliquer., On peut faire des trucs à l'intérieur , Atteindre les résultats souhaités .

C'est...observe Comment écrire cette fonction ?

2.Mode observateur

L'observateur(Observer)Définition du modèle: Une dépendance d'un à plusieurs objets,Quand l'état d'un objet change,Tous les objets qui en dépendent sont notifiés et automatiquement mis à jour.Ce modèle est parfois appelé publication-Mode d'abonnement、Modèle-Mode de vue,C'est un modèle de comportement d'objet

Subject C'est le constructeur,new Subject() Créer un objet sujet , Il maintient un tableau d'observateurs qui s'abonnent au sujet , Il y a plusieurs façons de , Si vous ajoutez un observateur addObserver、Supprimer l'observateurremoveObserver、 Informer l'observateur des mises à jour notify

ObserverC'est le constructeur,new Observer()  Créer un objet observateur ,L'objet a unupdateMéthodes,Quand on appellenotify En fait, tous les observateurs sont appelés observerPropreupdate La méthode est le constructeur

Par exemple,: Subject C'est le numéro public lancé par Tencent ,new Subject() C'est le numéro public d'une institution —— Faciès Miocène , Il s'agit de maintenir un groupe d'utilisateurs qui s'abonnent à ce numéro public , Le cénozoïque divise les utilisateurs en deux groupes , Un groupe de Trump est  addObserver, Une liste noire est :removeObserver, Il peut ajouter des utilisateurs au Groupe Zhongfang , Vous pouvez lire des barres noires sur la liste noire , Si des prestations sont versées , Il régnera sur les utilisateurs de Trump :notify.Observer C'est un groupe d'utilisateurs de Trump ,new Observer() C'est un utilisateur spécifique ——Xiao Wang., Il a dû ouvrir le trafic pour recevoir la poussée de bien - être du nouveau monde :updata\

Sujet comment ajouter un observateur subject.addObserver(observer)C'est compliqué, Donnez l'autorité directement à l'observateur , Donnez - leur la permission d'ajouter le Groupe Zhongfang \

Références:

MVC,MVP,MVVM Comparer

MVC,MVP Et MVVM Représentation graphique de

Avec Proto JS Réalisation MVVM Cadre1—— Mode observateur et surveillance des données

版权声明
本文为[Utilisateur 3847331201471]所创,转载请带上原文链接,感谢
https://qdmana.com/2021/09/20210914164425996r.html

  1. 350 questions d'entrevue Android partage, technologie d'architecture de cache
  2. The space is not vulgar, the configuration is rich, the leather is durable, less worry, and the high configuration is less than 100000!
  3. Vous permet de passer rapidement à travers l'entrevue de saut d'octets et d'aller de l'avant
  4. Résumé des questions d'entrevue technique d'Alibaba Baidu et d'autres grandes usines à la fin de l'année, et analyse de la dernière vraie question d'entrevue Android en 2021
  5. Avec cet ensemble de questions d'entrevue Java, l'ensemble de questions de base d'entrevue de bat,
  6. Avec cet ensemble de questions d'entrevue Java, les notes avancées Java de niveau divin sont systématisées,
  7. Opérateurs arithmétiques et opérateurs de comparaison pour JavaScript, Introduction classique au développement web
  8. Explorer le cadre open source Android - 1. Okhttp Source Analysis
  9. Module management of "free and open source" front-end spa project crudapi background management system based on Vue and Quasar (14)
  10. Partager l'expérience de l'examen et du développement de l'arrière - plan, en s'appuyant sur les questions d'entrevue et les réponses,
  11. Site Web pour partager vos expériences d'entrevue, Tencent Bull vous apprend à écrire votre propre cadre Java!
  12. Notes d'étape Android structurées, sélection de vrais problèmes d'entrevue Android
  13. Dictionnaire distribué: communication de cache limitée par le courant, sujets d'entrevue pour certaines questions courantes dans le développement Java,
  14. Tianci girlfriend Tangyuan attended the event for the second time. Her appearance was comparable to that of a star. The audience shouted that Tianci was blessed!
  15. Introduction au JavaScript chapitre 15 (objets, clairvoyance)
  16. La dernière revue scientifique de l'académicien Luo Liqun: architecture de la boucle neuronale pour stimuler la nouvelle Ia
  17. Basic knowledge of components in Vue "I"
  18. J'a i appris quelques petites choses sur l'entrevue et j'ai acheté un tutoriel en 19998.
  19. Dix minutes pour vous faire passer en revue les points de connaissance que Spring demande souvent, le chemin du retour Jedi d'un programmeur âgé de 35 ans,
  20. Want to know the implementation and application of single instance mode in the front end?
  21. Progressive react source code analysis - Implementation of ref API
  22. Webpack5 learning -- code compression
  23. Front and back end data interaction (V) -- what is Axios?
  24. Knowledge points related to react routing
  25. On demand introduction of react antd + customized theme
  26. GPG management submission signature verification
  27. [babylonjs] babylonjs practice (XII) -- drawing lane lines
  28. After brushing the 12 sliding windows, you can tear the front end by hand
  29. Vue fruit bookkeeping - money.vue component
  30. Propriétés et méthodes des objets Array en javascript!,Pseudo - classes et pseudo - éléments pour CSS
  31. JS contains the function code
  32. Typescript record (I)
  33. Take you to learn more about nginx basic login authentication: generating passwords using OpenSSL
  34. Is componentization obsolete? Introduction to micro front end architecture
  35. Leetcode day 18
  36. Simple code to achieve a, 1W + people see the Mid Autumn Festival blessing
  37. Design pattern -- agent pattern
  38. Vs Code theme recommendation in 2021
  39. Mon expérience réelle dans l'externalisation Android à Huawei, préparation de l'entrevue de développement Android
  40. J'ai les questions et les réponses d'entrevue de développement d'octets de rêve et Tencent double offer, Android
  41. Fatal Magic: countless sacrifices under gorgeous magic
  42. Mon expérience d'entrevue principale est partagée avec l'expérience d'apprentissage
  43. Mon expérience d'entrevue Android de Tencent partage, plugin Android
  44. Partage de questions d'entrevue Java à double saut d'octets non - premier cycle, un article vous apprend à gérer l'entrevue réseau informatique,
  45. Questions d'entrevue CSS (notes)
  46. Syntaxe de base de la classe
  47. Héritage de classe
  48. Mise en œuvre simple de 30 minutes pour un filtrage rapide des chaînes de tableau 10W +.
  49. Vue 3 tri des documents démarrage rapide
  50. Collection de code de base JavaScript (1)
  51. National secret nginx Container actual Fighting
  52. Quelques lignes de css pour rendre votre page tridimensionnelle
  53. C'est super détaillé, de "finir" ce 300 pages de 1000 questions d'entrevue,
  54. Take you in-depth understanding of nginx basic login authentication (including all configuration steps and in-depth analysis)
  55. Après avoir mangé, assurez - vous d'augmenter votre salaire de 5K et de rester debout tard pour trier les questions d'entrevue Java de millet.
  56. Résumé des questions d'entrevue pour les entreprises Internet nationales de première ligne, qui doivent être posées lors de l'entrevue d'emploi Java de la grande usine en 2021,
  57. "L'amour à première vue", la nouvelle BMW 2 coupe réelle, vous êtes surpris?
  58. Questions d'entrevue de test avancé de Dachang, liste des compétences de base de l'entrevue Java,
  59. Tableau 2D trié par un champ
  60. JS est souvent utilisé pour déterminer si l'objet est vide