Zastanawiałem się, jak można by zaprojektować stronę internetową od podstaw za pomocą Node.js. Rozumiem, jak mogę ewentualnie zrobić, ale jestem zainteresowany w najlepszej praktyki projektowej.
Potrzebuję tej teoretycznej strony internetowej, aby:
- Wykonuj dużo AJAX
- Bądź bardzo bezpośredni
- Bądź stosunkowo mały
- Połącz się z ... powiedzmy serwerem MySQL
W PHP zbudowanie całkiem małej witryny było bardzo proste - założyłem PHP na Apache i serwerze MySQL, a potem robię coś takiego:
includes/db/
który ma connect.php do łączenia się z bazą danych, plik z typowymi funkcjami związanymi z bazą danych i tak dalejincludes/layout/
który zawierał takie rzeczy jak footer.php, header.php i inne rzeczy związane z układemincludes/users/
do obsługi działań związanych z użytkownikami
Następnie PHP po prostu pozwoli ci zbudować strony i dołączyć te pliki razem, aby utworzyć witrynę internetową - mógłbym zrobić coś takiego:
<?php
require_once('inclues/users/user_session.php');
require_once('inclues/db/connect.php');
require_once('inclues/design/header.php')
?>
// Other php or html or related content relating to the page
<?php
require_once('inclues/.../footer.php');
?>
Zastanawiałem się, co może być podobne w Node.js - szukam sposobu na osiągnięcie tego, który jest tak prosty , szybki i prosty, jak to tylko możliwe.
Jeśli odpowiedź nie jest prosta, chciałbym polecić książkę, nie mam nic przeciwko czytaniu.
Uwielbiam programowanie oparte na zdarzeniach, naprawdę uwielbiam możliwości JavaScript i jestem naprawdę podekscytowany Node.js. Chcę się nauczyć, jak od samego początku rozwijać tego typu rzeczy we właściwy sposób.
źródło
Odpowiedzi:
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.)
źródło