Heim Web-Frontend js-Tutorial Räumen Sie Ihre Winkelcontroller mit Fabriken und Diensten auf

Räumen Sie Ihre Winkelcontroller mit Fabriken und Diensten auf

Feb 21, 2025 pm 12:28 PM

Tidy Up Your Angular Controllers with Factories and Services

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>
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

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", []);
Nach dem Login kopieren

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()

Wir fügen auch die Score -Berechnungsmethode zur

-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>
Nach dem Login kopieren
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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

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

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was soll ich tun, wenn ich auf den Codendruck auf Kleidungsstücke für Front-End-Thermalpapier-Quittungen stoße? Was soll ich tun, wenn ich auf den Codendruck auf Kleidungsstücke für Front-End-Thermalpapier-Quittungen stoße? Apr 04, 2025 pm 02:42 PM

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 ...

Entmystifizieren JavaScript: Was es tut und warum es wichtig ist Entmystifizieren JavaScript: Was es tut und warum es wichtig ist Apr 09, 2025 am 12:07 AM

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.

Wer bekommt mehr Python oder JavaScript bezahlt? Wer bekommt mehr Python oder JavaScript bezahlt? Apr 04, 2025 am 12:09 AM

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.

Wie kann man Parallax -Scrolling- und Element -Animationseffekte wie die offizielle Website von Shiseido erzielen?
oder:
Wie können wir den Animationseffekt erzielen, der von der Seite mit der Seite mit der offiziellen Website von Shiseido begleitet wird? Wie kann man Parallax -Scrolling- und Element -Animationseffekte wie die offizielle Website von Shiseido erzielen? oder: Wie können wir den Animationseffekt erzielen, der von der Seite mit der Seite mit der offiziellen Website von Shiseido begleitet wird? Apr 04, 2025 pm 05:36 PM

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 ...

Ist JavaScript schwer zu lernen? Ist JavaScript schwer zu lernen? Apr 03, 2025 am 12:20 AM

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.

Die Entwicklung von JavaScript: Aktuelle Trends und Zukunftsaussichten Die Entwicklung von JavaScript: Aktuelle Trends und Zukunftsaussichten Apr 10, 2025 am 09:33 AM

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 Arrayelemente mit derselben ID mit JavaScript in ein Objekt? Wie fusioniere ich Arrayelemente mit derselben ID mit JavaScript in ein Objekt? Apr 04, 2025 pm 05:09 PM

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 ...

So implementieren Sie die Funktion des Ziell- und Drop-Einstellungsfunktion, ähnlich wie bei VSCODE in der Front-End-Entwicklung? So implementieren Sie die Funktion des Ziell- und Drop-Einstellungsfunktion, ähnlich wie bei VSCODE in der Front-End-Entwicklung? Apr 04, 2025 pm 02:06 PM

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 ...

See all articles