Metainformationen zur Seite
Dies ist eine alte Version des Dokuments!
Node.JS
node.js lässt sich unter Ubuntu folgendermaßen installieren:
Instalation
Zunächst einmal sollte man vor der Installation via apt-get (mit Root-Rechten natürlich) das System updaten:
apt-get update apt-get install g++ curl libssl-dev
Als nächstes gibt es die Möglichkeit via git die Pakete zu Downloaden:
apt-get install git-core cd /usr/src git clone https://github.com/joyent/node.git cd node git checkout v0.10.32
Alternativ lässt sich das ganze auch via tar downloaden:
wget http://nodejs.org/dist/node-latest.tar.gz tar -xzvf node-latest.tar.gz cd node-v0.10.32
Bei zukünftigen Downloades kann die Versionsnummer natürlich abweichen. <br> Kompilieren lässt sich das ganze folgendermaßen:
./configure make make install
Verwendung der Node- bzw. npm- Konsole
Öffnen lässt sich die Nodekonsole mittels:
/usr/local/bin/node
Für npm analog dazu:
/usr/local/bin/npm
Eine Hello-World-Seite lässt sich folgendermaßen auf den Localhost bringen:
var http = require('http'); // Lädt einen Httpserver var server = http.createServer(function (request, response) { response.writeHead(200, {"Content-Type": "text/plain"}); response.end("Hello World\n"); }); // Konfiguriert den Httpserver und sendet den Text 'Hello World' an den Server server.listen(8000); // Überträgt den Inhalt an den Port 8000 des localhosts (127.0.0.1) console.log("Server running at http://127.0.0.1:8000/"); // Gibt einen Text nach Ausführung in der Konsole aus.
Einbinden von HTML-Dateien
Node.js bringt von sich aus das Template Jade mit, welches Html-Dateien erzeugen soll, jedoch eine etwas andere, weil verkürzte, Syntax hat als „normales“ HTML. Hier ein Beispielcode:
!!! 5 html head title my jade template body h1 Hello #{name} ul#books li a(href="#book-a") Book A li a(href="#book-b") Book B p | foo bar | hello world foo = "hello world" h1= foo //comment select each book, i in books option(value=i) Book #{book} {"name": "Bob"} {"books": ["A", "B", "C"]}
Dabei wird klar, dass sich in Jade beispielsweise Variablen, Schleifen einfügen lassen, ohne eine zusätzliche Sprache benutzen zu müssen, im Gegensatz zu Html und, dass der Code insgesamt etwas kürzer ist (Im Beispiel bedingt durch Arrays und Schleifen und der generellen Syntax, da kein </head> bzw. kein </body> benötigt wird). Wer jedoch bereits eine Html-Datei hat und diese nicht extra umschreiben möchte, oder einfach keine Zeit hat eine neue Syntax zu lernen, der kann seine Html-Datei problemlos in Node.js einbinden:
var fs = require('fs'); // objekttyp bspw. 'http' oder 'net' var s = http.createServer(function(req, res){ //Einbinden der 'test.html'-Datei fs.readFile('test.html',function (err, data){ res.writeHead(200, {'Content-Type': 'text/html','Content-Length':data.length}); res.write(data); res.end(); }); }) s.listen(8000);
Hierbei ist jedoch zu beachten, dass 'test.html' im Rootverzeichnis des Nodeservers liegt oder man einen relativen Pfad angeben muss.
Synchronisationsfunktion
Manchmal möchte man an einer Seite mit anderen Zusammenarbeiten. Das ganze am besten von zu Hause aus und jeder an seinem eigenen Rechner. Dazu gibt es bei node.js eine Synchronisationsfunktion. Dazu ein kleines Beispiel:
// Asynchrones Lesen var filesystem = require("fs"); filesystem.readFile("text.txt", "utf8", function(error, data) { console.log(data); }); // Synchrones Lesen var filesystem = require("fs"); var data = filesystem.readFileSync("text.txt", "utf8"); console.log(data);
Bei der ersten Version wird das ganze Document geladen und schließlich am Ende der Textinhalt in der Konsole ausgegeben. Bei der zweiten Variante hingegen wird der Text synchronisierend geladen, sodass jede Veränderung bei allen Usern sofort sichtbar ist, wie es vergleichsweise beim Etherpad der Fall ist.