Benötige ich node.js, um Angularjs zu verwenden?

79

Ich möchte angular.jsfür mein Bildbearbeitungswerkzeug auf meiner Website verwenden. Brauche ich node.jsauch

Ich verstehe das Szenario nicht. Wenn ich es nicht brauche, wann verwenden wir dann beide Nodejs und Angularjs zusammen?

Manikandan Arunachalam
quelle
Verschiedene Dinge. (nur häufig ist JavaScript)
Sergiu Paraschiv
Einer ist Client und einer ist Server. JavaScript im Client ist nicht von derselben Sprache auf dem Server abhängig. Was ist die Verwirrung hier?
Neil Lunn
1
In einfachen Worten ist die Antwort nein
Raunak Kathuria
1
Nachdem ich erfahren habe, was eckig ist und Knoten js, scheint mir diese Frage albern .. :-P
Manikandan Arunachalam
6
Ich denke, das Tutorial auf Angulars offizieller Website verwirrt alle. Es verwendet NodeJS als Backend-Server. Sofern Sie AJAX oder ähnliches nicht verwenden, können Sie Angular problemlos ausschließlich auf Ihrem Computer ausführen.
Aaron Liu

Antworten:

65

Sie benötigen NodeJS nicht, um ein clientseitiges Bildbearbeitungswerkzeug zu erstellen.

AngularJS ist ein Webanwendungsframework, das von Google und der Community verwaltet wird und das beim Erstellen von Anwendungen mit nur einer Seite hilft, die auf der Clientseite aus einer HTML-Seite mit CSS und JavaScript bestehen.

Wenn Sie diese Bilder jedoch eines Tages hochladen, auf einem Server speichern und für mehrere Clients zugänglich machen möchten, benötigen Sie auch einen Server. Dieser Server könnte mit NodeJS erstellt werden.

Catalin MUNTEANU
quelle
1
Vielen Dank, dass Sie @Catalin Munteanu. Jetzt verstehe ich was es bedeutet.
Manikandan Arunachalam
2
Auch wenn Sie einen Server benötigen, empfehle ich Ihnen, einen von Grund auf neu zu erstellen. Sie müssen verstehen, wie es funktioniert, bevor Sie ein komplexes Framework wie MEANoder verwenden SailsJS.
Catalin MUNTEANU
1
Ich
behandle
Was ist, wenn eine Backend-Anwendung ausgeführt wird und ich nur das Frontend erstellen möchte? Ist nur Winkel gut genug?
Arun
@Arun, Sie benötigen NodeJS nicht, wenn Sie das Frontend mit AngularJS erstellen möchten.
Catalin MUNTEANU
79

Ich fühle deinen Schmerz.

Für jemanden, der neu in der Angular 2-Entwicklung ist, kann ich den Schmerz spüren, serverseitige Technologien für etwas lernen zu müssen, das im Wesentlichen eine clientseitige Technologie ist . Von dem, was ich verstehe:

  1. node.jswird nur zum Verwalten der Abhängigkeiten einer Angular 2-Anwendung verwendet. Wenn Sie es irgendwie schaffen, diese Abhängigkeiten ohne Verwendung zu erhalten node.js, npmoder wenn Sie jspmIhre Anwendung offline ausführen und entwickeln können. Das manuelle Ausführen dauert jedoch unaufhaltsam, da Sie Dateien manuell herunterladen müssen, die möglicherweise andere Abhängigkeiten aufweisen, für die andere Dateien erneut heruntergeladen werden müssen (ja, ich war dort). node.jsoder npmoder jspmfür diesen Fall wird dieser Prozess automatisiert und alle erforderlichen Schritte zum Konfigurieren der Dateien ( jspm) ausgeführt, sodass bei jeder Verwendung einer bestimmten Abhängigkeit in Ihrer Anwendung auch die andere Abhängigkeit dieser bestimmten Abhängigkeit in Ihrem System vorhanden ist.
  2. Einige Browser, insbesondere Google Chrome, beschränken lokal geladene Dateien aus Sicherheitsgründen, sodass bestimmte von Angular 2 verwendete HTML 5-Technologien beim Laden mit dem Protokoll file: einen Fehler verursachen. Sie benötigen also einen Server, von dem aus Sie Ihre Anwendung bedienen können, damit Angular 2 alle verfügbaren HTML 5-Technologien ausführen kann.
  3. node.jswird auch für die hot-module-reloadFähigkeit zur schnellen Anwendungsentwicklung benötigt, da damit file watcher apiÄnderungen am Quellcode erkannt werden können.

Es gibt jedoch eine Möglichkeit, die Angular 2-Anwendung offline ohne node.js zu entwickeln.

  1. Erinnern Sie sich, als ich sagte, dass Sie Ihre Anwendung offline ausführen und entwickeln können, wenn Sie alle erforderlichen Abhängigkeiten erhalten können? Wenn Sie ein Paket finden oder erstellen können, das alle erforderlichen Abhängigkeiten enthält, die Ihre Anwendung benötigt, benötigen Sie weder npm noch jspm, um die Abhängigkeiten für Sie zu verwalten.
  2. Für das file-access-restrictionProblem können Sie Ihr Projekt als Erweiterung laden. Erweiterungen können alle verfügbaren HTML 5-Technologien sowie einige leistungsstarke APIs (nicht einmal für Anwendungen verfügbar, die auf einem Server bereitgestellt werden) verwenden und sind gleichzeitig lokal für Ihre Entwicklungsumgebung. Sie müssen also keinen Webserver starten, um auf HTML 5-Technologien zuzugreifen, wenn Sie Ihre Anwendung als Erweiterung bereitstellen.
  3. Für die hot-module-reloadFähigkeit können Sie es von der anderen Seite nähern. Anstatt einen Datei-Watcher auf dem Webserver zu haben, um Änderungen an Dateien im lokalen System zu überwachen, können Sie dies über die Anwendung selbst tun. Da die Anwendung fetchoder xmlhttprequestRessourcen, die von der Anwendung benötigt werden, können fetchoder können Sie xmlhttprequestdie Ressourcen, die Ihre Anwendung benötigt , regelmäßig oder mit einem Cache vergleichen. Aber woher wissen Sie, welche Dateien überprüft werden müssen? Sie können suchen linksinnerhalb der Seite, scriptvonimg.Wenn Sie SystemJS als Modullader verwenden, können Sie mithilfe der Registrierung nach den Dateien suchen, die von Ihrer Anwendung benötigt, aber nicht auf der Seite geladen werden, da sie transpiliert wurde oder so. Dies alles kann einen Leistungsverlust für Ihr System web workerbedeuten , zusammen mit dem zusätzlichen Aufwand für das Transpilieren oder Vorverarbeiten von nicht nativem Code. Dieser Job kann jedoch an einen ausgelagert werden, der den Hauptausführungsthread im System für Ihren Anwendungscode freigibt.

Glaubst du mir nicht? Hier ist der Beweis.

  1. Das Angular in Chrome-Projekt auf Github enthält ein komprimiertes Paket, das die erforderlichen Abhängigkeiten enthält, die zum Entwickeln einer minimalen Angular 2-Anwendung erforderlich sind (minimal beziehe ich mich auf das Tutorial zur Tour of Heroes, auf das auf der Schnellstartseite verwiesen wird). Wenn Sie sich also auf einem System befinden, das von node.js nicht unterstützt wird (ja, beispielsweise ChromeOS), oder nur auf einem eingeschränkten System, auf dem node.js einfach nicht verfügbar ist, sind alle erforderlichen Abhängigkeiten verfügbar und Sie nicht benötigen npm oder jspm, um die erforderlichen Abhängigkeiten für Sie zu verwalten.
  2. Es gibt eine Proof-of-Concept-Erweiterung, die das Tutorial für die Tour of Heroes (die Entwicklungsdateien, das Typoskript und alles) lokal als Chrome-Erweiterung dient.
  3. Die Erweiterung implementiert auch eine hot-module-reloadFunktionalität, indem sie sich in die von alexis vincent für SystemJS entwickelten hmr-Grundelemente einfügt. Die hot-module-reloadFunktionalität wird durch eine einzelne Javascript-Datei aktiviert. Wenn diese Funktionalität nicht benötigt wird oder zu viele Ressourcen beansprucht, können Sie einfach die fehlerhafte Codezeile entfernen.

Aber seien Sie gewarnt.

  1. Wenn Sie dieses System verwenden, benötigen Sie eine Möglichkeit, Ihr Entwicklungspaket zu aktualisieren, wenn die Technologie voranschreitet und sich rasant weiterentwickelt (was mit Angular 3 zu tun hat, wenn Angular 2 gerade veröffentlicht wurde) oder die von Ihnen verwendeten Technologien Das Entwickeln Ihrer Anwendung kann veraltet sein oder eine API-Änderung kann dazu führen, dass Ihre Anwendung in Zukunft nicht mehr funktionsfähig ist. Es ist auch nicht garantiert, dass Sie über aktuelle Repositorys für die Abhängigkeiten verfügen, da diese Pakettypen manuell verwaltet werden.
  2. Das Bündeln Ihrer Anwendung als Chrome-Erweiterung wie in Angular in Chrome führt zu Leistungsengpässen. Da Code transpiliert und Module verzögert geladen werden, verlieren Sie die Fortschritte der JIT-Kompilierung und anderer Leistungsverbesserungen, die moderne Javascript-Engines zur Optimierung des im Browser ausgeführten Codes verwenden. Wenn Sie jedoch an Leistung verlieren, erhalten Sie die Flexibilität, die Technologie zu verwenden, in der Sie sich am liebsten entwickeln. Es gibt immer einen Kompromiss. Darüber hinaus steht der Leistungstreffer erst am Anfang, wenn Code geladen wird. Sobald es von der Anwendung geladen wurde, weiß das System, wie die Leistungsverbesserungen implementiert werden. Wenn Sie Ihre Anwendung verteilen, müssen Sie wirklich die erforderlichen Ressourcen kompilieren, um die Leistungsverbesserungen moderner Javascript-Engines nutzen zu können.
  3. Die hot-module-reloadFunktion ist derzeit eine hackige Methode zum Implementieren eines Datei-Watchers, der allgemeine Konventionen für ein Projekt verwendet (temp1.ts, temp1.css, temp1.htm), da es keine Möglichkeit gibt (ich könnte mich darin irren), eine endgültige Liste zu erhalten aller Ressourcen, die von der Anwendung benötigt, aber nicht auf der Hauptseite geladen werden (die transpilierten oder vorverarbeiteten Ressourcen).
Windsänger
quelle
7
Dies sollte die akzeptierte Antwort sein. Ich hatte gerade diese Frage und Sie haben Verwirrungen beseitigt, die ich nicht einmal hatte. Bravo ...
Gaurav Chauhan
Ich bin nicht einverstanden, nodejs ist nicht die einzige serverseitige Technologie. Ich denke, die Frage ist viel mehr über die Verwendung von Grunzen, Yeoman usw., die NodeJS installieren müssen.
Jérôme B
9

node.js wird verwendet, um Javascript auf der Serverseite zu schreiben. angular.js ist ein clientseitiges Framework.

Sie benötigen node.js nicht, um angle.js zu verwenden, aber Sie können npm (Node Package Manager) installieren, um einige großartige Tools zu verwenden, die Ihnen das Leben als Angular-Entwickler erheblich erleichtern. Zum Beispiel: Yoeman , ein großartiges Gerüstwerkzeug. Es gibt viele andere Tools, die auf npm verfügbar sind. Hier ist ein Link zu ihrer Website. Weitere Informationen zu Angular finden Sie auf der offiziellen Angular-Website oder auf dem Angular- Youtube-Kanal

hasanain
quelle
2
Diese Antwort finde ich bei Angular und NodeJS verwirrend: Auf dem CLIENT gibt es so viele Tools, die NodeJS erfordern - im Grunde alles, was mit dem Dienstprogramm node package manager (npm) installiert wird. Was ich immer noch nicht verstehe, ist, wenn es darum geht, die Site zu HOSTEN, auf der NodeJS- und npm-installierte Pakete auf dem Client verwendet wurden. Müssen Sie auch NodeJS auf dem Server haben, damit diese installierten Pakete funktionieren? Wenn die Antwort "vielleicht" lautet, welche Faktoren spielen dann eine Rolle, wenn Sie wissen, ob NodeJS auch auf dem Webserver vorhanden sein muss?
Jazimov
1
Um Ihre Frage zu beantworten, ja und nein. npmist ein Paketmanager. Das Installieren eines Pakets mit entspricht npmdem Kopieren des Pakets und seiner Abhängigkeiten in Ihr lokales Verzeichnis. Wenn Sie also die netten Funktionen haben möchten, die mitgeliefert werden, npmsollten Sie sie installieren npmund benötigen dafür einen Knoten. Wenn Sie die Funktionen von nicht benötigen, müssen npm Sie sie nicht installieren und können Pakete selbst kopieren. Nehmen wir an, Ihre Site muss diese Datumsauswahl verwenden, wenn Sie einen Installationskommentar ausführen, der sie kopiert und eckig nach unten zeigt, oder Sie können dies manuell tun.
Hasanain
Danke - ich kann eine neue Frage posten, um sie weiter zu verfolgen. Aber ich habe dein Beispiel verstanden. Ich bin ein .NET-Programmierer und würde auf einem Windows-Server hosten, auf dem IIS ausgeführt wird. Die meisten Hosting-Unternehmen scheinen NodeJS auf dem Server nicht zu unterstützen. Andererseits verwende ich auf dem Client mit Node hauptsächlich das Dienstprogramm npm (Paketmanager), um Add-Ons / Abhängigkeiten zu "installieren". Danach erwarte ich, dass ich die konfigurierten Dateien einfach auf den Webserver kopieren kann und sie ohne Knoten einwandfrei laufen. Ich verstehe nicht, warum ich einen Knoten auf dem Server haben möchte, es sei denn, ich hätte trotzdem Konsolenzugriff und könnte npm darauf
ausführen
8

Nr. AngularWird auf der Client-Seite und Nodeauf der Server-Seite verwendet.

Sie gehören zusammen als MEAN Stack, sind aber nicht erforderlich.

Kike
quelle
3

Sie benötigen Node.JS nicht, damit AngularJS funktioniert. NodeJS ist serverseitig, AngularJS ist clientseitig.

Wenn Sie AngularJS noch nicht kennen, würde ich dieses Tutorial AngularJS empfehlen . Im Tutorial werden Sie NodeJS verwenden, Sie werden verstehen, warum die beiden zusammenarbeiten, aber nicht notwendig sind.

Billy
quelle
3

Es ist schwer zu beantworten, ohne zu wissen, wie Ihr Imaging-Bearbeitungstool funktioniert. Aber um Ihre Frage zu beantworten, nein, Sie brauchen Node.js nicht, um AngularJS zu verwenden.

Angular ist ein Front-End-Javascript-Framework, das im Webbrowser des Clients ausgeführt wird.

Node ist ein Dienst, der Javascript ausführen kann und häufig auf einem Server verwendet wird, möglicherweise als Ersatz für PHP ( wie im MEAN-Stack ). Da Node ein Dienst ist, der Javascript ausführen kann, kann er auf Ihrem lokalen Computer bei der Entwicklung von Angular-Anwendungen verwendet werden, um Hintergrundaufgaben wie das Minimieren von CSS und Javascript und das Durchführen von Tests auszuführen.

Wenn Ihr Imaging-Bearbeitungstool in Javascript entwickelt wurde und Ihre Anwendung Angular und Node (als Webserver) verwendet, kann der Code entweder clientseitig oder serverseitig ausgeführt werden.

Lesen Sie den MEAN-Stack, um zu sehen, wo Node und Angular zusammenpassen. Sie brauchen Node überhaupt nicht, aber es ist schön, alle in derselben Sprache zu entwickeln.

JayMc
quelle
Jetzt habe ich nur beschlossen, dass ich AngularJs verwenden kann, ein Benutzer Bilder hochladen und Optionen wie (Drehen, Zuschneiden) verwenden kann. Ich muss diese Bilder verwalten. Das ist alles in meinen Bildbearbeitungswerkzeugfunktionen.
Manikandan Arunachalam
1
Für Benutzerbildmanipulationen wie Drehen und Zuschneiden ist es sinnvoll, diese Funktionalität im Frontend zu haben. Für Routinefunktionen wie das Ändern der Bildgröße können Sie diese auf einen Knotenserver stellen, um Clientressourcen freizugeben. Heutzutage ist clientseitige Hardware ziemlich leistungsfähig und wird wahrscheinlich nicht benötigt.
JayMc
0

Grund für die Installation von NodeJs Da ein Webbrowser wie Chrome, Firefox usw. nur JavaScript versteht, müssen wir unser Typoskript in JavaScript umwandeln. Daher benötigt der Typescript-Transpiler Node.js zum Generieren des Typescript-Codes in JavaScript.

Deepika Yadav
quelle