Wiele razy mówiłem o tym, jak niesamowite jest Node.js dla aplikacji internetowych w czasie rzeczywistym - rzeczy, które wymagają gniazd, komety, komunikacji z AJAX i tak dalej. Wiem, że jego oparty na zdarzeniach, asynchroniczny, oparty na wątkach model nadaje się również do współbieżności przy niskim obciążeniu.
Widziałem także samouczki Node.js dotyczące prostszych, „tradycyjnych” aplikacji, nie działających w czasie rzeczywistym (np. Standardowy przykład blogu, który wydaje się być standardowym „Hello World” dla osób uczących się tworzenia aplikacji). Wiem również, że węzeł-statyczny pozwala na obsługę zasobów statycznych.
Moje pytanie brzmi: czy istnieje jakiś dobry powód, aby unikać Node.js w przypadku tradycyjnych aplikacji internetowych, takich jak ogłoszenia, fora, wspomniany przykład blogu lub rodzaj aplikacji CRUD tworzonych dla wewnętrznych aplikacji biznesowych? Tylko dlatego, że wyróżnia się funky w czasie rzeczywistym, czy jest to przeciwwskazane do bardziej zdecydowanych zastosowań?
Jedyną rzeczą, o której mogę pomyśleć, poza batem, jest brak dojrzałych bibliotek (choć to się zmienia).
(Powód, dla którego pytam, jest to, że rozważam porzucenie PHP dla Node.js, głównie w celu przezwyciężenia niedopasowania impedancji podczas przełączania między językami, ale także po to, aby móc ponownie użyć kodu sprawdzania poprawności itp. Moje superego upomina mnie, aby wybrać najlepsze narzędzie do tego zadania , nie mam jednak czasu na naukę piętnastu języków i wszystkich bibliotek użytkownika, żeby mieć kompleksowy arsenał. Zapewniam też, że Node.js może ułatwić mi optymalizację niż PHP / Apache w przyszłości, kiedy muszę zacząć myśleć o dużym natężeniu ruchu).
[EDYCJA] Dzięki za dotychczasowe odpowiedzi, ludzie; Chcę tylko sprawdzić, czy ktokolwiek waży, zanim wybiorę odpowiedź. Odpowiedź z @Raynos trochę potwierdza to, co myślę, a linki od komentujących dostarczyły dobrego myślenia do przemyślenia, ale chcę sprawdzić, czy ktoś inny ma jakieś odpowiedzi specyficzne dla Węzła, na przykład „NIE UŻYWAJ NODE DLA PROBLEMU X „. (Oprócz zadań wymagających dużego procesora; już to wiem :-)
źródło
Odpowiedzi:
Tak, jeśli masz N lat na platformie internetowej X, to oczywiście możesz szybciej opracować aplikację na platformie X.
Jeśli chcesz zrobić Y, a platforma X ma gotowe rozwiązanie Y, które robi X, zrób to.
Wszystkie ogólne powody, dla których warto korzystać z jednej platformy nad drugą.
Tak, istnieją inne platformy, które pozwalają szybciej pisać ogólne aplikacje, przychodzi na myśl rubin na szynach.
Jednak to powiedział. Mam doświadczenie z węzłem i nie mogę twierdzić, że wybrałbym inną platformę niż węzeł, chyba że zrobi to dla mnie ogromna ilość funkcji.
Zasadniczo jest to proste pytanie
Nie ma solidnych powodów, dla których node.js jest niewygodną platformą (inną niż „i hate javascript”)
źródło
Po kilku tygodniach pracy z węzłem powiedziałbym, że tak, jest bardzo fajny. Ale niekoniecznie coś, czego chcesz użyć do zastąpienia swoich popularnych aplikacji internetowych ... ani, imo, nie jest to przeznaczone.
Pamiętaj, że węzeł jest własnym serwerem. Wprowadza to złożoność, jeśli chcesz uruchomić więcej niż tylko jedną aplikację node.js. tzn. jeśli masz więcej niż jedną witrynę / domenę hostowaną na komputerze. Nie przypomina stosu LAMP, w którym można mieć tuzin aplikacji PHP dla kilkudziesięciu różnych domen działających na tym samym serwerze (przynajmniej na porcie 80). Istnieją struktury dla węzła, które prawdopodobnie umożliwiają, ale to dodaje złożoności, której po prostu nie potrzebujesz, jeśli trzymasz się tradycyjnych platform internetowych. (Oczywiście można również skonfigurować serwery proxy, umieszczając serwer WWW przed węzłem, ale tego rodzaju korzyści nie przynoszą korzyści z używania węzła).
imo, Node jest idealny do pracy w połączeniu z tradycyjnym serwerem WWW. Sposób, w jaki mam teraz zorganizowane rzeczy, to podawanie statycznego html / js / images przez apache i obsługa potrzeb danych w czasie rzeczywistym przez długie odpytywanie aplikacji węzła.
źródło
Dobry powód do zastanowienia się nad węzłem nie jest techniczny - jest świetny i niesamowity w tym, co robi.
Są to biznes, a zwłaszcza kapitał ludzki, tj. Programiści, którzy go znają, ile kosztują i jak są dostępni. Nie jest to trudne do nauczenia się, ale jak w przypadku każdej nowszej technologii liczba osób, które ją dobrze znają (lub chcą), jest podporządkowana większej grupie pracowników.
źródło
To bardzo dobre pytanie, które musimy zadać, aby posunąć naprzód stan techniki.
Byłem bardzo ciekawy (jak Paul d'Aoust), gdzie istnieją ograniczenia Node.JS. Niestety, wiele odpowiedzi jest PEŁNYCH subiektywnych uprzedzeń i tymczasowo istotnych uzasadnień.
Zadałem sobie pytanie: Czy możemy odfiltrować subiektywne błędy i zejść na stałe odpowiedzi na to istotne pytanie?
Pozostałe punkty wydają się:
1. NodeJS nie jest tak dojrzały jak tradycyjne frameworki. Jak sugeruje Paul d'Aoust, jest to tylko tymczasowo istotny powód, nie do pełnego unikania, ale do przeglądu i należytej staranności. Odrabianie zadań domowych jako profesjonalistów internetowych jest naszym zadaniem, a naszym zadaniem jest określenie najlepszego dopasowania technologii do organizacji, ich potrzeb, ich przyszłości, zespołu (a nie nas). Dojrzałość to potrzeba wyjaśnienia i oceny apetytu na ryzyko, ale nie unikanie.
2. NodeJS jako serwer proxy. Mądra sugestia wcześniejszej dyskusji, którą warto przeanalizować i rozważyć. Jest to pojęcie używania Węzła w korelacji z istniejącymi technologiami jako wzorzec projektowy interfejsu proxy interfejsu użytkownika. Ale nie jest to również powód do UNIKANIA używania węzła, ale powód, aby unikać używania go jako pełnej zamiany. Zamiast tego zdecydował się na takie podejście.
3. Węzeł debugowania. W rozmowie z deweloperami Core Node w Joyent istnieje wiele komplikacji związanych z debuggowaniem i wykrywaniem pierwotnej przyczyny problemów wynikających z rdzenia (w oparciu o wykonanie pojedynczego wątku i niemożność przejrzenia poprzednich wątków). Jest to warte rozważenia i oceny - ale (ponownie) prawdopodobnie nie jest to awersja do powszechnego użytku, tylko przypadki na krawędziach, które mogą przesunąć kopertę. Być może twoje szczególne potrzeby należą do tej kategorii, a może nie.
4. Zasoby ludzkie. To najlepszy powód, aby UNIKAĆ używania JS na tej stronie, i moim skromnym zdaniem jest to surowa i niewygodna prawda. Nasuwa się pytanie: czy Twoja firma ma odpowiednich utalentowanych specjalistów pod ręką, aby zobaczyć projekt przez cały cykl życia? Jeśli nie, nie ma wątpliwości, że należy unikać NodeJS. Lub zamiast tego rozważ A) zlokalizowanie odpowiedniego talentu lub B) Kształcenie istniejącego talentu.
Skargi: moja obserwacja skarg dotyczących JavaScript jest taka, że wiele z nich wynika bardziej z błędu użytkownika niż z konsekwentnych błędów języka. Obaliliśmy wiele roszczeń przeciwko „The Hate JavaScript Diatribe” i nadal będziemy obalać wiele innych. Problemy takie jak - dokumentacja nie jest wystarczająco dobra, nie jest wystarczająco seksowna, ale ludzie jej nie lubią, to rak, to diabeł lub zbyt „podatny na typografię” (-CRichardson), są subiektywne i stronnicze skargi, które należy odrzucić, aby móc podejmować trafne decyzje korporacyjne.
Ostatecznie prawidłowa odpowiedź może być - nie ma dobrych powodów, by UNIKAĆ NodeJS . Być może dlatego doświadcza szybkiego wzrostu, adopcji i wkładu. Ale być może dla nas wszystkich odpowiedzią jest kontynuacja oceny, badań i lepszego zrozumienia NodeJS - i poszukiwanie konkretnych awersji. W dążeniu do otwartości na zrozumienie, gdzie Node.JS jest niedojrzały - znajdujemy dokładnie to, gdzie musimy go ulepszyć. I to jest błogosławieństwo.
Dobre pytanie. Z jednej strony jestem ciekawy, czy ktoś wymyśli lepszy powód do uniknięcia NodeJS - niż te.
źródło
Czy jest jakaś korzyść z używania węzła nad X do aplikacji nie działających w czasie rzeczywistym:
Korzyści z używania X over Node w aplikacjach nie działających w czasie rzeczywistym:
Moja odpowiedź zdecydowanie nie będzie poprawna w 2015 r. W 2014 r. Pomiń Węzeł w przypadku aplikacji internetowych, które nie działają w czasie rzeczywistym, ale miej je na oku.
Każda platforma internetowa ma mocną stronę. Będziesz szczęśliwy, gdy będziesz go używać do tego momentu. Aplikacje internetowe działające w czasie rzeczywistym nie są mocną stroną środowisk Node.
źródło
Node.js jest bardzo popularną platformą i ma wiele interesujących funkcji bla bla bla bla, ale użycie narzędzia jest osobistą preferencją. Dałem Node.js cztery razy i nie byłem z tego zadowolony. Oto moje powody. Należy pamiętać, że niektóre z tych przyczyn są nieaktualne lub po prostu osobiste: P
źródło
HTTP jest bezstanowy, więc w rzeczywistości nie ma czegoś takiego jak aplikacja internetowa działająca w czasie rzeczywistym, a zatem nie ma powodu, dla którego nie można używać węzła do wszystkiego.
To powiedziawszy, węzeł lepiej nadaje się do określonego typu architektury aplikacji. PHP to pliki HTML zawierające trochę kodu. Węzeł to kod opcjonalnie zawierający odrobinę html.
Oznacza to, że jeśli Twoja aplikacja jest standardowym formularzem HTML bez żadnego skryptu po stronie klienta, PHP będzie łatwiejsze. Węzeł ma narzędzia do tworzenia szablonów, ale oczywiście nie jest tak dojrzały jak PHP.
Jeśli masz dużo skryptów po stronie klienta i zapisujesz dane za pomocą ajax, kończysz na statycznych funkcjach wywoływania klienta HTML na serwerze. Właśnie w tym węźle jest dobry. Chociaż nie jest to sposób, w jaki zwykle buduje się aplikacje CRUD, możesz stworzyć coś całkiem ładnego przy użyciu odpowiedniego frameworka.
źródło