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
- Verwenden Sie die Winkelfabrik, um die Erstellung und Konfiguration von Objekten zu verkapulieren und zu verwalten, wodurch der Fokus der Objekterstellung vom Controller getrennt wird, wodurch die Modularität und Wartbarkeit verbessert wird.
- Implementieren Sie Dienste, um Datenabruf- und Geschäftslogik zu verarbeiten und den Angular Controller so zu optimieren, dass er sich nur auf die Sichtverwaltung konzentriert.
- Verwenden Sie die
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. - Refactor den Controller, indem Sie wiederverwendbare Logik in einen Dienst oder eine Fabrik verschieben, wodurch ein sauberer und fokussierter Controller aufrechterhalten wird, der hauptsächlich mit der Logik im Zusammenhang mit der Ansicht befasst.
- Testcontroller, Dienste und Fabriken mit Frameworks wie Jasmine oder Mokka, um sicherzustellen, dass Komponenten unabhängig arbeiten und Anwendungen robust halten.
- abstrakte sich wiederholende oder gemeinsam genutzte Funktionen in Dienste oder Fabriken, um Code -Duplikation zu vermeiden und die Aktualisierung und Verwaltung von Funktionen zu erleichtern, die in verschiedenen Teilen der Anwendung verwendet werden.
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:
<!DOCTYPE html> <html> <head> <title>Angular 重构</title> <link href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet"> <🎜> </head> <body> <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> </body> </html>
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:
<!DOCTYPE html> <html> <head> <title>Angular 重构</title> <link href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet"> <🎜> </head> <body> <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> </body> </html>
Jetzt geben wir es in unsere Index.html -Datei ein. Wir fügen auch das ng-app="dribbbleScorer"
-Merkmal zu unserem <html>
Tag hinzu, um die Winkelanwendung zu starten.
var app = angular.module("dribbbleScorer", []);
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:
<html ng-app="dribbbleScorer"> ... </html>
(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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Häufig gestellte Fragen und Lösungen für das Ticket-Ticket-Ticket-Ticket in Front-End im Front-End-Entwicklungsdruck ist der Ticketdruck eine häufige Voraussetzung. Viele Entwickler implementieren jedoch ...

JavaScript ist der Eckpfeiler der modernen Webentwicklung. Zu den Hauptfunktionen gehören eine ereignisorientierte Programmierung, die Erzeugung der dynamischen Inhalte und die asynchrone Programmierung. 1) Ereignisgesteuerte Programmierung ermöglicht es Webseiten, sich dynamisch entsprechend den Benutzeroperationen zu ändern. 2) Die dynamische Inhaltsgenerierung ermöglicht die Anpassung der Seiteninhalte gemäß den Bedingungen. 3) Asynchrone Programmierung stellt sicher, dass die Benutzeroberfläche nicht blockiert ist. JavaScript wird häufig in der Webinteraktion, der einseitigen Anwendung und der serverseitigen Entwicklung verwendet, wodurch die Flexibilität der Benutzererfahrung und die plattformübergreifende Entwicklung erheblich verbessert wird.

Es gibt kein absolutes Gehalt für Python- und JavaScript -Entwickler, je nach Fähigkeiten und Branchenbedürfnissen. 1. Python kann mehr in Datenwissenschaft und maschinellem Lernen bezahlt werden. 2. JavaScript hat eine große Nachfrage in der Entwicklung von Front-End- und Full-Stack-Entwicklung, und sein Gehalt ist auch beträchtlich. 3. Einflussfaktoren umfassen Erfahrung, geografische Standort, Unternehmensgröße und spezifische Fähigkeiten.

Diskussion über die Realisierung von Parallaxe -Scrolling- und Elementanimationseffekten in diesem Artikel wird untersuchen, wie die offizielle Website der Shiseeido -Website (https://www.shiseeido.co.jp/sb/wonderland/) ähnlich ist ...

JavaScript zu lernen ist nicht schwierig, aber es ist schwierig. 1) Verstehen Sie grundlegende Konzepte wie Variablen, Datentypen, Funktionen usw. 2) Beherrschen Sie die asynchrone Programmierung und implementieren Sie sie durch Ereignisschleifen. 3) Verwenden Sie DOM -Operationen und versprechen Sie, asynchrone Anfragen zu bearbeiten. 4) Vermeiden Sie häufige Fehler und verwenden Sie Debugging -Techniken. 5) Die Leistung optimieren und Best Practices befolgen.

Zu den neuesten Trends im JavaScript gehören der Aufstieg von Typenkripten, die Popularität moderner Frameworks und Bibliotheken und die Anwendung der WebAssembly. Zukunftsaussichten umfassen leistungsfähigere Typsysteme, die Entwicklung des serverseitigen JavaScript, die Erweiterung der künstlichen Intelligenz und des maschinellen Lernens sowie das Potenzial von IoT und Edge Computing.

Wie fusioniere ich Array -Elemente mit derselben ID in ein Objekt in JavaScript? Bei der Verarbeitung von Daten begegnen wir häufig die Notwendigkeit, dieselbe ID zu haben ...

Erforschen Sie die Implementierung der Funktion des Bedien- und Drop-Einstellungsfunktion der Panel ähnlich wie VSCODE im Front-End. In der Front-End-Entwicklung wird VSCODE ähnlich wie VSCODE implementiert ...
