Ich habe mich gefragt, wie man mit Node.js eine Website von Grund auf neu entwickeln soll. Ich verstehe, wie ich es möglicherweise tun könnte, aber ich interessiere mich für die beste Designpraxis.
Ich brauche diese theoretische Website, um:
- Mach viel AJAX
- Sei sehr unkompliziert
- Sei relativ klein
- Stellen Sie eine Verbindung zu ... sagen wir einem MySQL-Server her
In PHP war das Erstellen einer ziemlich kleinen Website sehr einfach - ich habe PHP auf Apache und einem MySQL-Server eingerichtet und dann Folgendes ausgeführt:
includes/db/
Das hat connect.php für die Verbindung mit der Datenbank, eine Datei mit allgemeinen db-bezogenen Funktionen und so weiterincludes/layout/
die Sachen wie footer.php, header.php und andere layoutbezogene Sachen hattenincludes/users/
benutzerbezogene Aktionen zu handhaben
Dann können Sie mit PHP einfach Seiten erstellen und diese Dateien zu einer Website zusammenfügen - ich könnte so etwas wie:
<?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');
?>
Ich habe mich gefragt, was in Node.js ähnlich sein könnte - ich suche nach einem Weg, dies zu erreichen, der so einfach , schnell und unkompliziert wie möglich ist.
Wenn die Antwort nicht einfach ist, würde ich eine Buchempfehlung lieben, es macht mir nichts aus zu lesen.
Ich liebe ereignisbasierte Programmierung, ich liebe die Fähigkeiten von JavaScript und ich freue mich sehr über Node.js. Ich möchte von Anfang an lernen, wie man solche Dinge richtig entwickelt.
quelle
Antworten:
Um mit den schlechten Nachrichten zu beginnen: Da Node.js eine ziemlich junge Technik ist, werden Sie feststellen, dass die Prozesse zum Erstellen einer vollwertigen Website und zum Verwalten / Betreiben dieser Website sehr unterschiedlich sein werden, als Sie es derzeit gewohnt sind.
Josh3736 fügt hinzu: Nachdem Sie herausgefunden haben, wie Node.js und seine verschiedenen Pakete (Connect, Express) funktionieren, habe ich festgestellt, dass Sie sehr schnell neue Websites entwickeln können.
Die derzeit in Node.js vorhandenen Ecken und Kanten in Kombination mit dem schnellen Entwicklungstempo und allen beteiligten Modulen können die Dinge jedoch komplizieren und die Dinge weniger einfach, schnell und unkompliziert machen, als Sie möchten.
Nachdem wir das aus dem Weg geräumt haben, sind hier die guten Nachrichten:
Der Node Package Manager, NPM, verfügt über viele gute Tools und Frameworks, um die Bare-Bones-Funktionalität von Node.js zu erweitern und einen Webserver zu erstellen.
Am bemerkenswertesten wäre das Express Framework, das fast alles enthält, was Sie zum Ausführen eines Webservers benötigen (einschließlich Cookies, Sitzungen und Pfadrouting). Zusätzlich unterstützt Express Partials, die sich um Ihre Kopf- und Fußzeilen kümmern.
Express basiert auf Senchas Connect . Cookies und Sitzungen werden tatsächlich von Connect bereitgestellt. Express vereinfacht Ihr Routing und verarbeitet Ansichten / Partials. Wenn Sie also nicht alle Schnickschnack benötigen, die mit Express geliefert werden, können Sie stattdessen einfach Connect wählen.
Wenn Sie Vorlagen für diese Partials verwenden möchten, kann die Jade Template Engine die Dinge für Sie beschleunigen. Obwohl Josh3736 darauf hinweist, dass Jade langsam und weiß ist. Eine vollständigere Übersicht finden Sie hier , einschließlich seines Favoriten doT . (Ich persönlich verwende Node.js nur für
socket.io
basierte Anwendungen, daher ist er eine bessere Quelle als ich, wenn es um Vorlagen geht.)Sie können mit dem Modul db-mysql von Node.js aus eine Verbindung zu MySQL herstellen. Wenn Sie dies jedoch nicht benötigen, weil Sie auf Daten zugreifen, die mit einem bereits vorhandenen System verbunden sind, würde ich die Verwendung eines moderneren Systems empfehlen 'Ansatz, der darin besteht, eine NoSQL- Datenbank zu verwenden, wie es die meisten Node.js-Projekte zu tun scheinen. MongoDB über Mongoose ist der beliebte Weg.
Oder wenn es nur Objekte speichert, an denen Sie interessiert sind, wählen Sie stattdessen Redis (das Sie wahrscheinlich sowieso irgendwann brauchen werden).
Sobald Ihre Website fertig ist, müssen Sie sie bereitstellen und sicherstellen, dass sie weiterhin ausgeführt wird. Es gibt viele Möglichkeiten, dies zu tun, z. B. die integrierte Clusterunterstützung oder das funktionsfreundlichere
forever
npm-Modul. Weitere Informationen finden Sie in meiner SO-Frage.Fazit :
Was ich versuche zu erreichen, ist Folgendes:
Die Frage, was die beste Vorgehensweise zum Erstellen einer Website in Node.js ist, entspricht in etwa der Frage, wie eine Website in PHP am besten erstellt werden kann: 100 Entwickler geben Ihnen 100 verschiedene Antworten.
NPM ist mit einer Vielzahl hervorragender Frameworks gesegnet, die viele Aufgaben erheblich vereinfachen, aber alles hängt von den Vorlieben ab, welche der richtige Weg sind.
Wie ich bereits sagte, ist Node.js noch eine ziemlich junge Technik, daher hat sich noch keines der Frameworks oder zusätzlichen Tools als "Defacto-Standard" herausgestellt. Für die meisten Dinge, die Sie versuchen, gibt es wahrscheinlich verschiedene Alternativen. Erwarten Sie, dass Ihr Code beschädigt wird, wenn Sie die meisten davon während der Aktualisierungen verwenden, da die Entwicklung von Node.js selbst und den meisten Modulen schnell vonstatten geht. Du musst mithalten.
Alles zusammen :
Wie ich bereits sagte, besteht meine Hauptproduktionsanwendung für Node.js darin, in der Lage zu sein, sie zu verwenden
socket.io
, sodass ich keine guten Produktionsbeispiele habe (und da ich kurz davor bin, in einen wohlverdienten Urlaub zu fahren, mache ich das nicht). Ich habe auch nicht die Zeit, eine zusammenzustellen. Es gibt jedoch einige gute Beispiele:Auch hier hängt der Weg (und anschließend das folgende Beispiel) stark von Ihren endgültigen Zielen und den gewählten Techniken ab, aber zum Glück stehen für alle verfügbaren Optionen zahlreiche Ressourcen zur Verfügung. Die meisten Module verwenden gut dokumentierte GitHub-Repositorys und enthalten Beispiele in Kombination mit den beliebtesten Modulen (siehe das
/examples/
Verzeichnis, das in den meisten Repositorys vorhanden zu sein scheint).Viel Glück! (Und danke an Josh3736 für die Behebung meiner Fehler.)
quelle