Na początek złe wieści: jako Node.js jest dość młodą techniką, myślę, że zauważysz, że proces tworzenia pełnoprawnej strony internetowej i jej utrzymywania / obsługi będzie bardzo różny od tego, do czego jesteś przyzwyczajony.
Josh3736 dodaje: Kiedy już dowiesz się, jak działa Node.js i jego różne pakiety (Connect, Express), stwierdziłem, że możesz bardzo szybko tworzyć nowe witryny.
Chropowate krawędzie, które obecnie istnieją w Node.js, w połączeniu z szybkim tempem jego rozwoju i wszystkimi zaangażowanymi modułami, mogą jednak komplikować sprawę i sprawić, że wszystko będzie mniej proste, szybkie i proste, niż byś chciał.
Mając to na uboczu, oto dobra wiadomość:
Pakiet Node Manager NPM ma wiele dobrych narzędzi i ram do rozszerzenia funkcjonalności node.js za gołe kości, dzięki czemu nadaje się do tworzenia serwera WWW.
Przede wszystkim byłby to Express Framework który zawiera prawie wszystko, czego potrzebujesz do uruchomienia serwera internetowego (w tym pliki cookie, sesje i routing ścieżek). Dodatkowo Express obsługuje podszewki, które dbają o zawartość nagłówka i stopki.
Express jest zbudowany na bazie Connect Sencha . Pliki cookie i sesje są w rzeczywistości obsługiwane przez Connect. Express upraszcza trasowanie i obsługuje widoki / częściowe. Więc jeśli nie potrzebujesz wszystkich dzwonków i gwizdków, które są dostarczane z Expressem, możesz zamiast tego wybrać Connect.
Jeśli lubisz używać szablonów dla tych podszablonów, Jade Template Engine może przyspieszyć działanie. Chociaż Josh3736 wskazuje, że Jade jest powolny i znaczący białymi znakami . Bardziej szczegółowy przegląd można znaleźć tutaj , w tym jego ulubiony doT . (Osobiście używam Node.js tylko do socket.io
aplikacji opartych na bazie, więc jest lepszym źródłem niż ja, jeśli chodzi o tworzenie szablonów).
Państwo może połączyć się z MySQL od node.js pomocą db-mysql moduł, ale jeśli nie musisz, bo masz dostęp do danych podłączonych do już istniejącego systemu, radzę użyć bardziej ... „nowoczesny 'podejście, które polega na wykorzystaniu bazy danych NoSQL, tak jak wydaje się to robić w większości projektów Node.js. MongoDB przez Mongoose to popularna metoda.
A jeśli chodzi tylko o przechowywanie interesujących Cię obiektów, po prostu wybierz Redis (co prawdopodobnie i tak będzie Ci potrzebne).
Po ukończeniu witryny musisz ją wdrożyć i upewnić się, że działa. Można to zrobić na wiele sposobów, na przykład przy użyciu wbudowanej obsługi klastrów lub bardziej przyjaznego dla funkcji forever
modułu npm. Zobacz to moje pytanie SO po więcej informacji.
Wniosek :
Oto co próbuję osiągnąć:
Zapytanie, jaka jest najlepsza praktyka tworzenia strony internetowej w Node.js, jest mniej więcej tym samym, co pytanie, jaki jest najlepszy sposób na zbudowanie witryny w PHP: 100 programistów udzieli 100 różnych odpowiedzi.
NPM jest obdarzony wieloma doskonałymi strukturami, które znacznie upraszczają wiele związanych z nim zadań, ale wszystko opiera się na preferencjach, które z nich są właściwą drogą.
Jak powiedziałem, Node.js jest wciąż dość młodą techniką, więc żaden z frameworków ani dodatkowych narzędzi nie pojawił się jeszcze jako „standard defacto”; dla większości rzeczy, które próbujesz zrobić, są prawdopodobnie różne alternatywy i spodziewaj się, że Twój kod zepsuje się, gdy używasz większości z nich podczas aktualizacji, ponieważ rozwój samego Node.js i większości modułów przebiega szybko. Będziesz musiał nadążyć.
Łącząc to wszystko razem :
Jak już powiedziałem, moim głównym zastosowaniem Node.js jest możliwość korzystania z niego socket.io
, więc nie mam żadnych dobrych przykładów produkcji (A ponieważ mam zamiar wyjechać na zasłużone wakacje, nie nie mam też czasu na złożenie jednego). Jest jednak kilka dobrych przykładów:
Ponownie, droga (a następnie przykład do naśladowania) zależy w dużej mierze od twoich ostatecznych celów i wybranych technik, ale na szczęście dostępnych jest wiele zasobów dla wszystkich dostępnych opcji. Większość modułów korzysta z dobrze udokumentowanych repozytoriów GitHub i zawiera przykłady w połączeniu z najpopularniejszymi modułami (zobacz /examples/
katalog, który wydaje się być obecny w większości repozytoriów).
Powodzenia! (I dziękuję Josh3736 za poprawienie moich błędów.)