Najlepsze praktyki budowania strony internetowej z wykorzystaniem Node.js

Zastanawiałem się, jak można przejść do tworzenia strony internetowej od podstaw z Node.js. Rozumiem, jak mógłbym to zrobić, ale interesuje mnie najlepsza praktyka projektowa.

Potrzebuję tej strony teoretycznej, aby:

  1. Do a lot of AJAX
  2. bądź bardzo prosty
  3. być stosunkowo małe
  4. Połącz się z... powiedzmy, że serwer MySQL

W PHP Budowa dość małej strony internetowej była bardzo prosta - ustawiłem up PHP na Apache i serwerze MySQL, a następnie zrobić coś takiego:

  • includes/db/ który ma connect.php do łączenia się z db, plikiem z typowymi funkcjami związanymi z db i tak dalej
  • includes/layout/ które miały takie rzeczy jak stopka.php, header.php i inne rzeczy związane z układem
  • includes/users/ do obsługi działań związanych z użytkownikami

Następnie PHP pozwala Ci budować strony i dołączać te pliki razem w celu utworzenia strony internetowej-mógłbym pójść coś w stylu:

<?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, aby to osiągnąć, co jest tak proste, szybkie I proste Jak to możliwe.

Jeśli odpowiedź nie jest prosta, chciałbym polecić książkę, nie mam nic przeciwko czytaniu.

Uwielbiam programowanie oparte na zdarzeniach, uwielbiam możliwości JavaScript i jestem bardzo podekscytowany węzłem.js. Chcę się nauczyć, jak rozwijać tego rodzaju rzeczy z nim we właściwy sposób od samego początku.

Author: Benjamin Gruenbaum, 2012-07-03

1 answers

Na początek zła wiadomość: jako węzeł.js to dość młoda technika, myślę, że przekonasz się, że proces tworzenia pełnoprawnej strony internetowej i jej utrzymywania/obsługi będzie zupełnie inny niż to, do czego jesteś obecnie przyzwyczajony.

Josh3736JS i jego różne pakiety (Connect, Express) działają, odkryłem, że można bardzo szybko rozwijać nowe strony.

Szorstkie krawędzie, które obecnie istnieją w Node.js, połączone przy szybkim tempie jego rozwoju i wszystkich modułów zaangażowanych może skomplikować rzeczy, i uczynić rzeczy mniej proste, szybkie i proste, niż chcesz.

Mając to na uwadze, oto dobra wiadomość:

Node Package Manager, NPM posiada wiele dobrych narzędzi i frameworków do rozbudowy Node.funkcjonalność js bare bones, dzięki czemu nadaje się do tworzenia serwera www.

Szczególnie będzie Express Framework , który zawiera prawie wszystko, czego potrzebujesz do uruchomienia serwera www (w tym pliki cookie, sesje i routing ścieżek). Dodatkowo Express obsługuje częściowe, które dbają o nagłówek i stopkę.

Express jest zbudowany na bazie Connect Sencha. Pliki cookie i sesje są faktycznie zasilane przez Connect. Express upraszcza routing i obsługuje widoki/częściowe. Więc jeśli nie potrzebujesz wszystkich dzwonków i gwizdków, które pochodzą z Express, możesz po prostu wybrać Connect zamiast tego.

Jeśli chcesz aby użyć szablonów dla tych części, Silnik szablonów Jade może przyspieszyć działanie. Chociaż Josh3736 wskazuje, że Jade jest powolne i spacje-znaczące. Bardziej kompletny przegląd można znaleźć tutaj, który zawiera jego ulubiony, doT. (Osobiście używam Node.js dla socket.io tylko aplikacje oparte, więc jest lepszym źródłem niż ja, jeśli chodzi o template).

Ty możesz połączyć się z MySQL z węzła.js using the db-mysql moduł, ale jeśli tego nie potrzebujesz, ponieważ uzyskujesz dostęp do danych podłączonych do już istniejącego systemu, radzę użyć więcej... "nowoczesne" podejście, które polega na wykorzystaniu bazy danych NoSQL jako większości węzłów.wydaje się, że projekty js działają. MongoDB via Mangusta jest popularnym sposobem.

Lub jeśli to tylko przechowywanie obiektów, które Cię interesują, po prostu wybierz Redis (które prawdopodobnie będziesz potrzebować w pewnym momencie w każdym razie).

Gdy twoja strona zostanie ukończona, będziesz musiał ją wdrożyć i upewnić się, że działa. Można to zrobić na wiele sposobów, np. korzystając z wbudowanej obsługi klastra lub korzystając z bardziej przyjaznych funkcjiforever moduł npm. Zobacz to moje pytanie, aby uzyskać więcej informacji.

Wniosek :

Próbuję do tego dojść:

Pytanie, Jaka jest najlepsza praktyka budowania Strony Internetowej w Node.js jest, jest o tym samym, co pytanie, co najlepszym sposobem na zbudowanie strony internetowej w PHP jest: 100 programistów da ci 100 różnych odpowiedzi.

NPM jest obdarzony wieloma doskonałymi frameworkami, które znacznie upraszczają wiele związanych z tym zadań, ale wszystko opiera się na preferencjach, które z nich są naprawdę właściwą drogą.

Jak już mówiłem, Node.js jest wciąż dość młodą techniką, więc żaden z frameworków lub dodatkowych narzędzi nie pojawił się jeszcze jako "standard defacto"; dla większości rzeczy, które próbujesz zrobić, prawdopodobnie są różne alternatyw, i oczekuj, że Twój kod zepsuje się podczas korzystania z większości z nich podczas aktualizacji, ponieważ rozwój węzła.sam js i większość modułów jest w szybkim tempie. Musisz nadążyć.

:

Jak już powiedziałem, moje główne użycie produkcyjne dla węzła.js ma być w stanie używać socket.io, więc nie mam żadnych dobrych przykładów produkcji (a ponieważ mam zamiar wyjechać na zasłużone wakacje, nie mam czasu, aby je złożyć). Są pewne dobre przykłady:

Ponownie, droga do zrobienia (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 istnieje wiele zasobów dostępnych dla wszystkich dostępne opcje. Większość modułów korzysta z dobrze udokumentowanych repozytoriów GitHub i zawiera przykłady w połączeniu z najpopularniejszymi modułami (zobacz Katalog /examples/, który wydaje się być obecny w większości repozytoriów).

Powodzenia! (I podziękowania dla Josh3736 za naprawienie moich błędów.)
 181
Author: Rem.co,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:02:51