Nodejs

Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια
Μετάβαση σε: πλοήγηση, αναζήτηση
Node.js
Node.js logo
Δημιουργός Ryan Lienhart Dahl
Πρώτη έκδοση 27 Μαΐου 2009[1]
Τελευταία έκδοση 0.10[2]
Κατηγορία Event-driven networking
Λειτουργικό Mac OS X, Linux, Solaris, FreeBSD, OpenBSD, Windows (παλαιότερες εκδόσεις απαιτούν Cygwin), webOS
Γραμμένο σε C++, JavaScript
Ανάπτυξη Ενεργή
Άδεια χρήσης MIT
Ιστοσελίδα nodejs.org

Το Node.js είναι μια πλατφόρμα ανάπτυξης λογισμικού (κυρίως διακομιστών) χτισμένη σε περιβάλλον Javascript. Στόχος του Node είναι να παρέχει ένα εύκολο τρόπο δημιουργίας κλιμακωτών διαδικτυακών εφαρμογών. Σε αντίθεση από τα περισσότερα σύγχρονα περιβάλλοντα ανάπτυξης εφαρμογών δικτύων μία διεργασία node δεν στηρίζεται στην πολυνηματικότητα αλλά σε ένα μοντέλο ασύγχρονης επικοινωνίας εισόδου/εξόδου.[3]

Ιστορία[Επεξεργασία | επεξεργασία κώδικα]

Το Node.js δημιουργήθηκε από τον Ryan Dahl το 2009. Η δημιουργία και η συντήρηση του έργου χορηγήθηκε από την εταιρία Joyent. H ιδέα για την ανάπτυξη του node προήλθε από την ανάγκη του Ryan Dahl να βρεί τον πιο αποδοτικό τρόπο να ενημερώνει τον χρήστη σε πραγματικό χρόνο για την κατάσταση ενός αρχείου που ανέβαζε στο διαδίκτυο. Επίσης επηρεάστηκε από το Mongrel του Zed Shaw. Επιπροσθέτως μετά από αποτυχημένα έργα σε C, Lua, Haskell η κυκλοφορία της μηχανής V8 (V8 JavaScript Engine) της Google τον ώθησε να ασχοληθεί με την Javascript.

Χαρακτηριστικά[Επεξεργασία | επεξεργασία κώδικα]

Το Νode χαρακτηρίζεται από την έμφαση στην ασύγχρονη επικοινωνία μεταξύ των υπολογιστικών πόρων. Αυτό επιτυγχάνεται με την χρήση συμβάντων (events) που προσφέρει η Javascript και ονομάζονται callbacks. Για παράδειγμα όταν ένας περιηγητής ιστού φορτώσει πλήρως ένα αρχείο, ένας χρήστης πατάει κάποιο κουμπί, ολοκληρώνεται ένα αίτημα AJAX, τα συμβάντα αυτά πυροδοτούν ένα συγκεκριμένο callback. Αυτό με την σειρά του επιτρέπει την ροή του κώδικα χωρίς να αφήνει ανενεργό τον επεξεργαστή προκειμένου να εκτελεστεί μια λειτουργία, όπως μια επιτυχής ανάγνωση αρχείου από τον δίσκο.

Παραδείγματα[Επεξεργασία | επεξεργασία κώδικα]

HTTP Server[Επεξεργασία | επεξεργασία κώδικα]

Ένα χαρακτηριστικό παράδειγμα node για ένα απλό HTTP εξυπηρετητή είναι ο παρακάτω κώδικας

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/');

Ο κώδικας αυτός δημιουργεί έναν εξυπηρετητή ο οποίος τρέχει τοπικά στην θύρα "1337". Ο χρήστης μπορεί στην μπάρα του φυλλομετρητή του να γράψει την διεύθυνση url "http://127.0.0.1:1337/" και να του εμφανιστεί μια σελίδα με το "Hello World" σαν κείμενο. Για την εκτέλεση του παραπάνω προγράμματος απαιτείται η αποθήκευση του παραπάνω κώδικα σε ένα αρχείο (έστω my_basic_http_server.js) με την εντολή:

$ node my_basic_http_server.js

στην κονσόλα του συστήματος που χρησιμοποιεί.

Δημιουργία αρχείου[Επεξεργασία | επεξεργασία κώδικα]

var fs = require('fs')
 
fs.writeFile("D:\myfile.txt", "Hello World", function(err, data) {
    if (err) throw err;
    console.log(data);
})

Ο παραπάνω κώδικας χρησιμοποιεί την έτοιμη βιβλιοθήκη του node για την επεξεργασία αρχείων με την εντολή "require([library_name])" και δημιουργεί ή αντικαθιστά στην περίπτωση που υπάρχει στο δίσκο D το αρχείο "myfile.txt" με περιεχόμενο "hello world". Όταν ολοκληρωθεί η λειτουργία αυτή της εγγραφής, πυροδοτείται το callback το οποίο ορίστηκε, και αυτό με την σειρά του είτε στέλνει ένα μήνυμα προβλήματος στην περίπτωση αποτυχίας, είτε στέλνει τα δεδομένα του αρχείου στην κονσόλα του χρήστη.

Πρόσθετα[Επεξεργασία | επεξεργασία κώδικα]

Η κοινότητα έχει δημιουργήσει ένα ολόκληρο οικοσύστημα από βιβλιοθήκες που προορίζονται ή είναι συμβατές με το node. Ανάμεσά τους εργαλεία που ξεχώρισαν όπως το node-mysql, το Mongodb και το Express παίζουν σημαντικό ρόλο υποστηρίζοντας την ασύγχρονη διάδραση με τις παραδοσιακές και NoSQL μεθόδους βάσεων δεδομένων. Αυτό επιτυγχάνεται με την χρήση του node package manager το οποίο επιτρέπει την εγκατάσταση των παραπάνω βιβλιοθηκών. Χρησιμοποιείται συνήθως σε εφαρμογές Chat, Proxy, Http Server καθώς και για παρακολούθηση εφαρμογών και του συστήματος (monitoring). [4]

Παραπομπές[Επεξεργασία | επεξεργασία κώδικα]

  1. https://github.com/joyent/node/tags?after=v0.0.4
  2. https://github.com/joyent/node/wiki
  3. Node.js: Using JavaScript to Build High-Performance Network Programs, Tilkov S. Vinoski S.
  4. Why should someone use Node.js, Tomislav Capan

Εξωτερικοί σύνδεσμοι[Επεξεργασία | επεξεργασία κώδικα]