Eine kurze Diskussion zur Logikextraktion und Feldanzeige von Vue3 in Projekten

Eine kurze Diskussion zur Logikextraktion und Feldanzeige von Vue3 in Projekten

Logische Schichtung

Wenn wir vue3 zur Entwicklung von Projekten verwenden,
Wie erfolgt die regionale Schichtung? ? ? ?
Beispielsweise hat eine Region eines einfachen Partikels [Abfragelogik, geänderte Speicherlogik, neue Hinzufügungslogik, Löschlogik]
Diese Seite kann weitere Bereiche enthalten. Bereich A, Bereich B, Bereich C ... [Es gibt viele Logiken]
Zu diesem Zeitpunkt können wir die Logik eines Bereichs trennen

Trennen Sie Geschäfte aus verschiedenen Regionen

Standard exportieren {
  aufstellen () {
    let {queryDo,addDo,delDO,EditDo}=allFun();
    queryDo(); //Die Abfrageschnittstelle wird aufgerufen}
}

// Dies ist die Logik des Bereichs A der Seitenfunktion allFun(){
  console.log('Ich bin die direkte Anweisung in der allFun-Funktion und werde ausgeführt.')
  Funktion queryDo(){
    console.log('Ich frage die Schnittstelle ab und rufe die Backend-Daten auf')
  }
  Funktion addDo(){
    console.log('Ich bin neu')
  }
  Funktion delDO(){
    console.log('Ich habe gelöscht')
  }
  Funktion EditDo(){
    console.log('Ich bin die Editor-Schnittstelle')
  }
  zurückgeben {queryDo,addDo,delDO,EditDo}
}
</Skript>

Vorteile dieser Vorgehensweise

  • Wenn wir die allFun-Funktion sehen.
  • Wir können die ganze Logik dieses Bereichs kennen
  • Enthält CRUD. Praktisch für spätere Wartung

Wie geht man mit einem solchen Szenario um?

Wenn wir Geschäftslogik schreiben,
Wir haben schließlich festgestellt, dass die Bereiche A und B beide dieselbe Schnittstelle aufrufen müssen, aber da Bereich A die aufgerufene Schnittstelle bereits geschrieben hat, möchte ich die Schnittstelle in Bereich A direkt aufrufen.

<Skript>
Standard exportieren {
  aufstellen () {
    // Die hier verwendete Struktur ist Bereich A let {queryDo,addDo,delDO,EditDo}=aAreaAllFun();

    // Bereich B let {querHander}=bAreaAllFun();

    return {queryDo,addDo,delDO,EditDo,querHander}
  }
}

// Dies ist die Logik eines bestimmten Bereichs auf der Bereichsseite A Funktion aAreaAllFun(){
  Funktion queryDo(){
    console.log('Ich bin die Abfrageschnittstelle von Bereich A')
  }
  Funktion addDo(){
    console.log('Ich bin neu')
  }
  Funktion delDO(){
    console.log('Ich habe gelöscht')
  }
  Funktion EditDo(){
    console.log('Ich bin die Editor-Schnittstelle')
  }
  zurückgeben {queryDo,addDo,delDO,EditDo}
}

// Dies ist die Geschäftslogik von Bereich B Funktion bAreaAllFun(){
  // Rufen Sie die Abfrageschnittstelle von Bereich A direkt auf aAreaAllFun().queryDo();

  Funktion querHander(){
    console.log("Abfrageschnittstelle von Bereich B")
  }
 
  return {querHander}
}
</Skript>

Obwohl die Verwendung
aAreaAllFun().queryDo();
Der direkte Aufruf der Abfrageschnittstelle von Bereich A löst das Problem, schafft jedoch ein neues Problem: Die Abfrageschnittstelle ist in Bereich A enthalten.
Der letzte Ansatz besteht darin, die Abfrageschnittstelle zu trennen.
Dies erleichtert auch unsere spätere Wartung

Optimierung

<Skript>
Standard exportieren {
  aufstellen () {
     // Dies ist die Logik eines bestimmten Bereichs auf der Bereichsseite A let {addDo,delDO,EditDo}=aAreaAllFun()
    
    // Dies ist die Logik eines bestimmten Bereichs auf der Seite „Bereich B“ let {querHander}=bAreaAllFun();

    return {queryDo,addDo,delDO,EditDo,querHander}
  }
}

// Öffentliche Abfrageschnittstelle. Viele Bereiche können die Funktion queryDo(){ verwenden.
  console.log('Ich bin die Abfrageschnittstelle der Region, ich wurde herausgezogen')
}

// Dies ist die Logik eines bestimmten Bereichs auf der Bereichsseite A Funktion aAreaAllFun(){
 
  Funktion addDo(){
    console.log('Ich bin neu')
  }
  Funktion delDO(){
    console.log('Ich habe gelöscht')
  }
  Funktion EditDo(){
    console.log('Ich bin die Editor-Schnittstelle')
  }
  zurückgeben {addDo,delDO,EditDo}
}

// Dies ist die Geschäftslogik von Bereich B Funktion bAreaAllFun(){
  // Rufen Sie die öffentliche Abfrageschnittstelle direkt auf queryDo();

  Funktion querHander(){
    console.log("Abfrageschnittstelle von Bereich B")
  }
 
  return {querHander}
}
</Skript>

reactive muss nicht unbedingt in der Setup-Funktion geschrieben werden

Viele Freunde denken, dass reaktiv in die Setup-Funktion geschrieben werden muss. Tatsächlich ist das nicht der Fall. Es kann dort geschrieben werden, wo Sie es brauchen. Beispielsweise können Sie reaktiv in der folgenden Funktion aAreaAllFun verwenden.

<Vorlage>
  <div>
    <h2>Name: {{ areaData.info.name}}</h2>
    <h2>Alter: {{ areaData.info.age}}</h2>
    <h2>Geschlecht: {{ areaData.info.sex}}</h2>
  </div>
</Vorlage>
<Skript>
importiere { reaktiv } von '@vue/reactivity';
Standard exportieren {
  aufstellen () {
 
    let {addDo,areaData}=aAreaAllFun();

    gibt {addDo,areaData} zurück
  }
}
// Dies ist die Logik eines bestimmten Bereichs auf der Bereichsseite A Funktion aAreaAllFun(){
  let areaData = reaktiv({
    Info:
      Name: 'Zhang San',
      Alter:20,
      Geschlecht: männlich
    }
  })
  Funktion addDo(){
    console.log('Ich bin neu')
  }
  gibt {addDo,areaData} zurück
}
</Skript>

So zeigen Sie den Wert direkt auf der Seite an

Im obigen Beispiel wollen wir Name, Alter und Geschlecht implementieren, wir brauchen areaData.info.xxx
Das ist zu mühsam, wir müssen es optimieren

<Vorlage>
  <div>
    <h2>Name: {{ name}}</h2>
    <h2>Alter: {{ age}}</h2>
    <h2>Geschlecht: {{ sex}}</h2>
  </div>

  <button @click="ChangeCont">Wert ändern</button>
</Vorlage>
<Skript>
importiere { reaktiv, toRefs } von „vue“;
Standard exportieren {
  aufstellen () {
    let {name,alter,geschlecht,ChangeCont }=aAreaAllFun();
    returniere {Name, Alter, Geschlecht, ChangeCont}
  }
}
// Dies ist die Logik eines bestimmten Bereichs auf der Bereichsseite A Funktion aAreaAllFun(){
  let areaData = reaktiv({
    Info:
      Name: 'Zhang San',
      Alter:20,
      Geschlecht: männlich
    }
  })

  Funktion ChangeCont(){
    // Wenn Sie den Wert auf diese Weise ändern, reagiert die Ansicht nicht. [Fehler]
    //areaData.info={
    // Name: 'Li Si',
    //Alter:21,
    // Geschlecht: 'männlich'
    // }

    // Dies ist OK, um die Ansicht korrekt zu aktualisieren [ok]
    areaData.info.name='123'
    areaData.info.age=12
    areaData.info.sex='männlich'
  }

  // toRefs können ein responsives Objekt in ein normales Objekt umwandeln.
  // Jeder Wert dieses gemeinsamen Objekts ist ein Verweis.
  // Da es ein Verweis wird, müssen wir den Wert verwenden.
  zurück {ChangeCont,...toRefs(areaData.info)}
}
</Skript>

Dies ist das Ende dieses Artikels über die Logikextraktion und Feldanzeige von vue3 im Projekt. Weitere relevante Inhalte zur Logikextraktion und Feldanzeige von vue3 finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Vue implementiert die Methode zur Anzeige von Daten in benutzerdefinierten Feldern

<<:  Mysql 8.0.18 Hash-Join-Test (empfohlen)

>>:  Tutorial zur Verwendung von Portainer zum Herstellen einer Verbindung mit einem Remote-Docker

Artikel empfehlen

Detaillierte Erklärung des MySQL-Datenbankparadigmas

Vorwort: Ich habe oft von Datenbankparadigmen geh...

Detaillierte Erklärung zu JavaScript Anti-Shake und Throttling

Inhaltsverzeichnis Entprellen Gaspedal Zusammenfa...

Native JS-Implementierung des Ladefortschrittsbalkens

Dieser Artikel zeigt einen Spezialeffekt für dyna...

Vue implementiert das Ziehen und Sortieren von Bildern

In diesem Artikelbeispiel wird der spezifische Co...

Detaillierte Analyse des virtuellen Nginx-Hosts

Inhaltsverzeichnis 1. Virtueller Host 1.1 Virtuel...

Beispielcode zum Ändern des Textstils der Eingabeaufforderung in HTML

Auf vielen Websites wird im Eingabefeld Hinweiste...

Detaillierte Erklärung der GaussDB zur MySQL-Leistungsoptimierung

Inhaltsverzeichnis Hintergrund Inspiration kommt ...

Einführung in Abfragebefehle für gespeicherte MySQL-Prozeduren

Wie unten dargestellt: Wählen Sie den Namen aus m...

Detaillierte Erklärung des Unterschieds zwischen $router und $route in Vue

Wir verwenden normalerweise Routing in Vue-Projek...

So installieren Sie ElasticSearch auf Docker in einem Artikel

Inhaltsverzeichnis Vorwort 1. Docker installieren...

Verwenden von JS zum Implementieren eines einfachen Rechners

Verwenden Sie JS, um einen einfachen Rechner für ...