di Chrome. ! Node.js usa un modello I/O non bloccante e ad eventi, che lo rendono un framework leggero ed efficiente. ! L'ecosistema dei pacchetti di Node.js, npm, è il più grande ecosistema di librerie open source al mondo.
ha:! ! • doppie richieste/secondo (un core per node.js vs. 5 core per il Java)! ! • 35% in meno in media di tempo di risposta (200ms più veloce) L’applicazione node.js rispetto a quella Java era:! ! • costruita velocemente quasi il doppio con meno persone! ! • scritto con il 33% di linee di codice in meno! ! • costituito dal 40% in meno di file
promise è in uno di questi stati:! • pending: in attesa del compimento della funzione asincrona! • fulfilled: funzione asincrona terminata correttamente! • rejected: funzione asincrona terminata con errore! • settled: funzione asincrona terminata Soluzione: Promises (1)
! app.get('/', function (req, res) {! ! console.log("Got a GET request for the homepage");! ! res.send('Hello World');! })! ! app.post('/', function (req, res) {! console.log("Got a POST request for the homepage");! res.send('Hello POST');! })! ! var server = app.listen(8081, function () {! ! var host = server.address().address;! ! var port = server.address().port;! ! console.log('Example app listening at http://%s:%s', host, port);! })
Postgres, Mongo, ecc… • Modellazione dei dati tramite file JSON • Generazione automatica delle API REST • Supporto ai WebSockets (Socket.io) • Policy di sicurezza dichiarative e riusabili tramite funzioni middleware prima delle azioni “controller”
BrowserWindow = electron.BrowserWindow;! electron.crashReporter.start();! ! var mainWindow = null;! app.on('window-all-closed', function() {! // On OS X it is common for applications and their menu bar! // to stay active until the user quits explicitly with Cmd + Q! if (process.platform != 'darwin') {! app.quit();! }! });! app.on('ready', function() {! mainWindow = new BrowserWindow({width: 800, height: 600});! mainWindow.loadURL('file://' + __dirname + '/index.html');! mainWindow.webContents.openDevTools();! mainWindow.on('closed', function() {! mainWindow = null;! });! });