SlideShare ist ein Scribd-Unternehmen logo
1 von 27
Visão Geral
Kaio Valente
  Cobra Tecnologia
Vantagens
•   Acesso direto a qualquer componente do DOM

•   Simplicidade, poucas linhas de código

•   Cross-browser

•   Efeitos e animações

•   Ajax
JavaScript x jQuery
Vantagens
•   Mais fácil escrever jQuery do que em JavaScript puro.

Esconder todas as divs com JavaScript puro:

divs = document.getElementByTagName('div');

for (i=0; i<divs.length; i++) {
    div[i].style.display = 'none';
}

Esconder todas as divs com jQuery:

$("div").hide();
Filosofia jQuery



#1. Procurar algum elemento HTML

#2. Fazer algo com ele
Filosofia jQuery



 Procurar   Ação
$(“div”)  .hide();
Seletores

 $("#foo")      $("li:first")
     $(".foo")
              $("tr:odd")
$(“table")
            $("a[target=_blank]")

$("form[id^=step]")
Seletores
                   $('input:disabled');
$('div:empty');
      $('input:checked');
            $('option:selected');
$('option:even');
             $(„tr[class=word]');
   $('li:last');
Criando Funções
<script type="text/javascript"
      src=“/projeto/js/jquery-1.7.2.min.js">
</script>

$(document).ready(function(){
    console.log(“Pronto!");
});

$(function(){
    console.log(“Pronto!");
});

jQuery(function(){
 console.log(“Pronto!");
});
Métodos jQuery
• Elementos de Movimentação:
  append(), before(), after()

• Atributos:
  css(), attr(), html(), val(), addClass()

• Eventos:
  bind(), trigger(), unbind(), live(), click()

• Efeitos:
  show(), fafeOut(), toggle(), animate()

• Elementos de busca:
  find(), is(), prevAll(), next(), hasClass()

• Ajax
  get(), getJSON(), post(), ajax(), load()
Métodos jQuery


          Chain Methods
$("div").addClass(".foo").fadeIn();
Movimentação
 Inserir um conteúdo HTML na div foo
$(“#foo”).append("<p>teste</p>");


<html>
    <body>
        <div>jQuery</div>
        <div id="foo">exemplo<p>teste</p></div>
             id="foo">exemplo</div>
    </body>
</html>
Atributos
  Get                     Set
.attr('id')        .attr(„id‟,‟foo‟)

.html()            .html(„<p>Cobra</p>‟)

.val()             .val(„valor‟)

.css(„top‟)        .css(„top‟,‟80px‟)

.width()           .width(60)
Atributos
Setando várias propriedades css
$('#foo').css({
    "background": "yellow",
    "height": "400px"
});

Alterando links
$('a').attr('href','http://google.com.br');


Marcando todos os checkbox
$(':checkbox').attr('checked', 'checked');
Eventos
Quando um botão for clicado, faça alguma coisa...
 $('button').click(function(){
     alert('onclick');
 });

Criando um evento customizado...
 $('button').bind('expandir',function(){
     alert('expandir');
 });
$('button:first').trigger('expandir');

Desfazendo evento customizado...
$('button').unbind('expandir');
Eventos

Criando elementos em tempo de execução...
$('button').live('click',function(){
    alert(„click');
});
Efeitos
Tipos de Efeito

        #1. Hide e Show

         #2. FadeIn e FadeOut

        #3. SlideUp e SlideDown
Efeitos
SlideUp/SlideDown a cada click na div foo
 $('#foo').click(function(){
     $(this).slideToggle();
 });


Aumenta largura da div foo para 300px em 5 segundos
 $('#foo').animate({'width':'300px'},500);


Diminui 30% da opacidade em 2 segundos ao perder o foco
$('#foo').fadeTo(200,0.3);
Busca
Pegar todas as colunas da tabela anteriores a #minhaColuna

 $('#minhaColuna').prevAll() .andSelf();

  <html>
      <body>
          <table><tr>
              <td></td>
              <td></td>
              <td id="minhaColuna"></td>
          </tr></table>
      </body>
  </html>
Busca
Pegar o parágrafo da div...

 $(„table').next().find(„p‟);

  <html>
      <body>
          <table></table>
             <div>
             <div>
                <p>foo</p>
                <p>foo</p>
                <span>teste</span>
                <span>teste</span>
             </div>
             </div>

      </body>
  </html>
Ajax
Requisição ajax usando get
 $('button#Buscar').get('/projetos/buscar',
                       {'id':'1','nome':'catuai'});

Requisição ajax usando post e exibindo a resposta
 $('button#Salvar').post('/projetos/salvar',{'id':'1',},
     function(response){
        alert(response);
     });

Carregar resposta em uma div
function carregar(elemento,url) {
    $('#'+elemento).load(url);
}
Plugins
Plugins Famosos
 •   jQuery UI
 •   jQuery Form
 •   jQuery Validate
 •   jQuery Tipsy
 •   jQuery jCarousel
 •   jQuery maskFinancial
 •   http://plugins.jquery.com
Concluindo...




http://www.google.com/trends/?q=dojo+javascript,+jquery+javascript,+yui+javascript,+prototype+
              javascript,+mootools+javascript&ctab=0&geo=all&date=all&sort=1
Concluindo...

•   Produtividade

•   Comunidade forte

•   Muito material, livros, internet

•   Licença aberta e free
Concluindo...
•   Forum oficial:
    http://forum.jquery.com/

•   Comunidade brasileira:
    jquery-br@googlegroups.com

•   jQuery API:
    http://api.jquery.com/
Referência



jQuery Essentials by Marc Grabanski

  http://www.slideshare.net/1Marc/jquery-essentials
Visão Geral
Kaio Valente
  Cobra Tecnologia

Weitere ähnliche Inhalte

Was ist angesagt?

JQuery para Iniciantes
JQuery para IniciantesJQuery para Iniciantes
JQuery para IniciantesRenato Asterio
 
JavaScript ninja com jQuery
JavaScript ninja com jQueryJavaScript ninja com jQuery
JavaScript ninja com jQueryReinaldo Junior
 
J query javascript para seres humanos
J query   javascript para seres humanosJ query   javascript para seres humanos
J query javascript para seres humanosnobios
 
PHP Community Summit - Do REST ao GraphQL com PHP
PHP Community Summit - Do REST ao GraphQL com PHPPHP Community Summit - Do REST ao GraphQL com PHP
PHP Community Summit - Do REST ao GraphQL com PHPBruno Neves Menezes
 
Backbone.js - A espinha dorsal de aplicações web
Backbone.js - A espinha dorsal de aplicações webBackbone.js - A espinha dorsal de aplicações web
Backbone.js - A espinha dorsal de aplicações webHenrique Gogó
 
modernizando a arquitertura de sua aplicação
modernizando a arquitertura  de sua aplicaçãomodernizando a arquitertura  de sua aplicação
modernizando a arquitertura de sua aplicaçãoAntonio Spinelli
 
Introdução a python módulo b
Introdução a python   módulo bIntrodução a python   módulo b
Introdução a python módulo bJader Gabriel
 
JavaScript - Introdução com Orientação a Objetos
JavaScript - Introdução com Orientação a ObjetosJavaScript - Introdução com Orientação a Objetos
JavaScript - Introdução com Orientação a ObjetosEduardo Mendes
 
Cafe com Tom - ExtJS 4
Cafe com Tom - ExtJS 4Cafe com Tom - ExtJS 4
Cafe com Tom - ExtJS 4Loiane Groner
 
Meu projeto final - Neobase 2.0
Meu projeto final - Neobase 2.0Meu projeto final - Neobase 2.0
Meu projeto final - Neobase 2.0Saulo Vallory
 

Was ist angesagt? (20)

Jquery 2
Jquery 2Jquery 2
Jquery 2
 
JQuery para Iniciantes
JQuery para IniciantesJQuery para Iniciantes
JQuery para Iniciantes
 
Java script aula 07 - j-query
Java script   aula 07 - j-queryJava script   aula 07 - j-query
Java script aula 07 - j-query
 
JavaScript ninja com jQuery
JavaScript ninja com jQueryJavaScript ninja com jQuery
JavaScript ninja com jQuery
 
Introdução ao JQuery e AJAX
Introdução ao JQuery e AJAXIntrodução ao JQuery e AJAX
Introdução ao JQuery e AJAX
 
jQuery Simplificando o JavaScript
jQuery Simplificando o JavaScriptjQuery Simplificando o JavaScript
jQuery Simplificando o JavaScript
 
CSS & JQquery
CSS & JQqueryCSS & JQquery
CSS & JQquery
 
J query javascript para seres humanos
J query   javascript para seres humanosJ query   javascript para seres humanos
J query javascript para seres humanos
 
Do REST ao GraphQL com PHP
Do REST ao GraphQL com PHPDo REST ao GraphQL com PHP
Do REST ao GraphQL com PHP
 
Introdução à JQuery
Introdução à JQueryIntrodução à JQuery
Introdução à JQuery
 
PHP Community Summit - Do REST ao GraphQL com PHP
PHP Community Summit - Do REST ao GraphQL com PHPPHP Community Summit - Do REST ao GraphQL com PHP
PHP Community Summit - Do REST ao GraphQL com PHP
 
Backbone.js - A espinha dorsal de aplicações web
Backbone.js - A espinha dorsal de aplicações webBackbone.js - A espinha dorsal de aplicações web
Backbone.js - A espinha dorsal de aplicações web
 
Introdução ao MongoDB
Introdução ao MongoDBIntrodução ao MongoDB
Introdução ao MongoDB
 
Bread board
Bread boardBread board
Bread board
 
modernizando a arquitertura de sua aplicação
modernizando a arquitertura  de sua aplicaçãomodernizando a arquitertura  de sua aplicação
modernizando a arquitertura de sua aplicação
 
Introdução a python módulo b
Introdução a python   módulo bIntrodução a python   módulo b
Introdução a python módulo b
 
JavaScript - Introdução com Orientação a Objetos
JavaScript - Introdução com Orientação a ObjetosJavaScript - Introdução com Orientação a Objetos
JavaScript - Introdução com Orientação a Objetos
 
Cafe com Tom - ExtJS 4
Cafe com Tom - ExtJS 4Cafe com Tom - ExtJS 4
Cafe com Tom - ExtJS 4
 
Java script aula 09 - JQuery
Java script   aula 09 - JQueryJava script   aula 09 - JQuery
Java script aula 09 - JQuery
 
Meu projeto final - Neobase 2.0
Meu projeto final - Neobase 2.0Meu projeto final - Neobase 2.0
Meu projeto final - Neobase 2.0
 

Ähnlich wie jQuery - Visão Geral

Palestra - Iniciando no Jquery
Palestra - Iniciando no JqueryPalestra - Iniciando no Jquery
Palestra - Iniciando no Jquerygrupoweblovers
 
jQuery na Prática - Cauê Fajoli
jQuery na Prática - Cauê FajolijQuery na Prática - Cauê Fajoli
jQuery na Prática - Cauê FajoliCaue Fajoli
 
Simplificando o Javascrip
Simplificando o JavascripSimplificando o Javascrip
Simplificando o JavascripMiquéias Amaro
 
LPII_Aula_7-JQuery.pdf
LPII_Aula_7-JQuery.pdfLPII_Aula_7-JQuery.pdf
LPII_Aula_7-JQuery.pdfGabrielaMota46
 
Introdução ao jquery
Introdução ao jqueryIntrodução ao jquery
Introdução ao jqueryYuri Costa
 
Tutorial sobre Jquery
Tutorial sobre JqueryTutorial sobre Jquery
Tutorial sobre JqueryIvo Calado
 
Jquery - Dicas e Truques
Jquery - Dicas e TruquesJquery - Dicas e Truques
Jquery - Dicas e TruquesLambda 3
 
A vida além do jQuery
A vida além do jQueryA vida além do jQuery
A vida além do jQueryPaulo Pires
 
JavaScript e JQuery para Webdesigners
JavaScript e JQuery para WebdesignersJavaScript e JQuery para Webdesigners
JavaScript e JQuery para WebdesignersHarlley Oliveira
 
Evento Front End SP - Organizando o Javascript
 Evento Front End SP - Organizando o Javascript Evento Front End SP - Organizando o Javascript
Evento Front End SP - Organizando o JavascriptMichel Ribeiro
 
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor AndroidDesvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Androidjoaobmonteiro
 
Interfaces Ricas para WEB com jQuery e jQueryUI (User Interface)
Interfaces Ricas para WEB com jQuery e jQueryUI (User Interface)Interfaces Ricas para WEB com jQuery e jQueryUI (User Interface)
Interfaces Ricas para WEB com jQuery e jQueryUI (User Interface)Evandro Klimpel Balmant
 

Ähnlich wie jQuery - Visão Geral (20)

Palestra - Iniciando no Jquery
Palestra - Iniciando no JqueryPalestra - Iniciando no Jquery
Palestra - Iniciando no Jquery
 
Aprenda jQuery 1.3
Aprenda jQuery 1.3Aprenda jQuery 1.3
Aprenda jQuery 1.3
 
jQuery na Prática - Cauê Fajoli
jQuery na Prática - Cauê FajolijQuery na Prática - Cauê Fajoli
jQuery na Prática - Cauê Fajoli
 
jQuery na Prática!
jQuery na Prática!jQuery na Prática!
jQuery na Prática!
 
Simplificando o Javascrip
Simplificando o JavascripSimplificando o Javascrip
Simplificando o Javascrip
 
LPII_Aula_7-JQuery.pdf
LPII_Aula_7-JQuery.pdfLPII_Aula_7-JQuery.pdf
LPII_Aula_7-JQuery.pdf
 
Introdução ao jquery
Introdução ao jqueryIntrodução ao jquery
Introdução ao jquery
 
Tutorial sobre Jquery
Tutorial sobre JqueryTutorial sobre Jquery
Tutorial sobre Jquery
 
Jquery - Dicas e Truques
Jquery - Dicas e TruquesJquery - Dicas e Truques
Jquery - Dicas e Truques
 
Dinamizando Sites Estáticos
Dinamizando Sites EstáticosDinamizando Sites Estáticos
Dinamizando Sites Estáticos
 
Html dom, eventos, jquery
Html dom, eventos, jqueryHtml dom, eventos, jquery
Html dom, eventos, jquery
 
A vida além do jQuery
A vida além do jQueryA vida além do jQuery
A vida além do jQuery
 
JQuery
JQueryJQuery
JQuery
 
JavaScript e JQuery para Webdesigners
JavaScript e JQuery para WebdesignersJavaScript e JQuery para Webdesigners
JavaScript e JQuery para Webdesigners
 
Evento Front End SP - Organizando o Javascript
 Evento Front End SP - Organizando o Javascript Evento Front End SP - Organizando o Javascript
Evento Front End SP - Organizando o Javascript
 
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor AndroidDesvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
 
Javascript + jQuery
Javascript + jQueryJavascript + jQuery
Javascript + jQuery
 
Jquery a technical overview
Jquery a technical overviewJquery a technical overview
Jquery a technical overview
 
Introdução a jQuery
Introdução a jQueryIntrodução a jQuery
Introdução a jQuery
 
Interfaces Ricas para WEB com jQuery e jQueryUI (User Interface)
Interfaces Ricas para WEB com jQuery e jQueryUI (User Interface)Interfaces Ricas para WEB com jQuery e jQueryUI (User Interface)
Interfaces Ricas para WEB com jQuery e jQueryUI (User Interface)
 

Kürzlich hochgeladen

ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 

Kürzlich hochgeladen (6)

ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 

jQuery - Visão Geral

  • 1. Visão Geral Kaio Valente Cobra Tecnologia
  • 2. Vantagens • Acesso direto a qualquer componente do DOM • Simplicidade, poucas linhas de código • Cross-browser • Efeitos e animações • Ajax
  • 4. Vantagens • Mais fácil escrever jQuery do que em JavaScript puro. Esconder todas as divs com JavaScript puro: divs = document.getElementByTagName('div'); for (i=0; i<divs.length; i++) { div[i].style.display = 'none'; } Esconder todas as divs com jQuery: $("div").hide();
  • 5. Filosofia jQuery #1. Procurar algum elemento HTML #2. Fazer algo com ele
  • 6. Filosofia jQuery Procurar Ação $(“div”) .hide();
  • 7. Seletores $("#foo") $("li:first") $(".foo") $("tr:odd") $(“table") $("a[target=_blank]") $("form[id^=step]")
  • 8. Seletores $('input:disabled'); $('div:empty'); $('input:checked'); $('option:selected'); $('option:even'); $(„tr[class=word]'); $('li:last');
  • 9. Criando Funções <script type="text/javascript" src=“/projeto/js/jquery-1.7.2.min.js"> </script> $(document).ready(function(){ console.log(“Pronto!"); }); $(function(){ console.log(“Pronto!"); }); jQuery(function(){ console.log(“Pronto!"); });
  • 10. Métodos jQuery • Elementos de Movimentação: append(), before(), after() • Atributos: css(), attr(), html(), val(), addClass() • Eventos: bind(), trigger(), unbind(), live(), click() • Efeitos: show(), fafeOut(), toggle(), animate() • Elementos de busca: find(), is(), prevAll(), next(), hasClass() • Ajax get(), getJSON(), post(), ajax(), load()
  • 11. Métodos jQuery Chain Methods $("div").addClass(".foo").fadeIn();
  • 12. Movimentação Inserir um conteúdo HTML na div foo $(“#foo”).append("<p>teste</p>"); <html> <body> <div>jQuery</div> <div id="foo">exemplo<p>teste</p></div> id="foo">exemplo</div> </body> </html>
  • 13. Atributos Get Set .attr('id') .attr(„id‟,‟foo‟) .html() .html(„<p>Cobra</p>‟) .val() .val(„valor‟) .css(„top‟) .css(„top‟,‟80px‟) .width() .width(60)
  • 14. Atributos Setando várias propriedades css $('#foo').css({ "background": "yellow", "height": "400px" }); Alterando links $('a').attr('href','http://google.com.br'); Marcando todos os checkbox $(':checkbox').attr('checked', 'checked');
  • 15. Eventos Quando um botão for clicado, faça alguma coisa... $('button').click(function(){ alert('onclick'); }); Criando um evento customizado... $('button').bind('expandir',function(){ alert('expandir'); }); $('button:first').trigger('expandir'); Desfazendo evento customizado... $('button').unbind('expandir');
  • 16. Eventos Criando elementos em tempo de execução... $('button').live('click',function(){ alert(„click'); });
  • 17. Efeitos Tipos de Efeito #1. Hide e Show #2. FadeIn e FadeOut #3. SlideUp e SlideDown
  • 18. Efeitos SlideUp/SlideDown a cada click na div foo $('#foo').click(function(){ $(this).slideToggle(); }); Aumenta largura da div foo para 300px em 5 segundos $('#foo').animate({'width':'300px'},500); Diminui 30% da opacidade em 2 segundos ao perder o foco $('#foo').fadeTo(200,0.3);
  • 19. Busca Pegar todas as colunas da tabela anteriores a #minhaColuna $('#minhaColuna').prevAll() .andSelf(); <html> <body> <table><tr> <td></td> <td></td> <td id="minhaColuna"></td> </tr></table> </body> </html>
  • 20. Busca Pegar o parágrafo da div... $(„table').next().find(„p‟); <html> <body> <table></table> <div> <div> <p>foo</p> <p>foo</p> <span>teste</span> <span>teste</span> </div> </div> </body> </html>
  • 21. Ajax Requisição ajax usando get $('button#Buscar').get('/projetos/buscar', {'id':'1','nome':'catuai'}); Requisição ajax usando post e exibindo a resposta $('button#Salvar').post('/projetos/salvar',{'id':'1',}, function(response){ alert(response); }); Carregar resposta em uma div function carregar(elemento,url) { $('#'+elemento).load(url); }
  • 22. Plugins Plugins Famosos • jQuery UI • jQuery Form • jQuery Validate • jQuery Tipsy • jQuery jCarousel • jQuery maskFinancial • http://plugins.jquery.com
  • 24. Concluindo... • Produtividade • Comunidade forte • Muito material, livros, internet • Licença aberta e free
  • 25. Concluindo... • Forum oficial: http://forum.jquery.com/ • Comunidade brasileira: jquery-br@googlegroups.com • jQuery API: http://api.jquery.com/
  • 26. Referência jQuery Essentials by Marc Grabanski http://www.slideshare.net/1Marc/jquery-essentials
  • 27. Visão Geral Kaio Valente Cobra Tecnologia