Kann eckig und reagieren zusammen spielen?

7

Ich mag wirklich eckig, aber reaction bekommt viel Aufmerksamkeit. Sind sie wirklich gegensätzliche Kräfte?

Ist es eine gute Idee, react und angular zusammen zu verwenden? Könnte ich? Soll ich?

Was sind die Vor- und Nachteile eines Mischens?

Reagieren ist für die Benutzeroberfläche, aber eckig kann den Controller und die Ansicht handhaben ... aber reagiert besser auf die Ansicht? Können wir eine bessere App machen, indem wir angular nur auf den Controller verweisen?

Irgendwelche guten Ressourcen für diese Dinge?

Eine Sache, die ich an eckigen mag, scheint weniger wahr zu sein mit reaction ist, dass eckig wirklich ermöglicht, dass Sie Bedenken trennen, während die Reaktion anfängt, dies ein wenig zu verwirren. Es scheint zumindest der eckigen Haltung zuwider zu sein.

    
tpie 24.04.2015, 13:42
quelle

4 Antworten

17
  

Sind sie wirklich gegensätzliche Kräfte?

In gewissem Sinne sind sie das, und in einem anderen Sinn sind sie es nicht. Leute benutzen definitiv React innerhalb von Angular-Direktiven, aber meistens tun sie das, um einen Leistungsschub zu bekommen und nicht, weil sie denken, dass React großartig ist. Und wenn Sie nur React für eine bessere Leistung suchen, verpassen Sie wirklich das Wertversprechen mit React.

Ich würde sagen, dass sie gegensätzliche Kräfte sind, indem sie die gleichen Probleme lösen. Auch wenn das Argument, dass React nur das V in MVC und Angular ist, ein "Fully Blowed Framework" ist, wird sehr viel geworfen, Angular und React sind sehr vergleichbar.

Angular verfügt über Controller und Direktiven (sowie Services und Factories), während React nur über Komponenten verfügt. Aus diesem Grund ist es einfach zu interpretieren, dass Angular ein vollständigeres Framework ist. Aber lass uns das sezieren.

Controller

React enthält keinen Controller, aber in der React-Welt gibt es ein Konzept namens "View-Controller", das ziemlich gut auf Angular-Controller abbildet. Ein React "View Controller" ist wie jede andere React-Komponente definiert, aber es wird nur minimal gerendert. Es geht um die Daten- / Zustandsverwaltung und die anschließende Übergabe dieses Zustands an Komponenten, die diese Daten / diesen Zustand rendern.

Ein einfaches Beispiel wäre:

%Vor%

Also ist die ViewComponent hier besorgt über die Besonderheiten beim Rendern von HTML, und die ViewController kümmert sich darum, Daten zu bekommen und zu verwalten, die sie an die ViewComponent weitergibt.

Richtlinien

Ich glaube nicht, dass jemand argumentiert, dass das Konzept der Angular-Direktiven ziemlich gut auf React View-Komponenten abbildet.

Services und Fabriken

Dies ist etwas, das in Angular existiert, nur weil es das Konzept der Dependency Injection hat, und im Grunde das einzige Argument für "Angular ist ein vollständigerer Rahmen als React". Du könntest für Tage argumentieren, wenn Angulars Weg von DI in eine Sprache wie Javascript gut passt, und wenn Javascript wirklich etwas wie es braucht, weil es so dynamisch ist, aber machen wir das nicht.

Anstatt ein eigenes Modulsystem zu erstellen, wie es Angular tut (und ich denke, wir können uns alle darin einig sein, dass angulare Module selbst sehr wenig Wert hinzufügen), erlaubt Ihnen React, jedes beliebige Modulsystem zu verwenden. Transplantierte ES6, CommonJS, AMD, einfache alte Globals, etc. Die Community hat sich ziemlich gut auf ES6 und CommonJS geeinigt, was eine gute Sache ist (und Angular bewegt sich mit Angular 2 in diese Richtung).

Wenn DI Ihr Ding ist, ist es sehr einfach, es zusammen mit einem guten Modulsystem zu implementieren. Und in React von Pete Hunt gibt es sogar einen wirklich interessanten Ansatz einer völlig neuen Interpretation von DI: Ссылка

  

Ist es eine gute Idee, react und angular zusammen zu verwenden? Könnte ich? Sollte   Ich?

Ich würde es nur tun, wenn du vorhast, nach unten zu gehen. Ihre Anwendung wird schwieriger zu verstehen und komplexer, da Sie sowohl Angular und React kennen müssen. Das heißt, eine Menge Leute scheinen React in Angular zu verwenden, also ist dies nur meine Meinung.

  

Reagieren ist für UI, aber eckig kann den Controller und die   Ansicht ... aber reagiert besser auf die Sicht? Können wir es besser machen?   App durch Abwinkelung nur an den Controller?

Wie ich schon sagte, ist das ein übliches Missverständnis. Angular und React lösen die gleichen Probleme, aber auf unterschiedliche Weise. Der Vorteil, Ihre Geschäftslogikebene nicht mit dem Angular-Modulsystem zu verbinden, ist, dass es einfacher ist, auf etwas anderes zu migrieren. Eine Menge Leute benutzen eine Flux-Architektur zusammen mit React, aber es gibt nichts, was spezifisch für Flux ist. Sie können die Flux-Ideen mit jedem Framework verwenden.

  

Eine Sache, die ich an eckigen mag, scheint weniger zutreffend zu sein   Reagieren ist, dass eckig wirklich erlaubt, dass man trennt   Bedenken, während Reaktion beginnt, dies ein wenig zu verwirren. Es sieht so aus   im Gegensatz zu der eckigen, zumindest.

Dem widerspreche ich sehr. Ich finde, dass meine React-Anwendungen eine bessere Trennung von Bedenken haben als meine Angular-Anwendungen (und ich habe Angular sehr oft verwendet). Sie müssen nur die Art des Reagierens verstehen, und es ist auch eine gute Idee zu lernen, worum es bei Flux geht. Ich sage nicht, dass Sie in Angular keine großartigen Apps schreiben können. Es ist nur meine Erfahrung, dass es einfacher ist, mit React in die Grube des Erfolgs zu fallen als mit Angular.

Angular hat eine zweistufige Lernkurve. Zuerst erstellst du einen Controller mit einem Scope, fügst ein Array zum Scope hinzu und druckst das mit einem ng-repeat aus und du bist überwältigt davon, wie einfach das war. Sie fügen eine Anweisung hinzu, die etwas schwieriger zu verstehen ist, aber Sie kopieren und einfügen und es funktioniert. Ja!Dann, wenn Sie tiefer graben, treffen Sie den zweiten Schritt in Ihrer Lernkurve, wo Sie anfangen müssen, die Interna von Angular wirklich zu verstehen. Sie müssen wissen, dass Bereiche sich gegenseitig mit prototypischer Vererbung erben und die Konsequenzen davon (brauchen Sie einen Punkt in allen ng-model Ausdrücken, usw.). Und was ist mit directiven Controllern? Was sind sie und wie vergleichen sie sich mit regulären Controllern? Und was ist die Transkription? Und jemand hat mir gesagt, dass ich dies und das im Kompilierungsschritt meiner Anweisung ausführen muss, was ist das?

Mit React ist die anfängliche Lernkurve etwas steiler. Aber wenn du erst einmal drüber bist, gibt es keinen zweiten Schritt mehr. Learning Flux könnte als ein zweiter Schritt betrachtet werden, aber das Lernen von Flux gibt Ihnen neues Wissen, das auch auf andere Javascript-Frameworks übertragen wird, was der "Kompilierungsschritt in einer Angular-Direktive" nicht tut.

Ein weiterer großer Vorteil von React gegenüber Angular ist, dass es meistens nur Javascript ist. Eigenschaften von React-Elementen sind nur Javascript-Objekte / Funktionen anstelle von magischen Zeichenfolgen wie in Angular-Attributen. Dies bedeutet auch, dass Ihr regulärer Linter Ihnen sagen kann, ob ein Fehler in Ihrem Callback-Attribut-Ausdruck vorliegt. In Angular müssen Sie den Code ausführen, um zu sehen, ob er funktioniert.

Da Javascript bereits einen Blockbereich hat, müssen Sie sich keine Gedanken darüber machen, Ihren Elementnamen etwas voran zu stellen, das sie eindeutig macht.

Also sage ich, dass Angular wertlos ist und dass Sie sich zu React bewegen sollten? Nein, bin ich nicht. Viele Unternehmen haben viel in Angular investiert. Aber wenn Sie mich fragen, gibt es in Angular mehr Eigenheiten und Besonderheiten, über die Sie wirklich Bescheid wissen müssen, wenn Sie eine wartbare Anwendung erstellen. Sie sollten auch darüber nachdenken, dass Angular 2 komplett neu geschrieben wurde, und es hat eine Menge Inspiration von React genommen (was großartig ist!).

    
Anders Ekdahl 27.04.2015 07:17
quelle
2

Ja, Sie können, wie @Eward Knowles sagte, directives verwenden, um React zu verwenden. Obwohl Sie ngReact verwenden können, können Sie auch leicht Anweisungen erstellen, um React zu verwenden.

In Angular sind Direktiven die beste Methode, um "View Oriented" -Komponenten in eckige Anwendungen zu integrieren, und React ist ein Framework, das stark auf die Präsentations- / Ansichtsebene ausgerichtet ist.

Da React Selektoren verwendet, um Teile Ihrer Seite anzufügen und zu rendern, können Sie eine Anweisung erstellen, die in eckiger Weise funktioniert:

  1. Sie sammeln Daten und manipulieren sie in Ihrer angularen Logik über services und controllers (Service- und Datenschicht)
  2. Dann erhält% code_de% und kann diese Daten bearbeiten (Art der Modellschicht)
  3. Dann ruft die directive directive auf und übergibt ihr die Informationen, um Ihre Informationen mit den praktischen React-Funktionen richtig zu rendern. (Ebene anzeigen)

Hier ist ein großartiges und ziemlich kurzes Video zur Integration von Angular + React + D3 zum Erstellen eines Basisdiagramms.

    
Cyberdelphos 24.04.2015 15:02
quelle
1

Ja, Sie können eine Richtlinie ngReact verwenden. Es gibt einige Anwendungsfälle, in denen Sie das vielleicht tun möchten, aber mit Angular 2, das in diesem Sommer kommt, würde ich versuchen, es gerade noch zu implementieren.

Was die Geschwindigkeit anbelangt, sollten Sie dieses großartige Gespräch während der ng-conf Anfang dieses Jahres sehen.

    
Edward Knowles 24.04.2015 13:54
quelle
1

Wenn Sie sich mit Angular und React zusammenfinden, ist Ссылка eine wirklich nette Brücke zwischen den beiden. Sie können Services / Provider / Fabriken / Werte / Konstanten zwischen Angular und der Außenwelt teilen, indem Sie sie wie jeden anderen Code verwenden. Hoffe das hilft!

    
bcherny 16.02.2017 04:17
quelle

Tags und Links