Czy potrzebuję node.js, aby używać Angularjs?

79

Chciałbym używać angular.jsdo mojego narzędzia do edycji obrazu w mojej witrynie internetowej. Czy ja node.jsteż potrzebuję ?

Nie rozumiem scenariusza. Jeśli tego nie potrzebuję, to kiedy używamy razem nodejs i angularjs?

Manikandan Arunachalam
źródło
Różne rzeczy. (jedyną częstą rzeczą jest JavaScript)
Sergiu Paraschiv
Jeden to klient, a drugi to serwer. JavaScript w kliencie nie jest zależny od tego samego języka na serwerze. Co tu jest zamieszanie?
Neil Lunn
1
W prostych słowach odpowiedź brzmi: nie
Raunak Kathuria
1
po poznał, co jest kanciasty i węzeł js to pytanie wydaje się głupie do mnie .. :-P
Manikandan Arunachalam
6
Myślę, że samouczek na oficjalnej stronie Angulara wprawia wszystkich w zakłopotanie. Używa NodeJS jako serwera zaplecza. W rzeczywistości, jeśli nie używasz AJAX lub czegoś podobnego, możesz bez problemu uruchomić Angular wyłącznie na swoim komputerze.
Aaron Liu

Odpowiedzi:

65

Nie potrzebujesz NodeJS do tworzenia narzędzia do edycji obrazów po stronie klienta.

AngularJS to struktura aplikacji internetowych, utrzymywana przez Google i społeczność, która pomaga w tworzeniu aplikacji jednostronicowych, które składają się z jednej strony HTML z CSS i JavaScript po stronie klienta.

Ale jeśli pewnego dnia będziesz chciał przesłać i przechowywać te obrazy na serwerze i udostępnić je wielu klientom - to tak, będziesz również potrzebować serwera. Ten serwer można utworzyć za pomocą NodeJS.

Catalin MUNTEANU
źródło
1
Dziękuję @Catalin Munteanu. Teraz rozumiem, co to znaczy.
Manikandan Arunachalam
2
Również, gdy potrzebujesz serwera, radzę stworzyć go od podstaw. Musisz zrozumieć, jak to działa, zanim użyjesz złożonej struktury, takiej jak MEANlub SailsJS.
Catalin MUNTEANU
1
, obsługuję obraz na serwerze przez php
Manikandan Arunachalam
Co się stanie, jeśli mam uruchomioną i uruchomioną aplikację zaplecza, a wszystko, co chcę zbudować, to tylko interfejs? Czy tylko kątowy jest wystarczająco dobry?
Arun
@Arun, nie potrzebujesz NodeJS, jeśli chcesz zbudować frontend z AngularJS.
Catalin MUNTEANU
80

Czuję twój ból.

Dla kogoś nowego w tworzeniu Angular 2 czuję ból związany z koniecznością uczenia się technologii po stronie serwera w celu uzyskania czegoś, co zasadniczo jest technologią po stronie klienta . Z tego co rozumiem:

  1. node.jssłuży tylko do zarządzania zależnościami aplikacji kątowej 2. Jeśli w jakiś sposób uda ci się uzyskać te zależności bez użycia node.js, npmlub jspmmożesz uruchomić i rozwijać swoją aplikację w trybie offline. Jednak zrobienie tego ręcznie zajmie nieubłaganą ilość czasu, ponieważ musisz ręcznie pobierać pliki, które mogą mieć inne zależności, które będą wymagać ponownego pobrania innych plików (tak, byłem tam). node.jslub npmczy jspmo to chodzi automatyzuje ten proces, a także podejmuje wszelkie niezbędne kroki konfiguracji plików ( jspm) tak, że gdy używasz szczególną zależność w swoim wniosku, że szczególną zależnością jest inna zależność będzie również obecny w systemie.
  2. Niektóre przeglądarki, szczególnie Google Chrome, ograniczają pliki ładowane lokalnie ze względów bezpieczeństwa, więc niektóre technologie HTML 5 używane przez Angular 2 będą generować błąd podczas ładowania przy użyciu protokołu file:. Potrzebujesz więc serwera, z którego możesz obsługiwać swoją aplikację, aby wszystkie dostępne technologie HTML 5 były dostępne dla Angular 2.
  3. node.jsjest również potrzebny do hot-module-reloadszybkiego tworzenia aplikacji, ponieważ umożliwia file watcher apiwykrywanie zmian w kodzie źródłowym.

Ale jest sposób na stworzenie aplikacji Angular 2 offline bez node.js.

  1. Pamiętasz, jak powiedziałem, że jeśli uda ci się uzyskać wszystkie wymagane zależności, możesz uruchomić i rozwijać swoją aplikację offline? Jeśli w jakiś sposób możesz znaleźć lub utworzyć pakiet, który ma wszystkie wymagane zależności, których będzie potrzebować Twoja aplikacja, nie potrzebujesz npm ani jspm do zarządzania zależnościami za Ciebie.
  2. W przypadku file-access-restrictionproblemu możesz załadować swój projekt jako rozszerzenie. Rozszerzenia mają możliwość korzystania ze wszystkich dostępnych technologii HTML 5, a także niektórych potężnych interfejsów API (niedostępnych nawet dla aplikacji obsługiwanych na serwerze), będąc jednocześnie lokalnymi dla środowiska programistycznego. Nie musisz więc uruchamiać serwera WWW, aby uzyskać dostęp do technologii HTML 5, jeśli udostępniasz aplikację jako rozszerzenie.
  3. Jeśli chodzi o hot-module-reloadmożliwości, możesz podejść do tego z innej strony. Zamiast mieć na serwerze WWW funkcję obserwatora plików do monitorowania zmian w plikach w systemie lokalnym, możesz to zrobić z poziomu samej aplikacji. Ponieważ aplikacja może fetchlub xmlhttprequestzasoby wymagane przez aplikację, możesz okresowo fetchlub xmlhttprequestzasoby potrzebne aplikacji i porównać je z jakąś pamięcią podręczną. Ale skąd wiesz, które pliki sprawdzić? Możesz szukać na linksstronie script, zimg.Jeśli używasz SystemJS jako modułu ładującego, możesz użyć jego rejestru do wyszukania plików potrzebnych twojej aplikacji, ale nie załadowanych na stronę, ponieważ została transponowana lub coś w tym rodzaju. Chociaż wykonanie tego wszystkiego może obniżyć wydajność systemu wraz z dodatkowym narzutem związanym z transpilacją lub wstępnym przetwarzaniem kodu innego niż natywny, to zadanie można zlecić na zewnątrz, web workerco zwolni główny wątek wykonywania w systemie dla kodu aplikacji.

Nie wierzysz mi? Oto dowód.

  1. Projekt Angular in Chrome na github zawiera spakowany pakiet, który zawiera wymagane zależności potrzebne do stworzenia minimalnej aplikacji Angular 2 (minimalnie odnoszę się do samouczka Tour of Heroes, o którym mowa na stronie szybkiego startu). Więc jeśli jesteś w systemie nieobsługiwanym przez node.js (tak, na przykład ChromeOS) lub po prostu w systemie z ograniczeniami, w którym node.js po prostu nie jest dostępny, wszystkie wymagane zależności są dostępne, a ty nie potrzebujesz npm lub jspm do zarządzania wymaganymi zależnościami.
  2. Istnieje rozszerzenie proof of concept, które służy do przewodnika po samouczku bohaterów (pliki deweloperskie, maszynopis i wszystko) lokalnie jako rozszerzenie Chrome.
  3. Rozszerzenie implementuje również hot-module-reloadfunkcjonalność, podłączając się do prymitywów hmr opracowanych przez Alexisa Vincenta dla SystemJS. hot-module-reloadFunkcjonalność jest włączona przez pojedynczy plik JavaScript tak, że jeśli funkcja ta nie jest konieczna lub jest podejmowanie zbyt dużo zasobów, a następnie można po prostu usunąć wiersz obrażając kodu.

Ale uważaj.

  1. Jeśli korzystasz z tego systemu, potrzebujesz sposobu na aktualizację pakietu deweloperskiego w miarę postępu technologii i szybkiego tempa (co w przypadku Angular 3, gdy Angular 2 został właśnie wydany) lub technologii, których używasz programowanie aplikacji może stać się przestarzałe lub gdzieś po drodze zmiana interfejsu API może uniemożliwić działanie aplikacji w przyszłości. Nie masz również gwarancji posiadania aktualnych repozytoriów dla zależności, ponieważ te typy pakietów są obsługiwane ręcznie.
  2. Pakowanie aplikacji jako rozszerzenia Chrome, takiego jak Angular w Chrome, spowoduje wąskie gardła wydajności. Ponieważ kod jest transpilowany, a moduły są ładowane z opóźnieniem, tracisz postępy kompilacji JIT i innych ulepszeń wydajności, których używają nowoczesne silniki javascript do optymalizacji kodu uruchamianego w przeglądarce. Jednak to, co tracisz na wydajności, zyskujesz elastyczność w korzystaniu z technologii, którą wolisz rozwijać. Zawsze jest kompromis. Co więcej, uderzenie w wydajność jest tylko na początku, gdy kod jest ładowany. Po załadowaniu przez aplikację system będzie wiedział, jak wprowadzić ulepszenia wydajności. Podczas dystrybucji aplikacji naprawdę musisz skompilować potrzebne zasoby, aby skorzystać z ulepszeń wydajności nowoczesnych silników javascript.
  3. Ta hot-module-reloadmożliwość jest obecnie hackerskim sposobem zaimplementowania monitora plików, który używa wspólnych konwencji dla projektu (temp1.ts, temp1.css, temp1.htm), ponieważ nie ma sposobu (mogę się mylić), aby uzyskać ostateczną listę wszystkich zasobów potrzebnych aplikacji, ale nie załadowanych na stronę główną (przetransponowane lub wstępnie przetworzone zasoby).
piosenkarz
źródło
7
To powinna być akceptowana odpowiedź. Właśnie miałem to pytanie, a ty wyjaśniłeś niejasności, których nawet nie miałem. Brawo ...
Gaurav Chauhan
Nie zgadzam się, nodejs nie jest jedyną technologią po stronie serwera. Myślę, że pytanie dotyczy raczej używania gruntów, yeoman itp., Które wymagają instalacji nodejs.
Jérôme B
9

node.js jest używany do pisania Javascript po stronie serwera. angular.js to framework po stronie klienta.

Nie potrzebujesz node.js do korzystania z angular.js, ale możesz zainstalować npm (menedżera pakietów węzłów), aby użyć niesamowitych narzędzi, które znacznie ułatwią ci życie jako angular developer. Na przykład: yoeman, który jest świetnym narzędziem do budowy rusztowań. Na npm dostępnych jest wiele innych narzędzi tutaj jest link do ich strony Dowiedz się więcej o angular na oficjalnej stronie angular lub na kanale angular youtube

hasanaina
źródło
2
Ta odpowiedź jest dla mnie myląca w przypadku Angular i NodeJS: na KLIENCIE jest tak wiele narzędzi, które wymagają NodeJS - w zasadzie wszystko, co jest instalowane za pomocą narzędzia do zarządzania pakietami węzłów (npm). Nadal nie rozumiem, kiedy przychodzi czas na HOST, który korzystał z pakietów NodeJS i npm na kliencie - czy potrzebujesz również mieć NodeJS na serwerze, aby te zainstalowane pakiety działały? Jeśli odpowiedź brzmi „może”, to jakie czynniki są uwzględniane przy ustalaniu, czy NodeJS również musi znajdować się na serwerze WWW?
Jazimov
1
Odpowiadając na twoje pytanie, tak i nie. npmjest menedżerem pakietów. Instalowanie pakietu za pomocą programu npmjest tym samym, co kopiowanie pakietu i jego zależności do katalogu lokalnego. Więc jeśli chcesz mieć fajne funkcje, które są dostarczane npm, powinieneś zainstalować npmi potrzebujesz do tego węzła. Jeśli nie potrzebujesz funkcji programu npm , nie musisz go instalować i możesz samodzielnie skopiować pakiety. Powiedzmy, że Twoja witryna musi korzystać z tego selektora dat, jeśli uruchomisz komentarz instalacyjny, który go skopiuje i angularjs w dół, lub możesz to zrobić ręcznie.
hasanain
Dzięki - mogę zadać nowe pytanie, aby kontynuować. Ale zrozumiałem twój przykład. Jestem programistą .NET i będę hostować na serwerze Windows, na którym są uruchomione usługi IIS. Większość firm hostingowych nie obsługuje NodeJS na serwerze; z kolei większość tego, co robię na kliencie z Node, polega na wykorzystaniu jego narzędzia npm (menedżera pakietów) do „instalowania” dodatków / zależności. Po tym spodziewam się, że mógłbym po prostu skopiować skonfigurowane pliki na serwer WWW i działałyby dobrze bez węzła. Nie rozumiem, dlaczego chciałbym mieć węzeł na serwerze, chyba że i tak mam dostęp do konsoli i mogę uruchomić na nim npm w razie potrzeby
Jazimov
8

Numer Angularjest używany po stronie klienta i Nodepo stronie serwera.

Zwykle pasują do siebie jako stos ŚREDNI, ale nie jest to konieczne.

kike
źródło
3

Nie potrzebujesz Node.JS do działania AngularJS. NodeJS jest po stronie serwera, AngularJS po stronie klienta.

Jeśli jesteś nowy w AngularJS, polecam ten samouczek poradnik AngularJS . W samouczku będziesz używać NodeJS, zrozumiesz, dlaczego te dwa elementy współpracują ze sobą, ale nie są konieczne.

Menażka
źródło
3

Trudno odpowiedzieć, nie wiedząc, jak działa narzędzie do edycji obrazów. Ale aby odpowiedzieć na twoje pytanie, nie potrzebujesz Node.js do korzystania z AngularJS.

Angular to front-endowy framework javascript, który działa w przeglądarce internetowej klienta.

Węzeł to usługa, która może wykonywać javascript i jest często używana na serwerze, być może zamiast PHP ( jak w stosie MEAN ). Ponadto, ponieważ Node jest usługą, która może wykonywać javascript, może być używana na komputerze lokalnym podczas tworzenia aplikacji Angular do wykonywania zadań w tle, takich jak minifikacja css i javascript oraz wykonywanie testów.

Jeśli więc narzędzie do edycji obrazów zostało opracowane w języku javascript, a aplikacja korzysta z Angular i Node (jako serwera internetowego), kod może zostać wykonany po stronie klienta lub po stronie serwera.

Przeczytaj o stosie MEAN, aby zobaczyć, gdzie pasują Node i Angular. W ogóle nie potrzebujesz Node, ale fajnie jest tworzyć wszystko w tym samym języku.

JayMc
źródło
Teraz właśnie zdecydowałem, że mogę używać angularjs do obsługi, użytkownik może przesyłać obraz i korzystać z opcji takich jak (obracanie, przycinanie). Muszę zarządzać tymi obrazami. To wszystko w moich funkcjach narzędzia do edycji obrazów.
Manikandan Arunachalam
1
W przypadku manipulacji obrazami użytkownika, takich jak obracanie i przycinanie, sensowne jest posiadanie tej funkcji na interfejsie użytkownika. W przypadku rutynowych funkcji, takich jak zmiana rozmiaru obrazu, można umieścić to na serwerze węzła, aby zwolnić zasoby klienta. W dzisiejszych czasach sprzęt po stronie klienta jest dość wydajny, prawdopodobnie nie ma takiej potrzeby.
JayMc,
0

Powód instalacji NodeJ Ponieważ przeglądarka internetowa, taka jak Chrome, Firefox itp., Rozumie tylko JavaScript, musimy przetransponować nasz Typescript do JavaScript. Dlatego transpiler Typescript wymaga Node.js do generowania kodu Typescript do JavaScript.

deepika yadav
źródło