Ergebnis 1 bis 3 von 3
  1. #1
    Avatar von Junkee[]
    Junkee[] ist offline Lounge-Member
    registriert
    08-05-2009
    Ort
    Leonberg
    Beiträge
    3.169

    node.js - Evented I/O for V8 JavaScript

    node.js (http://nodejs.org/) ist ein Projekt von Ryan Dahl (https://github.com/ry) welches die JavaScript-Engine v8 von google benutzt (läuft in Google Chrome) und einen Layer zwischen dem System und der Engine schafft. Bisher läuft node.js nur auf linux und mac (inoffiziell auch auf gejailbreakten iPhones) aber für die nächsten Version ist auch Unterstützung für Windows vorgesehen.
    node.js ist vor allem für Netzwerk basierte Probleme gemacht, wobei der größte Einsatzbereich bei Servern liegt. Anders als bei PHP wird nicht für jede Verbindung ein eigener Thread geöffnet sondern ein einziger Thread benutzt in dem alle Clients verarbeitet werden können. Dadurch kann ein einiger node.js Prozess mehrere tausend Verbindungen gleichzeitig offen halten. Man sollte node.js aber nicht für seine kleine Website einsetzen sonder nur dort, wo man viele Verbindungen erwartet, man Daten streamt oder komplexe Webanwendungen schreibt.

    Installation (linux)
    Man lädt sich die neuste stable Version von http://nodejs.org/#download herunter, entpackt den Inhalt und kompiliert die Source:
    (im entpackten Ordner)
    $./configure
    $make
    $sudo make install

    Man benötigt einen Compiler und libssl (bei Debian/Ubuntu build-essential und libssl-dev).

    $node --version sollte nun die Versionsnummer anzeigen. Man kann den Befehl node ohne Parameter ausführen und landet somit in einer REPL oder als Parameter eine JavaScript Datei angeben, die damit ausgeführt wird.

    Hallo, Welt
    Code:
    console.log("Hallo, Welt!");
    Speichert man den Code in einer Datei und führt diese mit node aus oder gibt es in die REPL ein so erscheint der Text "Hallo, Welt!" und das Programm beendet sich (gilt nicht für die REPL).

    Wenn wir uns den Beispiel Code von nodejs.org ausführen sehen wir zuerst die Meldung 'Server running at http://127.0.0.1:1337/'.
    Code:
    var http = require('http');
    http.createServer(function (req, res) {
      res.writeHead(200, {'Content-Type': 'text/plain'});
      res.end('Hello World\n');
    }).listen(1337, "127.0.0.1");
    console.log('Server running at http://127.0.0.1:1337/');
    Wenn wir einen Browser öffnen und localhost:1337 oder 127.0.0.1:1337 aufrufen sehen wir den Text "Hello, World" angezeigt.
    In der ersten Zeile sehen wir den Aufruf der Funktion require. Mit ihr können Module geladen werden und einer Variable zugewiesen werden (http://www.commonjs.org/). Mit http.createServer erstellen wir einen Server. Als Parameter erwartet die Funktion eine Funktion, einen Callback, der aufgerufen wird, wenn ein http Request an den Server stattfindet. Als ersten Parameter wird der Funktion ein Request-Objekt zugewiesen, als zweiten Parameter ein Response-Objekt. Mit res.writeHead kann der Header geschrieben werden und mit res.end wird der Request beendet. Mit listen bringen wir den Server dazu, auf Clients zu warten.
    Die Dokumentation zu den Core-Modulen ist unter http://nodejs.org/docs/v0.4.8/api/http.html zu finden.

    npm - node package manager
    Die Core Module sind zwar schön und gut aber node.js macht erst richtig Spaß durch Module von der node.js Community. Als Paket-Manager hat sich npm durchgesetzt (http://npmjs.org/). Installieren kann man ihn mit $curl http://npmjs.org/install.sh | sh.
    Auf http://search.npmjs.org/ kann man nach Paketen suchen, leider bisher ohne Bewertungen und Klassifizierung. Auch unter https://github.com/joyent/node/wiki/modules kann man nach Paketen suchen.
    Um nun ein Paket zu installieren benutzt man einfach $npm install paket-name und kann dieses Paket dann mit require in seinen Code einbinden.

    und ansonsten...
    ...sollte man darauf achten, dass man sehr rechenintensive Programmteile auslagert, damit der Thread nicht blockiert wird.
    ...sollte man immer die asynchronen Funktionen benutzen außer beim Initialisieren.
    ...ist require blockierend
    ...gibt es gute Control-Flow Module, die das arbeiten mit vielen Callbacks vereinfachen (z.B. http://search.npmjs.org/#/async)
    ...ist die node.js Community sehr offen und man sollte unbedingt mal vorbei schauen (https://github.com/joyent/node/wiki/Community)

  2. #2
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.757

    AW: node.js - Evented I/O for V8 JavaScript

    ... unter Windows läufts auch - über cygwin.

  3. #3
    Avatar von GottZ
    GottZ ist offline Jungspund
    registriert
    12-06-2012
    Ort
    Fledermausland
    Beiträge
    15

    Exclamation AW: node.js - Evented I/O for V8 JavaScript

    dieser Thread sollte ein update bekommen.

    Node kann man heute nicht mehr in cygwin benutzen.
    man kann es in Visual Studio 2010 kompilieren
    die Stable ist derzeitig in Version 0.6.19 allerdings wird bald 0.8 erscheinen da die beta (0.7.*) ihrer Finalisierung naht. (source)

    Node ist mittlerweile als pkg für Mac, als Sourcecode für alle Betriebssysteme sowie als .msi für Windows verfügbar.
    zudem ist es in 32 und 64bit verfügbar bzw kann in beiden Architekturen sowie ARM kompiliert werden.

    zur NPM installation: man muss es heute nicht mehr installieren. es wird out of the box mitgeliefert.

    das Zepter gehört derzeitig Isaac Schlueter welcher unter anderem NPM entwickelt hat. Ryan Dahl hat sich zurückgezogen um mit anderen sachen weiter zu machen.

    Node ist in Windows Azure verfügbar (info, source)
    Microsoft entwickelt mit Node (source, gibt noch weitere links. bin zu faul zu suchen)
    Microsoft entwickelt derzeitig einen MS-SQL Treiber für Node (info, source)


    Es gibt sicher noch nen haufen anderer Info's die von Interesse sind aber diese Sachen sollte man wissen.


    interessante Node Module:
    Express (sehr sehr geiler http / https Server mit netten Events, Middleware und Routing)
    node-canvas (neuerdings auch mit windows support.)
    Stylus (vereinfacht css. sollte man sich mal angucken.)
    Up (ermöglicht automatische neustarts und load balancing)
    Socket.IO (Websocket, Ajax, Comet, forever iframe, flash socket plugin welches automatisch die beste kommunikationsmethode auswählt und mit einer einfachen API zur verfügung stellt)
    Jade (sehr einfache, schnelle und robuste template engine. auch verfügbar in anderen sprachen wie bspw. PHP)

    und viele viele viele weitere.. zum zeitpunkt dieser posterstellung hatte Node 10870 NPM Module.


    Tutorials:
    howto.no.de, howtonode.org, nodetuts.com, nodebeginner.org
    und viele weitere.
    es hilft wenn man sich einfach mal ausgehend von nodejs.org durch die dortigen links arbeitet.




    greetz GottZ:.

    hoffe das ist für mein erstes posting in ordnung
    Geändert von GottZ (12-06-2012 um 14:44 Uhr) Grund: hab Express vergessen D:, grammmmatik
    eval is evil

Ähnliche Themen

  1. methode zu node hinzufügen
    Von Junkee[] im Forum JavaScript
    Antworten: 11
    Letzter Beitrag: 09-05-2009, 10:08
  2. div erstellen node fehler
    Von saibonaut im Forum JavaScript
    Antworten: 1
    Letzter Beitrag: 28-09-2007, 12:48
  3. Node-Objekt
    Von NicM im Forum JavaScript
    Antworten: 2
    Letzter Beitrag: 11-04-2007, 11:52
  4. node.childNodes
    Von Trallala im Forum JavaScript
    Antworten: 6
    Letzter Beitrag: 29-01-2007, 12:15
  5. node.innerHTML und css
    Von Noerknhar im Forum JavaScript
    Antworten: 2
    Letzter Beitrag: 18-10-2006, 13:34

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •