<p>dva 2.0</p>

Erstellt am 27. MĂ€rz 2017  Â·  43Kommentare  Â·  Quelle: dvajs/dva

Das Projekt ist leer, zusammen mit den bisher erhaltenen Informationen und meinen eigenen Ideen sind die Überlegungen zu [email protected] wie folgt aufgelistet. Willkommen zu diskutieren.

  • Versuchen Sie, mit dva 1.0, BreakChange mit einfachen Regeln kompatibel zu sein und bieten Sie CodeMod One-Click-Upgrade an
  • UnabhĂ€ngige Datenflusslösung, die React oder andere Ansichtsbibliotheken nicht erzwingt, keine Router-Bibliothek erzwingt, aber einfach mit vorhandenen Bindungen kombiniert werden kann, #530
  • Integrierte vernĂŒnftige Lösungen zur Leistungsoptimierung, wie z. B. die Memoisierung von Reselect, erfordern keinen zusĂ€tzlichen Code
  • Lassen Sie Reduzierer und Selektor enger miteinander verschmelzen und machen Sie es einfacher, sie zusammen zu schreiben.Zusammengebunden, einfacher zu schreiben, bessere Kombination
  • Fehlerbenachrichtigungen freundlicher gestalten, #436 #416
  • Code-Aufteilung intuitiver handhaben
  • Effekt-Callbacks in View eleganter handhaben, #175
  • Eleganteres HMR-Schema, #469
  • Betrachten Sie die Erweiterung und Wiederverwendung von Model, wie zum Beispiel: dva-model-extend
  • Codestil: Plugin-Implementierung neu schreiben, Module aufteilen usw.
discussion

Hilfreichster Kommentar

@nihgwu Was ist der Zweck des Extrahierens von Routern?

Alle 43 Kommentare

Wie wĂ€re es mit nativer UnterstĂŒtzung fĂŒr ts?

Ziehen Sie beim Demodellieren in ErwĂ€gung, die Übergabe eines Reduzierers zu unterstĂŒtzen, um nicht verwendete Zustandsdaten zu zerstören? https://github.com/dvajs/dva/issues/769

Wie wÀre es mit dva-cli umbenannt in roadhog? Damit das Konzept nicht verwechselt wird.

Persönlich stimme ich der nativen UnterstĂŒtzung fĂŒr ts nicht zu. Das Framework sollte versuchen, es von anderen, nicht verwandten Technologie-Stacks zu entkoppeln, rein zu halten und lieber weniger zu tun. Zum Beispiel kann das Zustandsproblem des Unmount-Modells auch mit dem gelöst werden vorhandene API und React-Router Geplant ist eine Aufspaltung in unabhĂ€ngige Komponenten wie zB React-Router-DVA, fĂŒr rn kann ich auch eine React-Navigation-Dva schreiben.

Es gibt auch Optimierungsschemata, die auch in Form von Plug-Ins unterstĂŒtzt werden können, wie z. B. dva.use(reselect) , genau wie beim Express-Middleware-Mechanismus sind nur statische Plug-Ins integriert und die anderen werden separat unterstĂŒtzt , und sogar Saga können verfĂŒgbar sein

@nihgwu Ich

Ich bin mit der Plug-in-Lösung einverstanden, ist dies möglich:

view - dva-core - [插件]

Unter ihnen ist der Teil, der dem aktuellen dva entspricht:

  • dva-core
  • dva-saga
  • Router

Die letzten beiden sind Plugins.

Kann dva als Bibliothek positioniert werden, die sich darauf konzentriert, die Beziehung zwischen Ansichten und Daten auszudrĂŒcken? Was fĂŒr ein Framework ist die Ansicht und welche Methode ist die Datenquelle, alles austauschbar gemacht? Um ein reibungsloses Upgrade auf 1.0 zu ermöglichen, definieren Sie dann dva als die Standardkombination von dva-core und saga?

Ich weiß nicht, ob die zugrunde liegende Kapselung geeignet ist, den Dispatch-Typ des Instance-Typs zu unterstĂŒtzen?

dispatch({
  type: model => model.product.loadAll,
})

Das Auswendiglernen von Strings ist ebenfalls mĂŒhsam und vergessen oft, einen Namensraum zu schreiben. Wenn es eine Dropdown-Eingabeaufforderung gibt, ist es auch bequem, sie zu rekonstruieren~

Ich weiß nicht, ob es möglich ist, standardmĂ€ĂŸig eine Reihe von Reduzierern fĂŒr alle Daten im Bundesstaat bereitzustellen
In den meisten Szenarien muss ich manuell einen Reduzierer schreiben, der einem Feld möglicherweise nur einen Wert zuweisen kann. Wenn ich also standardmĂ€ĂŸig eine vorgefertigte Einzelfeldsatzmethode fĂŒr mich bereitstellen kann, wĂ€re dies ziemlich gut.

Können Reducer als Baum implementiert werden?Wie jetzt ist ns split gezwungen, die Logik abzuflachen.Ein Modell entspricht der Wurzel eines Reducers, und es hÀngen zu viele Reducer darunter.

@xufei Ich denke, Saga sollte im Kern sein, und es ist nicht die aktuelle

@xufei Es tut mir leid, ich hatte auch das GefĂŒhl, dass Sie sich auf das Schreiben in ts beziehen sollten, aber ich denke nicht, dass die BenutzeroberflĂ€che von dva auch einfach ist und aufgrund von ts nicht umgeschrieben werden kann Typ-Dateien.

@sorrycc saga

Kann Immutable.js unterstĂŒtzt werden?

UnterstĂŒtzt Immutable.js, Immutable.js spielt eine herausragende Rolle bei der Leistungsoptimierung

Roadhog-Packaging ist zu leistungsaufwĂ€ndig. Versuchen Sie, es zu optimieren. Wenn Sie können, optimieren Sie es so weit wie möglich. Jetzt mĂŒssen Sie andere Container stoppen, bevor der Server das Projekt erstellt, sonst bleibt der Server hĂ€ngen.

Immutable.js ist veraltet. Auch die Kombination von Lodash- und Spread-VorgÀngen kann unverÀnderliche Effekte erzielen. Und Lodash ist im Grunde eingebaut.

TatsĂ€chlich ist die Entwicklungserfahrung von dva 1.x bereits sehr gut, Ă€hnlich wie bei der UnterstĂŒtzung von Immutable.js, Split Saga, nativer UnterstĂŒtzung von ts, es fĂŒhlt sich unnötig an, alles gehört zur Selbstliebe des Entwicklers, und es ist nicht viel auf die tatsĂ€chliche Entwicklungseffizienz und Erfahrung Einfluss.

Persönlich sind bei dva 2.x 4 Punkte zu beachten:

  1. Die Optimierung der Serviceschicht, ob sie in das Modell extrahiert und in einer einheitlichen Weise verpackt werden kann, kĂŒmmert sich im Grunde nicht um request , und bietet dann standardmĂ€ĂŸig die Behandlung von Netzwerkausnahmen, und jetzt im Grunde brauchen Sie um request.js selbst zu schreiben;

  2. Es stellt das Problem des Effekt-Callbacks der View-Schicht dar. Es ist unrealistisch (zu umstÀndlich), die GeschÀftslogik komplett in Modelldaten zu zerlegen und im Effekt zu verarbeiten, so dass in diesem Bereich eine elegantere Lösung benötigt wird.

  3. Es ist der Bau der umliegenden Gemeinden von dva. Derzeit sind die Arten von GerĂŒsten reich an Beispielen, aber es besteht weiterer Baubedarf. Es scheint, als ob das Ziel darin besteht, das Ressourcenniveau der Winkel- oder Reaktionsgemeinde selbst zu erreichen.

  4. Die Verbesserung der Build-Tools, Leistung, Funktionen usw. (derzeit Mock) ist noch etwas mĂŒhsam

Was mich am meisten beunruhigt, ist die Trennung von router .Ich denke, dva nur redux + redux-saga . redux Community plĂ€diert dafĂŒr, so wenig wie möglich zu tun, daher fĂŒhlen sich die 1.x-Pakete react-router und fetch unnötig an, ebenso wie die oben erwĂ€hnten Immutable . Das gehört zur Vorliebe des Entwicklers. Als Betreuer sollte man nicht geneigt sein. FĂŒr die Vorliebe des Entwicklers kann es in Form von Plug-Ins unterstĂŒtzt werden. Hinzu kommt das Problem der Serviceschicht. Bei Bedarf , Sie können plugin selbst schreiben. Es sollte nicht in dva-core

@nihgwu Was ist der Zweck des Extrahierens von Routern?

@nikogu hat zu viel getan, und AnfÀnger werden ratlos sein, wissen nicht, was das Prinzip ist.Aber wenn das Dokument detailliert ist, ist es auch möglich

Was ist der Zweck des Entfernens des Routers?

@nikogu

Derzeit ist der Anwendungsbereich von dva etwas eng, und es ist stark an die React-Community gebunden, natĂŒrlich einschließlich View, und auch stark an React-Router. Aber nachdem ich es verwendet hatte, stellte ich fest, dass einige Orte keinen Router benötigen, wie beispielsweise drahtlose mehrseitige Anwendungen; an einigen Orten ist Reak-Router nicht anwendbar, wie beispielsweise Reaktiv-Native; an einigen Orten muss kein Reagieren erforderlich sein, wie beispielsweise node , Elektron und Applets.

Ich denke, dva kann mehr.

@nikogu zieht sich vom Router zurĂŒck, weil wir verschiedene Router haben

Ich verstehe, dass dva Redux- und Saga-Code und -Logik in einer neuen Form organisiert, anstatt einen vollstĂ€ndigen Satz von Webentwicklungs-Frameworks wie Express bereitzustellen, das auch die vorhandene API von Node verwendet, um die grundlegenden Funktionen des Webservers bereitzustellen BeschĂ€ftigen Sie sich mit Body, Cookie und welche Template-Engine Sie wĂ€hlen, kann ĂŒber Middleware angepasst werden

Wenn Sie eine Komplettlösung mögen, können Sie ein dva-ant = dva-core + dva-plugins Ihren eigenen Gebrauch implementieren

Die Kombination von dva sollte die Kombination von Redux und Saga sein, denn diese beiden sind der Kern des Datenzustandsflusses, und die anderen können nur als auf Daten basierende Peripherie betrachtet und durch Plug-Ins oder andere Methoden unterstĂŒtzt werden. Wir können Express und Django vergleichen, der typische Unterschied zwischen weniger tun und mehr tun, manche Leute mögen groß und vollstĂ€ndig, aber die js-Community respektiert klein aber fein

Was die direkte Verwendung von Redux betrifft, so verwende ich dva hauptsÀchlich, weil dva die Codestruktur und Logik von Redux vereinfachen und die Produktionseffizienz verbessern kann.Dies ist auch der Kern von dva, das auf Redux basiert.

Wenn wir blindlings mehr tun, werden die Anwendungsszenarien von dva immer enger: React-Router kann zum Beispiel nicht in RN verwendet werden (v4 unterstĂŒtzt bereits, ist aber sehr einfach), RN kommt auch mit Fetch und es gibt andere starke Bindungen . Die Bibliothek wird auch Upgrade-AbhĂ€ngigkeitsprobleme verursachen. Es ist immer noch React-Router. V4 unterstĂŒtzt RN, aber dva ist immer noch V2. Wir mĂŒssen warten, bis dva den React-Router aktualisiert hat, bevor es verwendet werden kann. Wenn es ein Plug- in und aktualisieren Sie unabhĂ€ngig, es wird kein solches Problem geben

Was ich oben mit dva-core meine, ist, den kleinen Kern als dva-core zu behandeln, Router und dergleichen darin zu verwenden und dann einige Standardintegrationsschemata zu entwickeln, wie die firmeninterne vereinheitlichte Version fĂŒr das Middle- und Backoffice , und fĂŒr H5, fĂŒr kleine Programme, serverseitiges Rendering usw.

2:00:
1. In der eigentlichen Entwicklung ist die GeschĂ€ftslogik im Modell implementiert und die Datei zu groß Welche Beziehung besteht zwischen dem Anderen und dem Service? Service oder Anfrage kann eingebaut werden
2. Ändern Sie den React-Router auf das systemeigene Plug-In oder was auch immer, der Zweck besteht darin, die AbhĂ€ngigkeit zu befreien

Wann startet 2.0?

Die steckbare ssr-Lösung abstrahiert die Verwaltung des Routers. Die Serverseite kann die erste Routing-Anfrage ĂŒbernehmen und die gemeinsame dva () verwenden, um den Zustandsbaum zu initialisieren. Es fĂŒhlt sich an, dass das Server-Rendering wĂ€hrend der Aktualisierung der dva schwach wird die Anwendung neuer Funktionen.

TypeScript und RN.Hoffe auf bessere UnterstĂŒtzung

Denken Sie an einen anderen, geben Sie einen Standardwert fĂŒr namespace

Bei der Verwendung von dva wird es immer FÀlle geben, in denen reducer kein PrÀfix erfordert und die aktuelle Implementierung von dva namespace bereitstellen muss, also habe ich einen Vorschlag, wenn namespace ist default (oder global , * ), wir denken, dass model unter reducers ohne PrÀfix ist

Denken Sie persönlich an ein paar Punkte:

  • HĂ€ngt nicht von redux-saga , sodass Sie ganz einfach einige Funktionen hinzufĂŒgen können (z. B. Async/Await-UnterstĂŒtzung).
  • Aufteilung in mehrere kleine Module (z. B. ein einzelner Store, ein einzelner Router)
  • Verschachteltes Modell unterstĂŒtzen

Wir haben kĂŒrzlich vuex basierend auf redux modelliert https://github.com/d-band/yax

Es wird empfohlen, den Server serverseitig zu rendern und Front- und Backend zusammen zu schreiben!

Kann ich den Namen des Routenverzeichnisses festlegen? Verwenden Sie zum Beispiel Container
Eigentlich möchte ich den Katalog nach Funktion unterteilen, Modell, Service und Container zusammenstellen, sonst zerstört der Sprung zu mehreren Katalogen den Herzfluss. Um zu wissen, was die user.js im Tab ĂŒber dem Sublime geöffnet hat, habe ich sie bereits so benannt: user.jsx, user.model.js, user.service.js. Zusammenstellen von user/model.js, service.js, container.js

Verzeichnisorganisationen wie @zheeeng werden jetzt unterstĂŒtzt und dva hat keine EinschrĂ€nkungen bei der Verzeichnisorganisation.

@xufei
@sorrycc

Ziehen Sie beim Demodellieren in ErwĂ€gung, die Übergabe eines Reduzierers zu unterstĂŒtzen, um nicht verwendete Zustandsdaten zu zerstören?

Die manuelle Steuerung ist zu mĂŒhsam, es wird empfohlen, direkt einen Satz GC zu implementieren

Bitte aktualisieren Sie pathToRegexp, seine Analyse- und Kompiliermethoden können nicht direkt verwendet werden

Vereinbarung ist besser als Konfiguration, da die Kopplung mit anderen Projekten oder Technologie-Stacks reduziert wird.

Das EffektgeschÀft ist zu schwer, und die Idee von Model-Extend ist ganz gut

@nihgwu stimmt persönlich zu, dass „der Kern von

@sorrycc Hat

Ich hoffe stark, dass dva-cli wÀhlen kann, TypeScript-Boilerplate zu generieren

dva-core kann bereits in WeChat-Applets verwendet werden

@yautah probiert? Sie können den Plan teilen, nachdem Sie ihn ausprobiert haben.

Ich glaube, dass dva-core nur die Redux-Datenstrom-Neukapselung bereitstellen muss, ob die anderen in Form von Plug-Ins bereitgestellt werden können oder es besser wÀre, dass Benutzer sie auswÀhlen, z. B. Paket- und Routing-Schemata.

Ich hoffe, dva-cli zu unterstĂŒtzen, um den Stift zu unterstĂŒtzen

SSR nicht unterstĂŒtzen.

Wie man HRM konfiguriert, API-Schreiben ist relativ wenige

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

huyawei picture huyawei  Â·  3Kommentare

oldfeel picture oldfeel  Â·  3Kommentare

pengfeiWang picture pengfeiWang  Â·  3Kommentare

BenAnn picture BenAnn  Â·  3Kommentare

sorrycc picture sorrycc  Â·  3Kommentare