Heim >Web-Frontend >js-Tutorial >Räumen Sie Ihre Winkelcontroller mit Fabriken und Diensten auf
Vor ungefähr fünf oder sechs Jahren dominierte JQuery die Kunden des Webs. Es liest wie Pure English, ist einfach zu installieren und hat eine reibungslose Lernkurve, die selbst Kleinkinder leicht loslegen können. Diese Benutzerfreundlichkeit bringt jedoch auch eine Reihe von Problemen mit sich. JQuery macht es leicht, etwas zusammenzusetzen, das „nutzbar“ ist, aber es geht zu Lasten von Best Practices, Wartbarkeit und Skalierbarkeit. Dann beginnt der Framework -Krieg und bald krabbeln alle, um die neuesten und besten Frameworks auszuprobieren, die versprechen, Struktur und Skalierbarkeit in ihre Anwendungen zu bringen. AngularJS ist eines der Frameworks. Jetzt ist die Lernkurve von Angular viel steiler als die von JQuery, aber ich denke, sie hat sich so weit entwickelt, dass viele Entwickler grundlegende Anwendungen mit fairem Vertrauen einrichten können. Mit anderen Worten, die Verwendung von Frameworks kann die Kernprobleme des Anwendungsdesigns nicht automatisch lösen. Es ist weiterhin möglich, nicht zubereitete oder nicht skalierbare Anwendungen in Frameworks wie AngularJs, Emberjs oder React zu erstellen. Tatsächlich ist es für Anfänger und sogar Intermediate-Framework-Benutzer weit verbreitet, diesen Fehler zu machen.
Schlüsselpunkte
controllerAs
-Syntax, um die Bindung in Vorlagen zu vereinfachen und häufige Fallstricke im Zusammenhang mit der Verwendung von $scope
zu vermeiden, wodurch die Lesbarkeit und Wartbarkeit Ihres Codes verbessert wird. Wie ist es so einfach, außer Kontrolle zu geraten?
Um zu demonstrieren, wie diese plötzliche Komplexität selbst in der grundlegendsten AngularJS -Anwendung auftritt, beginnen wir mit dem Aufbau einer Anwendung und beobachten Sie, wo wir schief gehen könnten. Dann werden wir uns die Lösung später ansehen.
Erstellen wir eine einfache Anwendung
Die Anwendung, die wir erstellen werden, ist eine Bewertung von Dribbble Player. Wir können den Namen des Dribbble -Benutzers eingeben und sie in die Anzeigetafel hinzufügen. Spoiler - Hier können Sie die effektive Implementierung des Endprodukts sehen. Erstellen Sie zuerst eine Index.html -Datei mit folgenden Inhalten:
<code class="language-html"><!DOCTYPE html> <title>Angular 重构</title> <link href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet"> <div class="container"> <div class="panel panel-default"> <div class="panel-heading">Dribbble 玩家分数</div> <div class="panel-body"> <p>添加 Dribbble 玩家以查看他们的排名:</p> <div class="form-inline"> <input class="form-control" type="text"> <button class="btn btn-default">添加</button> </div> </div> <ul class="list-group"></ul> </div> </div> </code>
Erstellen Sie unsere AngularJS -Anwendung
Wenn Sie schon einmal eckige Anwendungen geschrieben haben, sollten die nächsten Schritte sehr vertraut sein. Zunächst erstellen wir eine App.js -Datei, in der wir unsere AngularJS -Anwendung instanziieren:
<code class="language-html"><!DOCTYPE html> <title>Angular 重构</title> <link href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet"> <div class="container"> <div class="panel panel-default"> <div class="panel-heading">Dribbble 玩家分数</div> <div class="panel-body"> <p>添加 Dribbble 玩家以查看他们的排名:</p> <div class="form-inline"> <input class="form-control" type="text"> <button class="btn btn-default">添加</button> </div> </div> <ul class="list-group"></ul> </div> </div> </code>
Jetzt geben wir es in unsere Index.html -Datei ein. Wir fügen auch das ng-app="dribbbleScorer"
-Merkmal zu unserem Tag hinzu, um die Winkelanwendung zu starten.
<code class="language-javascript">var app = angular.module("dribbbleScorer", []);</code>
Nachdem unsere Anwendung eingerichtet und gebootet ist, können wir die Geschäftslogik der Anwendung verarbeiten.
(Der folgende Inhalt ähnelt dem Originaltext, aber die Sätze und der Vokabular werden angepasst, um die ursprüngliche Bedeutung unverändert zu halten, und einige wiederholte Schritte werden weggelassen, um die Ausgangslänge zu steuern.)
Durch schrittweise Hinzufügen von Funktionen (Formulare, Dribbble -Datenerfassung, Playerentfernung, Spielergebrauch, Spielerobjekte und Bewertungsberechnung). Der ursprüngliche Text zeigt, wie die Anwendung Schritt für Schritt "ausgeführt" wird, aber auch den Controller -Code verursacht auch aufgebläht und komplex werden.
Verwenden Sie die Drehfabrik, um unseren Fokus
abstrahieren zu lassen Die beiden Konzepte zum Hinzufügen und Entfernen von Spielern sind etwas Teil des Controllers. Dies ist nicht so sehr, dass der Controller diese Funktionen enthüllt, sondern dass er auch für ihre Implementierung verantwortlich ist. Wäre es nicht besser, wenn die Funktion des Controllers die Anfrage nur an einen anderen Teil der Anwendung überreicht, um die Vor- und Nachteile des Hinzufügens des Spielers zu verarbeiten? Hier kommt die AngularJS -Fabrik ins Spiel. addPlayer()
(Die Fabrikerstellung und Verwendung des Originaltextes wurde neu geschrieben, was prägnanter und klarer ist und die Kernlogik behält)
Wir haben eine Fabrik erstellt, die ein Konstruktor zum Erstellen von Dribbble -Player -Objekten ist. Diese Fabrik ist dafür verantwortlich, Daten von der Dribbble -API abzurufen und sie dem Player -Objekt hinzuzufügen. Durch die Verwendung dieser Fabrik haben wir den Controller so vereinfacht, dass er nur für das Hinzufügen und Entfernen von Spielern verantwortlich ist. DribbblePlayer
(Die Verbesserungen der Fabrikfunktionen im Originaltext, wie das Hinzufügen von und likeScore()
Methoden, wurden ebenfalls umgeschrieben, um es prägnanter zu machen) commentScore()
-Fabrik als Methode des Spielersobjekts hinzu. Auf diese Weise ist der Controller -Code prägnanter und nur für die Logik im Zusammenhang mit der Ansicht verantwortlich. DribbblePlayer
Zusammenfassung
Dieser Artikel zeigt, wie man problemlos „nutzbarer“ Code schreibt und wie es schnell schwer zu warten ist. Wir haben einen chaotischen Controller voller Funktionen und Verantwortlichkeiten. Nach einigen Refactoring sieht unsere Controller -Datei jetzt jedoch so aus:
<code class="language-html"> ... </code>Es ist einfacher zu lesen und konzentriert sich auf sehr wenige Dinge - darum geht es bei Refactoring. Ich hoffe, ich habe Ihnen die notwendigen Werkzeuge zur Verfügung gestellt, damit Sie über einen besseren Weg nachdenken können, um AngularJS -Anwendungen zu erstellen. Happy Refactoring! Der Code für dieses Tutorial ist auf GitHub verfügbar!
(Der FAQ -Teil am Ende des Originaltextes wird weggelassen, da der Artikel zu lang ist und eine schwache Beziehung zum Kerninhalt hat. Bei Bedarf können Sie eine separate FAQ -Frage stellen, um zu beantworten.)
Das obige ist der detaillierte Inhalt vonRäumen Sie Ihre Winkelcontroller mit Fabriken und Diensten auf. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!