2012-09-25 8 views
6

Ich freue mich darauf, RT-Web-Apps mit NodeJS zu erstellen. Ich komme aus Rails und habe mich in NodeJS und Async JS programmiert.Echtzeit-Apps mit NodeJS schreiben

Führen Sie ein paar Experimente mit Node aus, und als ich nach Werkzeugen und Ressourcen suchte, um mich daran zu gewöhnen, wurde ich von den vielen Dingen dort überwältigt.

Ich fand viele Bibliotheken und Komponenten dort drüben, und ziemlich verwirrt, wie eine groß angelegte gut geschriebene und implementierte RT-Web-App gebaut werden sollte.

So wird die App über NodeJS laufen, mit Express Rahmen.

Ich lese über knockout.js, eine clientseitige Bibliothek, um Echtzeit-Sachen wie automatische UI-Aktualisierung zu bieten, und ich denke, ich könnte es mit jQuery verbinden. Auch habe ich socket.io gefunden. Der Autor sagt: Socket.IO aims to make realtime apps possible in every browser and mobile device, blurring the differences between the different transport mechanisms. It's care-free realtime 100% in JavaScript. So Socket.io ist über Kompatibilität. Was ist mit backbone.js? Wohin geht es?

Mit so viel Zeug wurde ich schockiert. Was soll ich lernen? Welche Module sind es wert, studiert zu werden? Ich konzentriere mich auf NodeJS und Express, aber die meisten Bücher/Screencasts decken alte Versionen von Nodejs ab. Also ich werde von seiner offiziellen API geführt. Jetzt bin ich hier um Ihren Rat zu fragen und irgendwie alle Informationen da draußen zu organisieren. Korrigieren Sie mich, wenn meine Annahmen nicht präzise sind, bitte weisen Sie mich auf die richtige Richtung und fühlen Sie sich frei, irgendein anderes Modul vorzuschlagen, das mir beim Lernen helfen könnte.

Vielen Dank im Voraus

Antwort

7

Es könnte nützlich sein, damit Sie die node.js Server-Seite Bibliotheken trennen (via npm etc ...) von allen der Client-Seite (Browser) Bibliotheken und Technologien wie jquery, Rückgrat , Knockout etc ... wenn du darüber nachdenkst. Selbst socket.io, das eine permanente Socket-Verbindung zwischen dem Browser und dem Server freigibt (um das Polling zu vermeiden) diktiert nicht, welche clientseitigen Technologien Sie verwenden.

Konzentrieren Sie sich darauf, eine solide Web-API (random example) von Ihrem Server auszusetzen, und Ihre Clienttechnologien können ausgetauscht, erweitert usw. werden, ohne dass dies Auswirkungen auf den Server hat. Der einzige Ort, an dem sie sich kreuzen, ist, wenn Sie eine Ansichtstechnologie wie Jade verwenden. Es ist auch eine Option, eine reine Trennung zu haben, wo der Server nur die Client-Dateien serviert und Ihr Client eine dickere Javascript-Anwendung ist (mit Knockout, Jquery usw.), die einen guten Server Web-API aufruft.

Einige Leute versuchen, die Client-und Server-Modelle zu vereinheitlichen - zum Beispiel this article mit Backbone und Knoten. Es hängt davon ab, mit wie vielen Daten Sie arbeiten, um zu sagen, ob das machbar ist, aber es verbindet den Client und den Server und macht den Server statusbehaftet, was Nachteile haben kann (Skalierung, erfordert Affinität usw.). Persönlich bin ich vorsichtig mit so viel Magie (Bindung, Zustand, Synchronisierung usw.). Bei Node geht es darum, die Dinge einfach, leicht und schnell zu halten. Es ist ein schneller Frontend-Netzwerkserver.

Meine 2 Cent (und einige können nicht zustimmen). Beginnen Sie mit Knoten auf dem Server und wählen Sie Ihren Speicher (mongoDb etc ...). Entwerfen Sie eine solid RESTful (hypermedia) API - eine gute Webapi unabhängig vom Client. Dann beginnen Sie mit einem grundlegenden HTML/CSS/JS, vielleicht jQuery Client und fügen Sie Dinge wie Knockout etc ... wie Sie Ihre Client-Fähigkeiten erweitern. Dadurch können Sie Ihre Client-Technologien unabhängig von Ihrem Server ersetzen, wenn sich die neuen Technologien ändern (und das werden sie auch tun).

Das ist das Kennzeichen eines gut durchdachtes System ist - die Fähigkeit componets/Subsystemen zu ersetzen, ohne alles umzuschreiben :)

Hoffnung, dass einige der Nebel aufklären hilft :)

0

Sie wünschen können Schau dir Meteor an, wenn du dich auf Real-Time Javascript Apps konzentrierst: http://meteor.com/