Verwendung der jQuery-Bibliothek mit Angular Framework (wenn dies wirklich erforderlich ist)

Wir präsentieren Ihnen eine Übersetzung eines Aditya Modi-Artikels, der auf blog.bitsrc.io veröffentlicht wurde. In diesem Artikel wird die Verwendung von jQuery in Angular-Anwendungen beschrieben.



Selten nehme ich etwas vorsichtig auf. Diesmal schadet jedoch Vorsicht nicht, da die Integration von jQuery in Angular nicht so einfach ist.

Warum habe ich diesen Artikel geschrieben? Manchmal ist jQuery für die Entwicklung auf Angular wirklich notwendig, jedoch werden solche JavaScript-Frameworks dieser Bibliothek äußerst selten zugeordnet. Angular ist für das Rendern und Verwalten des DOM verantwortlich. Wenn Sie mit jQuery Änderungen daran vornehmen, besteht die Gefahr, dass Sie ein äußerst unerwartetes Ergebnis erhalten.

Tipp : Mit Bit können Sie Angular-Komponenten schnell freigeben und in Ihren Anwendungen wiederverwenden. Auf diese Weise können Sie und Ihr Team weniger Zeit für die Erstellung neuer Anwendungen aufwenden. Probieren Sie es aus.



Wie auch immer, in einigen Situationen ist eine Störung des Frameworks notwendig, gerechtfertigt, es kann ein echter Ausweg sein. Diese Fälle werden in meinem Blog nicht behandelt, aber vielleicht werde ich in meinen nächsten Artikeln darüber sprechen. Lassen Sie mich Ihnen nun zeigen, wie Sie die jQuery-Bibliothek zu Angular hinzufügen. In diesem Tutorial werde ich VS-Code verwenden. Sie können einen anderen Code-Editor auswählen oder Visual Studio Code für Windows, Linux und macOS herunterladen.

JQuery-Integration in Angular


Zunächst müssen wir eine Angular-Anwendung mit dem Befehl ng new erstellen. Als nächstes gehen cd mit Hilfe des cd zu dem Ordner, in dem die jQuery-Bibliothek über npm installiert wird. Nennen wir die resultierende Anwendung angularmeetsjquery .

 ng new angularmeetsjquery cd angularmeetsjquery npm install jquery — save 

Klingt gut, aber jQuery Purist würde lieber über jQuery CDN als über npm herunterladen. CDN ist eine alternative Möglichkeit, einer Angular-Anwendung eine jQuery-Bibliothek hinzuzufügen, ich bevorzuge jedoch die Verwendung der npm-Methode. Wenn Sie sich https://jquery.com/download/ ansehen, finden Sie jQuery CDN-Bibliotheken und andere CDN-Netzwerke von Google, Microsoft, CDNJS und jsDelivr. Ich würde die neueste offizielle Version von CDN empfehlen, da sie den SRI-Mechanismus (Subresource Integrity) unterstützt.

Um das jQuery-CDN zu verwenden, erstellen Sie einfach einen Link zu der Datei im script Tag direkt aus der jQuery-CDN-Domäne. Code mit der Funktion Subresource Integrity sieht folgendermaßen aus. (Wie Sie sehen können, verwende ich die jQuery-Bibliothek Version 3.3.1.)

 <script src=”https://code.jquery.com/jquery-3.3.1.js" integrity=”sha256–2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60=” crossorigin=”anonymous”> </script> 

Das Skript kann aus der Ressource code.jquery.com kopiert werden. Als Nächstes müssen Sie es in die Datei index.html am Ende des < body > -Tags einfügen.

Die jQuery-Bibliothek global machen


Die Datei jquery.min.js im Ordner dis des jQuery-Moduls ist nicht öffentlich (der korrekte Name des Ordners lautet dist. - Ca. Ed. ). Um die jQuery-Bibliothek global zu gestalten, .angular-cli.json die Datei .angular-cli.json und schreiben Sie einen Link zum Pfad zur jQuery-Datei hinein.

Wenn Sie einen Link zu einem Dateipfad in einer Angular-Anwendung übertragen, lautet der Stammordner src. Die jQuery-Bibliothek befindet sich jedoch im Verzeichnis node_modules . Daher müssen Sie den richtigen Pfad zur .angular-cli.json .

 ../node_modules/jquery/dist/jquery.min.js 

Um sicherzustellen, dass der Pfad korrekt ist, node_modules→jquery→dist→jquery.min.js Sie in das node_modules→jquery→dist→jquery.min.js . Hier sehen Sie den angegebenen Pfad. Dies bedeutet, dass die jQuery-Bibliothek für diese Anwendung global hinzugefügt wurde. Erwarten Sie nicht, dass sich die localhost: 4200-Seite in Ihrem Browser neu lädt, da sich die Datei außerhalb des src-Ordners befindet. Damit Änderungen in der Anwendung angezeigt werden, müssen Sie sie neu starten.

 ng serve –open 

Verwenden von jQuery in einer Angular-Anwendung


Um die jQuery-Bibliothek mit dem Angular-Framework zu verwenden, müssen Sie zu den Anwendungskomponenten wechseln. Ich werde Ihnen zeigen, wie diese beiden Technologien mit einem einfachen button HTML-Element zusammenarbeiten können. Löschen Sie jedoch zuerst alle Codezeilen in der Datei app.component.html und fügen Sie das HTML-Element der button .

 <button> Click me </button> 

Die Seite wird automatisch neu geladen und eine Schaltfläche wird angezeigt.



Wir müssen das Zeichen für jQuery in der Datei app.component.ts .

 declare var $: any; 

ngOnInit dann den ngOnInit Lebenszyklus-Hook ein. Dazu können Sie OnInit aus Angular Core importieren.

 import { Component, OnInit} from '@angular/core'; 

Fügen Sie ngOnInit .

 export class AppComponent implements OnInit { 

Unabhängig von der Bereitschaft des DOM können Sie jQuery-Code in die ngOnInit Methode schreiben, wie dies bei der Standardentwicklung von Webanwendungen der ngOnInit ist. button.click der button.click Methode das Ereignis app.component.html , um die in app.component.html erstellte button.click zu button.click .

 export class AppComponent implements OnInit { ngOnInit(){ $('button').click(function(){ alert('Wass up!'); }); } } 

Wenn Sie auf die Schaltfläche klicken, wird "Wass Up" angezeigt.

Fazit


Das Hinzufügen von jQuery zu Angular sowie die Verwendung dieses Bundles ist eine zweifelhafte Idee.

Ja, auf den ersten Blick scheint die Methode einfach zu sein. Wie ich am Anfang des Artikels sagte, stellt sich die Idee jedoch am häufigsten als schlecht heraus, egal wie verlockend die gemeinsame Nutzung dieser beiden Technologien aussehen mag. In realen Angular-Anwendungen müssen Sie sich mit viel komplexeren Dingen als dem ereignisbezogenen HTML- button befassen. Mein Rat an alle, die mit Angular arbeiten und nach einer Möglichkeit suchen, jQuery in ihren TypeScript-Code einzubetten: Wenn nicht, nicht. Ich wünsche Ihnen erfolgreiche Experimente im Bereich jQuery und Angular!

Source: https://habr.com/ru/post/de454312/


All Articles