SlideShare una empresa de Scribd logo
1 de 18
Descargar para leer sin conexión
Introdução ao NodeJS
$ who
○
○
Agenda
Editor
Sobre JavaScript
○
○
○
Bloco
● Da esquerda para a direita, de cima para baixo
● scripts adicionados à página são avaliados na sequência
● Uso de chaves (‘{‘ e ‘}’) para blocos de função, condição ou
bloco de laço
Variáveis
● Sensíveis a contexto
● for/if/while/switch não alteram escopo
● ES6 promete o ‘let’, o ‘var’ feito direito
Condicionais
● if(teste) {/**/}
● Valores 0 ou “” são avaliados como falso
● null e undefined são avaliados como falso
● false is false
● switch(valor){ case 1: /* */ break;}
Laços
● for(inicialização; teste; incremento) {/* */}
● while(teste) {/* */}
Listas
● var x = [1, 2, ”bola”, 3]
● x[2] // “bola”
● x[0] = 4
● x.push(11)
● x.unshift(22)
● x.pop()
● x.shift()
● x.sort(function(a,b){ /* */ })
● x.map(function(e){ /* */ })
● x.filter(function(e){ /* */ })
Mapas
● var x = {a:1,b:2}
● x.a // 1
● x[“b”] // 2
● x.c = 3
● for(var i in x) { x[i] = x[i] + 1 ; }
Funções
● function foo(x,y) {} // função nomeada
● var bar = function(a,b,c){} // atenção: a função é anônima,
acessível em ‘bar’
● var xib = function sib (k) {} // quase ninguém faz isso
● xib(x,y); // chamada
● foo.call(ctx,x,y) // ctx -> chamada mudando o contexto de
execução
● bar.apply(ctx,[a,b,c]) // ctx -> mudando contexto, parâmetros
em array
● mais sobre a utilidade/problemas sobre o contexto adiante
Classes/Objetos
● ‘Prototipal’
● Funções são construtores
● function Cls (){} ; Cls.prototype.attr1 = 10;
● A linguagem é dinâmica, não force nada diferente disso
● Object.defineProperty
● ES6 tem classes!
Sobre o node.js
● Escrito em 2009 por Ryan Dahl (joyent), baseado no V8, engine
JS do chrome
● npm (node package manager) introduzido em 2011
● Orientado a eventos (e não a requests)
● Muitos problemas nas primeiras versões
● Força crescente de mercado
● Será a regra em 5 anos ou menos (daí este curso agora!)
Interpretator node
● Preferencialmente acessível via linha de comando
● Gerenciador de pacotes npm também
● Voltado para aplicativos web
require()/module.exports
● Arquitetura do CommonJS
● Melhor modularização dos scripts
● module.exports = “feijoada” // script.js
● var mymodule = require(“./script”) // index.js
Express.js
● O padrão eleito pelo mercado (até então)
● Mantida pela Strongloop, recentemente adquirida pela IBM
● Fácil de usar, Extensível, Bom suporte da comunidade
Referências

Más contenido relacionado

La actualidad más candente

T08_T09_LM3: Estruturas de repetição (2013-2014)
T08_T09_LM3: Estruturas de repetição (2013-2014)T08_T09_LM3: Estruturas de repetição (2013-2014)
T08_T09_LM3: Estruturas de repetição (2013-2014)
Carlos Santos
 
Desenvolvimento Frontend- JavaScript - Share
Desenvolvimento Frontend- JavaScript - ShareDesenvolvimento Frontend- JavaScript - Share
Desenvolvimento Frontend- JavaScript - Share
Cesar William Alvarenga
 
(A11) LabMM3 - JavaScript - Subalgoritmos e scope
(A11) LabMM3 - JavaScript - Subalgoritmos e scope(A11) LabMM3 - JavaScript - Subalgoritmos e scope
(A11) LabMM3 - JavaScript - Subalgoritmos e scope
Carlos Santos
 

La actualidad más candente (17)

Introdução ao JavaScript e DOM
Introdução ao JavaScript e DOMIntrodução ao JavaScript e DOM
Introdução ao JavaScript e DOM
 
Typescript 4.1
Typescript 4.1Typescript 4.1
Typescript 4.1
 
T08_T09_LM3: Estruturas de repetição (2013-2014)
T08_T09_LM3: Estruturas de repetição (2013-2014)T08_T09_LM3: Estruturas de repetição (2013-2014)
T08_T09_LM3: Estruturas de repetição (2013-2014)
 
Treinamento ajax modulo javascript
Treinamento ajax   modulo javascriptTreinamento ajax   modulo javascript
Treinamento ajax modulo javascript
 
GraphQL: PUTs, onde foram parar os verbos HTTP?
GraphQL: PUTs, onde foram parar os verbos HTTP?GraphQL: PUTs, onde foram parar os verbos HTTP?
GraphQL: PUTs, onde foram parar os verbos HTTP?
 
AJAX?? Não!! Asynchronous Javascript and... JSON!!
AJAX?? Não!! Asynchronous Javascript and... JSON!!AJAX?? Não!! Asynchronous Javascript and... JSON!!
AJAX?? Não!! Asynchronous Javascript and... JSON!!
 
Aula06 - JavaScript
Aula06 - JavaScriptAula06 - JavaScript
Aula06 - JavaScript
 
Introdução JavaScript e DOM
Introdução JavaScript e DOMIntrodução JavaScript e DOM
Introdução JavaScript e DOM
 
Boas práticas no desenvolvimento de smart contracts, The Dev Conf - TDC SP 2019
Boas práticas no desenvolvimento de smart contracts, The Dev Conf - TDC SP 2019Boas práticas no desenvolvimento de smart contracts, The Dev Conf - TDC SP 2019
Boas práticas no desenvolvimento de smart contracts, The Dev Conf - TDC SP 2019
 
Codelab: TypeScript
Codelab: TypeScriptCodelab: TypeScript
Codelab: TypeScript
 
Desenvolvimento Frontend- JavaScript - Share
Desenvolvimento Frontend- JavaScript - ShareDesenvolvimento Frontend- JavaScript - Share
Desenvolvimento Frontend- JavaScript - Share
 
Breve explicação sobre o que é AngularJs
Breve explicação sobre o que é AngularJsBreve explicação sobre o que é AngularJs
Breve explicação sobre o que é AngularJs
 
programação c 7 aula
programação c 7 aulaprogramação c 7 aula
programação c 7 aula
 
Ruby, Rails e Diversão (Campus Party Brasil 2009)
Ruby, Rails e Diversão (Campus Party Brasil 2009)Ruby, Rails e Diversão (Campus Party Brasil 2009)
Ruby, Rails e Diversão (Campus Party Brasil 2009)
 
(A11) LabMM3 - JavaScript - Subalgoritmos e scope
(A11) LabMM3 - JavaScript - Subalgoritmos e scope(A11) LabMM3 - JavaScript - Subalgoritmos e scope
(A11) LabMM3 - JavaScript - Subalgoritmos e scope
 
Curso de Node.js e MongoDB - 04
Curso de Node.js e MongoDB - 04Curso de Node.js e MongoDB - 04
Curso de Node.js e MongoDB - 04
 
Java script1
Java script1Java script1
Java script1
 

Destacado

2017_NLRB_Handbook_Webinar_2.8.17
2017_NLRB_Handbook_Webinar_2.8.172017_NLRB_Handbook_Webinar_2.8.17
2017_NLRB_Handbook_Webinar_2.8.17
Emory D. Moore Jr.
 

Destacado (16)

DOAG 2016 Oracle Logon Security
DOAG 2016 Oracle Logon SecurityDOAG 2016 Oracle Logon Security
DOAG 2016 Oracle Logon Security
 
Mean Stack - Aplicações Web Modernas com MEAN
Mean Stack - Aplicações Web Modernas com MEANMean Stack - Aplicações Web Modernas com MEAN
Mean Stack - Aplicações Web Modernas com MEAN
 
Plantilladeproyectociencias 170203014029
Plantilladeproyectociencias 170203014029Plantilladeproyectociencias 170203014029
Plantilladeproyectociencias 170203014029
 
2017_NLRB_Handbook_Webinar_2.8.17
2017_NLRB_Handbook_Webinar_2.8.172017_NLRB_Handbook_Webinar_2.8.17
2017_NLRB_Handbook_Webinar_2.8.17
 
Galapagos
GalapagosGalapagos
Galapagos
 
Loopback - Desenvolvimento de APIs REST para aplicativos móveis
Loopback - Desenvolvimento de APIs REST para aplicativos móveisLoopback - Desenvolvimento de APIs REST para aplicativos móveis
Loopback - Desenvolvimento de APIs REST para aplicativos móveis
 
Base Erosion and Profit Shifting
Base Erosion and Profit ShiftingBase Erosion and Profit Shifting
Base Erosion and Profit Shifting
 
Loopback
LoopbackLoopback
Loopback
 
LoopBack: a productivity booster for MEAN
LoopBack: a productivity booster for MEANLoopBack: a productivity booster for MEAN
LoopBack: a productivity booster for MEAN
 
Building a Node.js API backend with LoopBack in 5 Minutes
Building a Node.js API backend with LoopBack in 5 MinutesBuilding a Node.js API backend with LoopBack in 5 Minutes
Building a Node.js API backend with LoopBack in 5 Minutes
 
Comentario de mapas temáticos
Comentario de mapas temáticosComentario de mapas temáticos
Comentario de mapas temáticos
 
StrongLoop Overview
StrongLoop OverviewStrongLoop Overview
StrongLoop Overview
 
130935887 areva-kvfg-r8559 c
130935887 areva-kvfg-r8559 c130935887 areva-kvfg-r8559 c
130935887 areva-kvfg-r8559 c
 
Brookes Dallara Autosport Book 2016
Brookes Dallara Autosport Book 2016Brookes Dallara Autosport Book 2016
Brookes Dallara Autosport Book 2016
 
Apostila 4 evapotranspiração
Apostila 4 evapotranspiraçãoApostila 4 evapotranspiração
Apostila 4 evapotranspiração
 
cmi_final_report
cmi_final_reportcmi_final_report
cmi_final_report
 

Similar a Minicurso Node.js fullstack IFCE - 2015-11-28

Javascript para CSharpers 1 - Comparando
Javascript para CSharpers   1 - ComparandoJavascript para CSharpers   1 - Comparando
Javascript para CSharpers 1 - Comparando
Wesley Lemos
 
Linguagens de Script: Caso de Estudo Lua
Linguagens de Script: Caso de Estudo LuaLinguagens de Script: Caso de Estudo Lua
Linguagens de Script: Caso de Estudo Lua
Sérgio Souza Costa
 
Javascript para CSharpers 3 - Conceitos
Javascript para CSharpers 3 - ConceitosJavascript para CSharpers 3 - Conceitos
Javascript para CSharpers 3 - Conceitos
Wesley Lemos
 
Versionamento de modelo de dados com PostgreSQL
Versionamento de modelo de dados com PostgreSQLVersionamento de modelo de dados com PostgreSQL
Versionamento de modelo de dados com PostgreSQL
Leonardo Cezar
 
Uma implementação de suporte a
Uma implementação de suporte a Uma implementação de suporte a
Uma implementação de suporte a
Rômulo Jales
 
T11_LM3: Subalgoritmose colisões (2013-2014)
T11_LM3: Subalgoritmose colisões (2013-2014)T11_LM3: Subalgoritmose colisões (2013-2014)
T11_LM3: Subalgoritmose colisões (2013-2014)
Carlos Santos
 

Similar a Minicurso Node.js fullstack IFCE - 2015-11-28 (20)

PHP 7
PHP 7PHP 7
PHP 7
 
PHP Experience 2016 - [Palestra] Keynote: PHP-7
PHP Experience 2016 - [Palestra] Keynote: PHP-7PHP Experience 2016 - [Palestra] Keynote: PHP-7
PHP Experience 2016 - [Palestra] Keynote: PHP-7
 
JS FUNDAMENTOS - AULA 01.pdf
JS FUNDAMENTOS - AULA 01.pdfJS FUNDAMENTOS - AULA 01.pdf
JS FUNDAMENTOS - AULA 01.pdf
 
Apresentacao models
Apresentacao modelsApresentacao models
Apresentacao models
 
XML Schema (2002)
XML Schema (2002)XML Schema (2002)
XML Schema (2002)
 
Visao geralti netshoes03
Visao geralti netshoes03Visao geralti netshoes03
Visao geralti netshoes03
 
Visao geralti netshoes03
Visao geralti netshoes03Visao geralti netshoes03
Visao geralti netshoes03
 
Oracle para PostgreSQL: Conseguir migrar e não parar UTI
Oracle para PostgreSQL: Conseguir migrar e não parar UTIOracle para PostgreSQL: Conseguir migrar e não parar UTI
Oracle para PostgreSQL: Conseguir migrar e não parar UTI
 
Be React. Do Tests!
Be React. Do Tests!Be React. Do Tests!
Be React. Do Tests!
 
Javascript para CSharpers 1 - Comparando
Javascript para CSharpers   1 - ComparandoJavascript para CSharpers   1 - Comparando
Javascript para CSharpers 1 - Comparando
 
Curso JavaScript - Aula de Introdução como Programar
Curso JavaScript - Aula de Introdução como ProgramarCurso JavaScript - Aula de Introdução como Programar
Curso JavaScript - Aula de Introdução como Programar
 
Linguagens de Script: Caso de Estudo Lua
Linguagens de Script: Caso de Estudo LuaLinguagens de Script: Caso de Estudo Lua
Linguagens de Script: Caso de Estudo Lua
 
Javascript para CSharpers 3 - Conceitos
Javascript para CSharpers 3 - ConceitosJavascript para CSharpers 3 - Conceitos
Javascript para CSharpers 3 - Conceitos
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVA
 
Versionamento de modelo de dados com PostgreSQL
Versionamento de modelo de dados com PostgreSQLVersionamento de modelo de dados com PostgreSQL
Versionamento de modelo de dados com PostgreSQL
 
Uma implementação de suporte a
Uma implementação de suporte a Uma implementação de suporte a
Uma implementação de suporte a
 
Power mock
Power mockPower mock
Power mock
 
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
 
Java 8 - A Evolução da Linguagem
Java 8 - A Evolução da LinguagemJava 8 - A Evolução da Linguagem
Java 8 - A Evolução da Linguagem
 
T11_LM3: Subalgoritmose colisões (2013-2014)
T11_LM3: Subalgoritmose colisões (2013-2014)T11_LM3: Subalgoritmose colisões (2013-2014)
T11_LM3: Subalgoritmose colisões (2013-2014)
 

Último

Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
azulassessoria9
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
Autonoma
 
Aprender as diferentes formas de classificar as habilidades motoras é de extr...
Aprender as diferentes formas de classificar as habilidades motoras é de extr...Aprender as diferentes formas de classificar as habilidades motoras é de extr...
Aprender as diferentes formas de classificar as habilidades motoras é de extr...
azulassessoria9
 
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdfRepública Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
LidianeLill2
 
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
azulassessoria9
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
PatriciaCaetano18
 

Último (20)

Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
 
Slides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptx
Slides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptxSlides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptx
Slides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptx
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
 
Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024
 
Sopa de letras | Dia da Europa 2024 (nível 2)
Sopa de letras | Dia da Europa 2024 (nível 2)Sopa de letras | Dia da Europa 2024 (nível 2)
Sopa de letras | Dia da Europa 2024 (nível 2)
 
Questões de Língua Portuguesa - gincana da LP
Questões de Língua Portuguesa - gincana da LPQuestões de Língua Portuguesa - gincana da LP
Questões de Língua Portuguesa - gincana da LP
 
Acessibilidade, inclusão e valorização da diversidade
Acessibilidade, inclusão e valorização da diversidadeAcessibilidade, inclusão e valorização da diversidade
Acessibilidade, inclusão e valorização da diversidade
 
tensoes-etnicas-na-europa-template-1.pptx
tensoes-etnicas-na-europa-template-1.pptxtensoes-etnicas-na-europa-template-1.pptx
tensoes-etnicas-na-europa-template-1.pptx
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
 
Aprender as diferentes formas de classificar as habilidades motoras é de extr...
Aprender as diferentes formas de classificar as habilidades motoras é de extr...Aprender as diferentes formas de classificar as habilidades motoras é de extr...
Aprender as diferentes formas de classificar as habilidades motoras é de extr...
 
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdfRepública Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
 
Falando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introdFalando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introd
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmico
 
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
aprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubelaprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubel
 
Apresentação | Símbolos e Valores da União Europeia
Apresentação | Símbolos e Valores da União EuropeiaApresentação | Símbolos e Valores da União Europeia
Apresentação | Símbolos e Valores da União Europeia
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
 
Sopa de letras | Dia da Europa 2024 (nível 1)
Sopa de letras | Dia da Europa 2024 (nível 1)Sopa de letras | Dia da Europa 2024 (nível 1)
Sopa de letras | Dia da Europa 2024 (nível 1)
 
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de LedAula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
 
AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022
 

Minicurso Node.js fullstack IFCE - 2015-11-28

  • 6. Bloco ● Da esquerda para a direita, de cima para baixo ● scripts adicionados à página são avaliados na sequência ● Uso de chaves (‘{‘ e ‘}’) para blocos de função, condição ou bloco de laço
  • 7. Variáveis ● Sensíveis a contexto ● for/if/while/switch não alteram escopo ● ES6 promete o ‘let’, o ‘var’ feito direito
  • 8. Condicionais ● if(teste) {/**/} ● Valores 0 ou “” são avaliados como falso ● null e undefined são avaliados como falso ● false is false ● switch(valor){ case 1: /* */ break;}
  • 9. Laços ● for(inicialização; teste; incremento) {/* */} ● while(teste) {/* */}
  • 10. Listas ● var x = [1, 2, ”bola”, 3] ● x[2] // “bola” ● x[0] = 4 ● x.push(11) ● x.unshift(22) ● x.pop() ● x.shift() ● x.sort(function(a,b){ /* */ }) ● x.map(function(e){ /* */ }) ● x.filter(function(e){ /* */ })
  • 11. Mapas ● var x = {a:1,b:2} ● x.a // 1 ● x[“b”] // 2 ● x.c = 3 ● for(var i in x) { x[i] = x[i] + 1 ; }
  • 12. Funções ● function foo(x,y) {} // função nomeada ● var bar = function(a,b,c){} // atenção: a função é anônima, acessível em ‘bar’ ● var xib = function sib (k) {} // quase ninguém faz isso ● xib(x,y); // chamada ● foo.call(ctx,x,y) // ctx -> chamada mudando o contexto de execução ● bar.apply(ctx,[a,b,c]) // ctx -> mudando contexto, parâmetros em array ● mais sobre a utilidade/problemas sobre o contexto adiante
  • 13. Classes/Objetos ● ‘Prototipal’ ● Funções são construtores ● function Cls (){} ; Cls.prototype.attr1 = 10; ● A linguagem é dinâmica, não force nada diferente disso ● Object.defineProperty ● ES6 tem classes!
  • 14. Sobre o node.js ● Escrito em 2009 por Ryan Dahl (joyent), baseado no V8, engine JS do chrome ● npm (node package manager) introduzido em 2011 ● Orientado a eventos (e não a requests) ● Muitos problemas nas primeiras versões ● Força crescente de mercado ● Será a regra em 5 anos ou menos (daí este curso agora!)
  • 15. Interpretator node ● Preferencialmente acessível via linha de comando ● Gerenciador de pacotes npm também ● Voltado para aplicativos web
  • 16. require()/module.exports ● Arquitetura do CommonJS ● Melhor modularização dos scripts ● module.exports = “feijoada” // script.js ● var mymodule = require(“./script”) // index.js
  • 17. Express.js ● O padrão eleito pelo mercado (até então) ● Mantida pela Strongloop, recentemente adquirida pela IBM ● Fácil de usar, Extensível, Bom suporte da comunidade