O documento fornece uma introdução ao Node.js, descrevendo o que é Node.js, como instalá-lo e suas principais APIs e módulos. É destacado que Node.js permite o desenvolvimento de servidores usando JavaScript, é baseado em eventos e não bloqueante, e possui uma grande comunidade e número de módulos disponíveis.
3. O que é?
• node.js foi criado pelo Ryan Dahl em
Fevereiro de 2009
•
Wednesday, May 25, 2011
4. O que é?
• node.js foi criado pelo Ryan Dahl em
Fevereiro de 2009
• http://nodejs.org
•
Wednesday, May 25, 2011
5. O que é?
• node.js foi criado pelo Ryan Dahl em
Fevereiro de 2009
• http://nodejs.org
• Joyent
Wednesday, May 25, 2011
6. O que é?
• Server Side JavaScript runtime
•
Wednesday, May 25, 2011
7. O que é?
• Server Side JavaScript runtime
• Construído sobre o engine V8 JavaScript
do Google Chrome
Wednesday, May 25, 2011
8. O que é?
• Server Side JavaScript runtime
• Construído sobre o engine V8 JavaScript
do Google Chrome
• APIs I/O não bloqueantes
Wednesday, May 25, 2011
9. O que é?
• Server Side JavaScript runtime
• Construído sobre o engine V8 JavaScript
do Google Chrome
• APIs I/O não bloqueantes
• API e módulos simples de extender
Wednesday, May 25, 2011
10. O que é?
• Single Thread
•
Wednesday, May 25, 2011
11. O que é?
• Single Thread
• Baseada em eventos
•
Wednesday, May 25, 2011
12. O que é?
• Single Thread
• Baseada em eventos
• JavaScript é “A” linguagem :-)
•
Wednesday, May 25, 2011
13. O que é?
• Single Thread
• Baseada em eventos
• JavaScript é “A” linguagem :-)
• Ok... C++ também é
•
Wednesday, May 25, 2011
14. O que é?
• Single Thread
• Baseada em eventos
• JavaScript é “A” linguagem :-)
• Ok... C++ também é
• standard library baseada em CommonJS
Wednesday, May 25, 2011
16. Comunidade
• muito popular - 3º repositório mais
seguido no github
•
Wednesday, May 25, 2011
17. Comunidade
• muito popular - 3º repositório mais
seguido no github
• imensos módulos
•
Wednesday, May 25, 2011
18. Comunidade
• muito popular - 3º repositório mais
seguido no github
• imensos módulos
• obviamente precisa de maturidade
•
Wednesday, May 25, 2011
19. Comunidade
• muito popular - 3º repositório mais
seguido no github
• imensos módulos
• obviamente precisa de maturidade
• a API ainda não está fechada
Wednesday, May 25, 2011
21. Instalação
• Linux, Macintosh e Solaris
•
Wednesday, May 25, 2011
22. Instalação
• Linux, Macintosh e Solaris
• a instalação é simples
•
Wednesday, May 25, 2011
23. Instalação
• Linux, Macintosh e Solaris
• a instalação é simples
• - pré-requisitos
•
Wednesday, May 25, 2011
24. Instalação
• Linux, Macintosh e Solaris
• a instalação é simples
• - pré-requisitos
• python v2.4+
•
Wednesday, May 25, 2011
25. Instalação
• Linux, Macintosh e Solaris
• a instalação é simples
• - pré-requisitos
• python v2.4+
• libssl-dev (se quiserem usar TLS/SSL)
•
Wednesday, May 25, 2011
26. Instalação
• Linux, Macintosh e Solaris
• a instalação é simples
• - pré-requisitos
• python v2.4+
• libssl-dev (se quiserem usar TLS/SSL)
• Vários métodos alternativos na wiki
Wednesday, May 25, 2011
27. Instalação
• echo 'export PATH=$HOME/node/bin:$PATH' >> ~/.bashrc
• . ~/.bashrc
• mkdir ~/node
• mkdir ~/latest-install
• cd ~/latest-install
• curl http://nodejs.org/dist/node-latest.tar.gz | tar xz --strip-components=1
• ./configure --prefix=~/node
• make install
•
Wednesday, May 25, 2011
29. Instalação
• Windows...
•
Wednesday, May 25, 2011
30. Instalação
• Windows...
• compilar o node via Cygwin ou MinGW
•
Wednesday, May 25, 2011
31. Instalação
• Windows...
• compilar o node via Cygwin ou MinGW
• binários pré-compilados (não permitem
a extensão do node com módulos em
C++)
Wednesday, May 25, 2011
70. CommonJS
• Spec do JavaScript define APIs que são
boas para aplicações browser based
•
Wednesday, May 25, 2011
71. CommonJS
• Spec do JavaScript define APIs que são
boas para aplicações browser based
• Definir uma API que defina um standard
para criações de aplicações:
•
Wednesday, May 25, 2011
72. CommonJS
• Spec do JavaScript define APIs que são
boas para aplicações browser based
• Definir uma API que defina um standard
para criações de aplicações:
• Server Side
•
Wednesday, May 25, 2011
73. CommonJS
• Spec do JavaScript define APIs que são
boas para aplicações browser based
• Definir uma API que defina um standard
para criações de aplicações:
• Server Side
• Command Line
Wednesday, May 25, 2011
74. CommonJS
• Spec do JavaScript define APIs que são
boas para aplicações browser based
• Definir uma API que defina um standard
para criações de aplicações:
• Server Side
• Command Line
• Desktop
Wednesday, May 25, 2011
75. CommonJS
• node.js é CommonJS compliant
•
Wednesday, May 25, 2011
81. Módulos
• connect
• Framework extensível de um Servidor
HTTP
• Fornece um middleware entre o node e a
tua app/framework
•
Wednesday, May 25, 2011
82. Módulos
• connect quick tour
• basicAuth
• cookieParser
• vhost
• favicon
Wednesday, May 25, 2011
83. Módulos
• connect quick tour
• connect({ options here }
• connect.logger()
• , connect.static(__dirname)
• ).listen(443);
Wednesday, May 25, 2011
84. Módulos
• connect quick tour
• connect(
• connect.basicAuth(function(user, pass){
• return 'tj' == user & 'wahoo' ==
pass;
• })
• );
Wednesday, May 25, 2011
85. Módulos
• express
• web development framework
• muito rápido
• pequeno codebase
• desenvolvido sobre node e connect
Wednesday, May 25, 2011
86. Módulos
• express quick tour
• Helpers para views dinâmicas
• Focado em alta performance
• Suporte para renders parciais
• Executável para criar apps rapidamente
• Suporte para notificações instantâneas
via Sessões
Wednesday, May 25, 2011
87. Módulos
• express quick tour
• npm install express
• var app = express.createServer();
• app.get('/', function(req, res){
• res.send('Hello World');
• });
• app.listen(3000);
Wednesday, May 25, 2011
88. Módulos
• html5 - a parser
• óptimo para fazer parse de páginas html
• faz parse de streaming data
• html5 parser completo
Wednesday, May 25, 2011
89. Módulos
• html5 - a parser - quick tour
• var parser = new HTML5.Parser({document: window.document});
• var inputfile = fs.readFileSync('doc/jquery-example.html');
• parser.parse(inputfile);
• jsdom.jQueryify(window, __dirname + '/deps/jquery/dist/jquery.js', function
(window, jquery) {
• Script.runInNewContext('jQuery("p").append("<b>Hi!</b>")',
window);
• sys.puts(window.document.innerHTML);
• });
Wednesday, May 25, 2011
90. Módulos
• mysql
• Cliente MySQL totalmente em JavaScript
• TDD
• Simplicidade
• Portabilidade
• compativel com toda a API de MySQL
Wednesday, May 25, 2011
91. Módulos
• mysql quick tour
• var Client = require('mysql').Client,
• client = new Client(),
• TEST_DATABASE = 'nodejs_mysql_test',
• TEST_TABLE = 'test';
• client.user = 'root';
• client.password = 'root';
• client.connect();
•
Wednesday, May 25, 2011
92. Módulos
• mysql quick tour
• client.query(
• 'SELECT * FROM tabela',
• function selectCb(err, results, fields) {
• if (err) {
• throw err;
• }
• console.log(results);
• console.log(fields);
• client.end();
• }
• );
Wednesday, May 25, 2011
93. Módulos
• socket.io
• Sockets for the rest of us
• WebSocket
• WebSocket over Flash (+ XML security
policy support)
• XHR Polling
• XHR Multipart Streaming
Wednesday, May 25, 2011
94. Módulos
• socket.io quick tour
• no servidor
• var socket = io.listen(server);
• socket.on('connection', function(client){
• client.on('message', function(){ … })
• client.on('disconnect', function(){ … })
• });
•
Wednesday, May 25, 2011
95. Módulos
• socket.io quick tour
• no cliente
• <script src="/socket.io/socket.io.js"></script>
• <script>
• var socket = new io.Socket();
• socket.connect();
• socket.on('connect', function(){ … })
• socket.on('message', function(){ … })
• socket.on('disconnect', function(){ … })
• </script>
•
Wednesday, May 25, 2011
96. Módulos
• https://github.com/joyent/node/wiki/
modules
• http://search.npmjs.org/
• http://npm.mape.me/
• lots of them!!!
Wednesday, May 25, 2011
98. WebSockets
• ainda é um draft
•
Wednesday, May 25, 2011
99. WebSockets
• ainda é um draft
• mas já podemos usar
Wednesday, May 25, 2011
100. WebSockets
• ainda é um draft
• mas já podemos usar
• Chrome, Safari 4
•
Wednesday, May 25, 2011
101. WebSockets
• ainda é um draft
• mas já podemos usar
• Chrome, Safari 4
• Opera e FF desactivaram por preocupações
de segurança
Wednesday, May 25, 2011
102. WebSockets
• A evolução de Ajax e Comet
•
Wednesday, May 25, 2011
103. WebSockets
• A evolução de Ajax e Comet
• um socket bi-direccional
•
Wednesday, May 25, 2011
104. WebSockets
• A evolução de Ajax e Comet
• um socket bi-direccional
• “only Web Sockets provides a native means
to accurately and efficiently stream events
to and from the browser with negligible
latency”
•
Wednesday, May 25, 2011
105. Cliente de Chat
• html5demos.com by @remy
•
Wednesday, May 25, 2011
106. Cliente de Chat
• html5demos.com by @remy
• vários exemplos de utilização de APIs de
html5
Wednesday, May 25, 2011
110. Créditos
• A apresentação será disponibilizada no
slideshare e se possível na página do
evento
• Terá toda a informação relativa a créditos
de fotos, código fonte e alguma info
adicional
•
Wednesday, May 25, 2011