Un framework
Una libreria
Una maquina virtual
Es un event server que corre sobre V8 y tiene la gran habilidad de ser Non-Bloquing
Es Javascript fuera del browser
var e = require('events').EventEmitter;
var event = new e();
event.on('hola', function (data) {
console.log('alguien dijo hola! y ademas dijo:'+data);
});
event.emit('hola','Soy daniel');
var e = require('events').EventEmitter;
var event = new e();
setInterval(function(){
event.emit('endProcess',{name:'readFile',filecontent:'Nothing'});
},3000)
setInterval(function(){
event.emit('endProcess',{name:'writeFile',filecontent:'Something'});
},7000)
event.on('endProcess', function (data) {
console.log('Proceso Terminado');
console.log(data)
});
Hay 2 maneras de correr process en node.js
var fs = require('fs');
console.log('empezando ejemplo');
var dir = fs.readdirSync('./');
console.log(dir);
console.log('terminando ejemplo');
var fs = require('fs');
console.log('empezando ejemplo');
fs.readdir('./',function(err,data){
console.log(data);
});
console.log('terminando ejemplo');
Node puede soportar muchas conecciones por que solo gasta recursos mientras se procesas los eventos
En otras palabras, mientras que a Apache le asigna recursos cada coneccion, Nodejs solo los utiliza mientras se procesas los evento de cada coneccion
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(8124, "127.0.0.1");
console.log('Server running at http://127.0.0.1:8124/');
Se utiliza para instalar y publicar tus programas de node, ademas de manejar las dependencias.
Es el equivalente de gemas de ruby
Es un framework de estilo Sinatra
Corre sobre connect
Alternativas Meryl
var express = require('express');
var app = express.createServer();
app.get('/', function(req, res){
res.send('Hello World');
});
app.listen(3000);
function someThing() {
this.someProperty = '';
}
someThing.prototype = {
setValue : function(str){
this.someProperty = str;
},
getValue : function(){
return this.someProperty;
}
}
module.exports = new someThing();
A la manera de Express https://github.com/visionmedia/express/tree/master/examples/mvc
module.exports = {
index: function(req, res){
res.render();
}
};
var events = require('./controllers/events'),
home = require('./controllers/home');
app.get('/', home.home);
app.get('/events', events.list);
Jade sobre Express https://github.com/visionmedia/express/blob/master/examples/jade/app.js
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.get('/', function(req, res){
res.render('users', { users: users });
});
!!! 5
html(lang="en")
head
title= pageTitle
script(type='text/javascript')
if (foo) {
bar()
}
body
h1 Jade - node template engine
#container
- if (youAreUsingJade)
p You are amazing
- else
p Get on it!