Zauważyłem, że mylę się między frameworkiem WWW a serwerem WWW.
Apache is a web server.
Tornado is a web server written in Python.
Nginx is a web server written in C
Zend is a web framework in php
Flask/Bottle is a web framework in Python
RoR is a web framework written in Ruby
Express is a web framework written in JS under Node.JS
Czy możemy powiedzieć, że node.js jest serwerem WWW ??? Jestem tak zdezorientowany między serwerem internetowym / frameworkiem.
Jeśli w jakiś sposób node.js jest rodzajem serwera WWW, a nie webframework (Express tak), dlaczego musimy umieszczać cały node.js na serwerze Nginx w przydatnej praktyce? Pytanie o SO
Kto może pomóc???
Zestaw
node.js
webserver
web-frameworks
Kit Ho
źródło
źródło
Odpowiedzi:
serwer internetowy
Serwer WWW jest podstawą dostarczania żądań / pagów do klientów / użytkowników w Internecie
Framework sieciowy
Struktura sieciowa wykorzystuje serwer sieciowy do dostarczania żądań do klienta, ale nie jest to serwer sieciowy.
Node.js
Ale z drugiej strony możesz również tworzyć aplikacje CLI, więc myślę, że powinieneś postrzegać to bardziej jako platformę do pisania programów javascript do uruchamiania na serwerze (komputerze) przy użyciu języka programowania Javascript , a nie tylko w przeglądarce, jak na początku. Myślę, że można to zobaczyć jako
Javascript++
??Możesz także napisać serwer WWW z node.js, jak widać na pierwszej stronie node.js. Na początku Ryan powiedział, że można umieścić Nginx przed node.js ze względu na stabilność projektu. Projekt był i nadal jest dość młody. Nginx to sprawdzony serwer WWW, który będzie działał, podczas gdy node.js może ulec awarii. Z drugiej strony wielu użytkowników po prostu używa do tego node.js.
źródło
Powiedziałbym, że Node.js jest środowiskiem wykonawczym lub silnikiem wykonawczym.
Prawdopodobnie najlepsza definicja, jaką do tej pory znalazłem, pochodzi z artykułu Roba Gravelle zatytułowanego „An Intro to Node.js” :
Encyklopedia PCMAG.COM zawiera również następującą definicję „silnika wykonawczego”:
Również artykuł w Wikipedii zatytułowany „System wykonawczy ” deklaruje:
Cóż, czy istnieją jakieś środowiska uruchomieniowe (lub nawet platformy programowe), takie jak Node.js? Myślę, że JRE jest dobrym przykładem takiego środowiska. Node.js i JRE - mają wiele wspólnego. Wszystkie mają (rodzaj) maszynę wirtualną, bibliotekę klas i framework do implementacji wielu typów aplikacji, w tym CLI.
Wracając do pytania, czy możemy powiedzieć, że Node.js to serwer WWW? Zmieńmy „Node.js” na „JRE” i odpowiedzmy, czy JRE jest serwerem WWW. Odpowiedź brzmi nie.
Wszystko, co możemy powiedzieć, to to, że Node.js to środowisko uruchomieniowe, którego można użyć do implementacji serwera WWW. Cóż, taka jest moja opinia.
źródło
Powiedzenie, że węzeł jest serwerem WWW, to tak, jakby powiedzieć, że javacript może działać tylko w przeglądarce, możesz tak powiedzieć, ale może też robić wiele innych rzeczy.
NodeJS
Wyrazić
Nginx
W produkcji większość ludzi używa Nginx przed serwerem węzłów jako serwera proxy do obsługi plików statycznych i innych różnych elementów, takich jak buforowanie, routing itp.
źródło
Zaklasyfikowałbym node.js jako strukturę serwera, z dostępnymi pakietami, które mogą go używać jako serwera HTTP lub serwera WebSocket, lub własnego niestandardowego protokołu itp.
Powodem, dla którego możesz umieścić nginx przed serwerem node.js, jest równoważenie obciążenia HTTP i odwrotne proxy na kilku maszynach, na których działa aplikacja serwera.
źródło
Jak czuję twój ból!
Podobnie jak wielu, trudno mi było dotrzeć do istoty Node.js, ponieważ większość ludzi pisze / mówi tylko o tej części Node, którą uważają za przydatną - a część, którą uważają za interesującą, jest zwykle drugorzędną zaletą Node, a nie jej główną cel, powód. Muszę powiedzieć, że uważam, że to szaleństwo, gdy ludzie mówią, że Node to tylko środowisko wykonawcze JavaScript. Wykorzystanie przez Node JavaScript - i jego wybór środowiska wykonawczego V8 - to po prostu sposób na zakończenie , najlepsze narzędzia do rozwiązania problemu, który programiści Node chcieli rozwiązać.
Głównym celem Node było usprawnienie zarządzania zdarzeniami użytkowników w aplikacji internetowej. Więc Node jest w przeważającej mierzeużywane na zapleczu aplikacji internetowej. Zarządzanie zdarzeniami wymaga, aby coś nasłuchiwało na serwerze pod kątem tych zdarzeń użytkownika. Dlatego należy skonfigurować serwer http, aby kierował każde zdarzenie do odpowiedniego skryptu obsługi. Węzeł zapewnia strukturę do szybkiego konfigurowania serwera do nasłuchiwania żądań użytkowników na dedykowanym porcie. Węzeł używa JavaScript do obsługi zdarzeń, ponieważ JavaScript ma funkcje zwrotne: pozwala to na zawieszenie jednego zadania do czasu zwrócenia wyniku zadania zależnego. Niewiele innych języków ma tę funkcję, a te, które ją mają, mogą nie mieć tak wydajnego interpretera jak środowisko wykonawcze Google V8. Większość programistów internetowych zna JavaScript, więc nie ma dodatkowej nauki języka z Node. Co więcej, posiadanie funkcji zwrotnych pozwala na umieszczenie wszystkich zadań użytkownika w jednym wątkubez jawnego blokowania zadań wymagających dostępu do bazy danych lub systemu plików. I to właśnie prowadzi do doskonałej wydajności wykonawczej Node przy intensywnym, równoczesnym użyciu - jest to główny cel jego rozwoju.
Aby pomóc użytkownikom Node w szybkim pisaniu kodu zaplecza, programiści Node zorganizowali również wbudowaną bibliotekę JS do rutynowych zadań (np. Spraw związanych z żądaniami HTTP, kodowaniem ciągów znaków, strumieniami itp.) Oraz repozytorium NPM (Node Package Manager) : jest to otwarty, obsługiwany przez użytkownika zestaw pakietów skryptów dla różnych funkcji standardowych i niestandardowych. Wszystkie projekty Node umożliwiają importowanie pakietów NPM do projektu za pomocą ustalonego polecenia instalacji npm .
Żądania użytkowników obsługiwane przez Node będą wymagały aplikacji sieciowej, takich jak uwierzytelnianie, zapytania do bazy danych, zarządzanie treścią (Strapi CMS) itp. Wszystko to zostanie wysłane do portu Node. (Tam, gdzie analiza danych pobranych z bazy danych zajmuje dużo czasu procesora, ten typ procesu najlepiej umieścić w osobnym wątku, aby nie spowalniał prostszych żądań użytkownika). Inne typy żądań użytkownika, np. W celu załadowania innej strony internetowej , pobieranie plików CSS / JS / obrazów itp. będzie nadal wysyłane przez przeglądarkę do domyślnych portów na serwerze, na którym będzie je obsługiwał program serwera WWW (Apache, NGinx itp.).
Tak więc w praktyce Node jest zasadniczo strukturą do szybkiego tworzenia serwera i obsługi zdarzeń, ale zastępuje tylko niektóre funkcje programu serwera WWW.
Inne zastosowania Node niezwiązane z zapleczem po prostu wykorzystują jedną lub drugą z jego funkcji, np. Silnik V8. Na przykład, narzędzia do budowania frontendu Grunt i Gulp używają Node.js do przetwarzania skryptu kompilacji, który można zakodować w celu konwersji SASS do CSS, minimalizacji plików CSS / JS, optymalizacji rozmiaru / ładowania obrazu itp. Ale ten rodzaj pracy jest naprawdę tylko uboczne wykorzystanie Node, a nie jego główne zastosowanie, które polega na tworzeniu wydajnych procesów zaplecza dla aplikacji internetowych.
źródło
Serwer sieci Web to coś, co obsługuje swoich klientów za pośrednictwem Internetu za pośrednictwem protokołów, a struktura sieci Web jest czymś, co nazywamy kompilatorem. Składa się ze wszystkich wymaganych bibliotek, reguł składniowych itp.
A node.js to framework !!
źródło
Myślę, że problem polega na tym, że terminologia „serwer WWW” lub „serwer aplikacji internetowych” jest zdominowana przez świat JEE i produkty, które nie są tak zmodularyzowane, jak dzisiejszy świat frameworków JavaScript, które z kolei można łączyć mniej więcej swobodnie.
Nie widzę powodu, dla którego technologia, która może obsługiwać złożone aplikacje w sieci, powinna nie robić należy nazywać serwerem WWW lub serwerem aplikacji WWW!
Jeśli połączysz, powiedzmy, że Nuxt jako nakładka, z Feathers jako zapleczem - będziesz mieć zaplecze obsługujące REST API i renderowany po stronie serwera interfejs użytkownika!
Oczywiście, możesz (źle) użyć tego do obsługi treści statycznej - wtedy nazwałbym to serwerem WWW lub mógłbyś użyć go do stworzenia i obsługi pełnej aplikacji - wtedy nazwałbym to serwerem aplikacji WWW.
To połączone cechy lub cechy, które sumują się, aby służyć jakiemuś celowi - prawda? - Funkcje takie jak stabilność, skalowalność i takie są IMHO czymś, co z czasem zostanie dodane do tych technologii. Na razie są wciąż całkiem nowe.
źródło
Właśnie użyłem Node.js po raz pierwszy, aby stworzyć bota Discord. Pomyślałem: „Wow, Node.js to serwer? Myślałem, że to biblioteka JS!” A może mogłem pomyśleć o tym jako o ramach.
Czy to serwer WWW? Nie, ale możesz to zrobić. Czy to jest serwer? Jak w oprogramowaniu, które odbiera zapytania i podaje wynik? Tak.
W moim przypadku wydałem polecenie:
node index.js
A teraz Node.js czeka na żądania odpowiedzi (przez mojego bota). To serwer, ale nie obsługuje stron internetowych.
źródło
Nie, to środowisko uruchomieniowe ... więc nie jest to serwer WWW, ale nie wymaga go do działania. Więc prawdopodobnie dlatego może to być mylące. Może działać samodzielnie, bez konieczności korzystania z serwera WWW, ponieważ sam jest środowiskiem wykonawczym, ale znowu nie jest serwerem WWW.
źródło