SlideShare una empresa de Scribd logo
1 de 53
Descargar para leer sin conexión
Javascript en proyectos reales




Nuevos estándares Web
Máster en Ingeniería Web     David Arango Maroto
Universidad de Oviedo                Simplelógica
Javascript en los 90s




http://www.dynamicdrive.com/dynamicindex9/noright.htm
Javascript en la actualidad
                (mayormente)
●   Compatibilidad
●   Portabilidad
●   Código no intrusivo
    –   No hay consenso sobre la definición
    –   Separación entre capas
    –   Evitar incompatibilidad
    –   Graceful degradation
Javascript en la actualidad
●   Demanda de expertos:
    –   607 ofertas buscando en www.tecnoempleo.com
    –   http://jobs.jsninja.com/
●   Requerimientos Javascript en proyectos reales
●   Mucho buzz por la llamada “Web 2.0”
¿Cómo quieres escribir Javascript?


            - Dificultad +
 Drop-in                     From scratch
¿Por qué usar librerías?
●   Simplifican el trabajo con Javascript
    –   Múltiples niveles de DOM
    –   Diferentes implementaciones en navegadores
●   Agilidad
Librerías
●   Prototype
●   Dojo
●   moo.fx      ¡NO FRAMEWORKS!
●   YUI
●   Jquery
●   ...
Librerías – 2007

                                                 jQuery 38%




                                                           YUI 17%
         Prototype 45%




http://ajaxian.com/archives/nitobi-survey-results-on-ajax-development
Librerías – 2008

                                               jQuery 37%




  Prototype 37%
                                                     YUI 26%




http://ajaxian.com/archives/2007-ajax-tools-usage-survey-results
Prototype vs jQuery
●   Prototype:
    –   Extiende los objetos de DOM y de Javascript.
    –   Añade un montón de objetos extra.
    –   Muy sólida.
●   jQuery
    –   Totalmente encapsulada en un sólo objeto.
    –   Permite encadenado de métodos.
    –   Realmente sencilla e intuitiva.
jQuery
●   “Haz más con menos código”
●   2006, John Resig
●   Todo lo que necesitas:
    –   Selección de elementos del DOM
    –   Manejo de eventos                http://ejohn.org/about/

    –   API ajax
    –   Animaciones (básicas)
jQuery (somos fans)
●   Estupenda documentación
●   Comunidad sólida
    –   http://docs.jquery.com/Discussion
    –   http://lists.scriptia.net/listinfo.cgi/jquery-es-scriptia.net
●   Variedad de plugins
●   Integración con RoR
    –   http://ennerchi.com/projects/jrails
●   Libre, cobertura de tests, amplio soporte de
    navegadores...
jQuery ¿por qué?
●   Estilo de programación
●   Manejo de eventos más sencillo
●   Peso       80

               70
                     73


               60
                                         54
               50

               40

               30

               20

               10

               0
                          Prototype           jQuery


     Comprimidas con YUI Compressor http://developer.yahoo.com/yui/compressor/
Lovely lovely jQuery
●   Cuando empezamos con jQuery no había soporte
    RoR
●   Los bindings javascript de RoR tenían problemas de
    accesibilidad
●   jQuery hizo el trabajo, bueno, y nosotros
●   Choan Gálvez fue el culpable:
    –   http://choangalvez.nom.es/
Al grano, la función jQuery
●   La función jQuery encapsula toda la funcionalidad
    de la librería.
●   Lo primero que debes saber es cómo agregar
    comportamiento en la carga del DOM ¡magia!:


      $(document).ready(function() { })
Inciso: incluyendo scripts
●   Hay sólo una forma de hacerlo bien, y no hace falta
    ser Neerlandés para utilizarla:


<script type=”text/javascript”>
    // Cada vez que pones LANGUAGE Dios mata un gatito
</script>



                                                 Buenas
                                                prácticas
Selección de nodos, CSS
●   CSS
    –   $('p.activo')
    –   $('ul#menu li.activo')
    –   $('ul#menu li:first')
    –   $('ul#menu li:odd')
    –   $('ul#menu li:eq(3)')
Selección de nodos, CSS3


           $('div[id^=quot;contentquot;]')
       Elementos div cuyo id empieza por “content”
                        Más en:
http://www.456bereastreet.com/archive/200601/css_3_selectors_e
Moviéndonos por el DOM
●   parents() y parent()
●   prev(), prev('a')
●   next()
●   siblings()
Inciso: literal de objeto
●   Utiliza el literal de objeto, es una forma de
    encapsular tu código:


mi_app = {
    init: function() {
        // Cosas
    }
}
                                                     Buenas
$(document).ready(mi_app.init);                     prácticas
Colecciones de nodos
●   Con una selección de nodos podemos...
     –    Recorrerla:
           ●   $('input').each(function() { alert(this.value) })
     –    Hacer modificaciones:
           ●   $('p').hide()
           ●   $('p').addClass('activo')
           ●   $('p:odd').show().addClass('odd').append('<strong>Yeah!
               </strong>)
●   ...
Trabajando con la colección
Modificación de attributos
●   attr() hace sencillo el trabajo con atributos:
    –   $('p').attr('title') // Retorna el valor del atributo para
        el primer elemento encontrado
    –   $('p.destacado').attr('title', 'Destacado') // Asigna el
        valor al atributo de todos los elementos de la colección
●   removeAttr()
●
    addClass(), removeClass, hasClass() hacen el
    resto
Manipulación de contenidos
●   Obtener y cambiar contenido
    –   html() text() val()   (getters y setters)
●   Inserciones
    –   after() before() // Insertar fuera
    –   append() prepend() // Insertar dentro
    –   wrap()
Modificación de estilos
●   css() nos hace el trabajo:
    –   $('p').css('color', 'red')
    –   $('p.destacado').css({ color: 'red', background-color:
        'blue'})

●   Ojito con la separación entre capas
Inciso: usa siempre var
●   Las variables en Javascript tienen ámbito global o
    local dependiendo de si se han creado con la
    palabra clave var:


numero = 42 // Yo soy global
var numero = 42 // Yo soy local



                                                  Buenas
                                                 prácticas
Ejemplo: cebrear tabla
●   Crear una tabla y aplicarle un color diferente a las
    filas pares e impares siguiendo los preceptos de la
    separación entre capas.
Efectos
●   hide() y show()
●   slideDown(), slideUp()
●   fadeIn() y fadeOut
●   Permiten añadir comportamiento al terminar la
    animación:
    –   $('p').slideDown(2000, function() { alert('Fin') })
Ejemplo: ocultar párrafos
●   Documento con una serie de párrafos.
●   Insertar enlaces antes de cada párrafo que permitan
    ocultar y desplegar.
Sobre el cierre del elemento
                  <script>
●   Según el apéndice C de la especificación XHTML 1.0:


    C.3 Element Minimization and Empty Element Content
    Given an empty instance of an element whose content
       model is not EMPTY (for example, an empty title or
    paragraph) do not use the minimized form (e.g. use <p>
                      </p> and not <p />).
         http://www.w3.org/TR/xhtml1/#guidelines
Manejo de eventos
●   $('p').bind('click', function() { alert('Click') })
●   blur, focus, load, resize, scroll, unload,
    beforeunload, click, dblclick, mousedown,
    mouseup, mousemove, mouseover, mouseout,
    mouseenter, mouseleave, change, select, submit,
    keydown, keypress, keyup, error
●   Muchos tienen shortcuts:
     –   $('a:first').click(mostrar_parrafos)
Manejo de eventos
●   Si el callback del evento retorna false se cancela el
    burbujeo y el comportamiento por defecto de dicho
    evento:
$('a:first').click(function() {
    // El navegador no sigue el enlace
    return false;
});
Inciso: burbujeo de eventos
●   ¿Qué pasa cuando dos elementos anidados tienen
    comportamiento para un mismo evento?

        Captura                     Burbujeo
                       1                         2




     http://www.quirksmode.org/js/events_order.html
preventDefault versus return(false)
●   return(false) evita la propagación del evento y
    cancela su comportamiento por defecto.
●   En ocasiones no querremos cancelar el burbujeo:
$('a').click(function(e) {
    e.preventDefault();
});
●   Si queremos evitar la propagación sin cancelar el
    comportamiento por defecto: stopPropagation()
Ojo
●   return(false) no frenará el comportamiento por defecto
    si ocurre un error javascript antes:
$('a').click(function() {
    funcion_inexistente();
    return(false);
    // El enlace seguirá su curso
    // Un preventDefault hubiera hecho el trabajo
});
                                                   Buenas
                                                  prácticas
Ejemplo: menú de acordeon
●   Empezamos con una lista de enlaces anidada.
●   Los enlaces de primer nivel deben ser agrupadores.
●   Al hacer click sobre un enlace de primer nivel se
    despliega la lista de enlaces que contiene.
Ejemplo: tabtastic
●   Típica lista de contenidos con pestañas.
AJAX


Asynchronous
 Javascript
    And
    XML
AJAX
Inciso, diálogos HTTP
●   Presentación sobre diálogos HTTP.
●   Analizar la Fisgona de Menéame.
AJAX




               ?
Asynchronous
 Javascript
    And
    XML
Ajax en minúsculas


●   Más que un acrónimo, es una forma de interacción.
●   Carga asincrónica de datos, con o sin interacción del
    usuario.
Ejemplos: autocompletado
Ejemplos: edit in place
Ejemplos: formularios asincrónicos
Ajax con jQuery: load()



       load(uri)
Ejemplo: hola mundo ajax
●   Escribir una página web con una lista de enlaces a
    páginas locales.
●   Cargar el enlace vía ajax en un div insertado a
    continuación.
●   Copiar el ejemplo a servidor HTTP local, analizar con
    firebug las cabeceras HTTP.
Ajax avanzado en jQuery : ajax()

          $.ajax({
            url: url,
            dataType: 'xml',
            success: function(msg) {
                // Éxito
            }
          });
Ejemplo: ajax con xml
●   ¡Lo de antes era AHAH!
    http://en.wikipedia.org/wiki/AHAH
●   Intentar el ejemplo anterior con XML como tipo de
    datos.
Tests de unidad: jShoulda



   http://jshoulda.scriptia.net/
Tests de aceptación: Selenium




         http://seleniumhq.org/
    http://www.vimeo.com/2343914

Más contenido relacionado

La actualidad más candente

Despegar Tech Talk - AngularJS
Despegar Tech Talk - AngularJSDespegar Tech Talk - AngularJS
Despegar Tech Talk - AngularJSFacundo Viale
 
AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)
AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)
AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)Nacho García Fernández
 
Guia java script
Guia java scriptGuia java script
Guia java scriptmariaunefa
 
Desarrollo Web Ágil con Symfony, Bootstrap y Angular
Desarrollo Web Ágil con Symfony, Bootstrap y AngularDesarrollo Web Ágil con Symfony, Bootstrap y Angular
Desarrollo Web Ágil con Symfony, Bootstrap y AngularFreelancer
 
La magia de jquery
La magia de jqueryLa magia de jquery
La magia de jqueryAngelDX
 
Guia html2
Guia html2Guia html2
Guia html2ljds
 
Definición y función de lenguaje java script
Definición y  función de lenguaje java scriptDefinición y  función de lenguaje java script
Definición y función de lenguaje java scriptAndres Rodriguez
 
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4Rodolfo Finochietti
 
primefaces cortesia del portal de java
primefaces cortesia del portal de javaprimefaces cortesia del portal de java
primefaces cortesia del portal de javaSalvador Olivares
 
Jsf Java Server Faces
Jsf   Java Server FacesJsf   Java Server Faces
Jsf Java Server Facescok12v
 
Introduccion a AngularJS
Introduccion a AngularJSIntroduccion a AngularJS
Introduccion a AngularJSOscar Gensollen
 
Curso de Desarrollo Web de Platzi
Curso de Desarrollo Web de PlatziCurso de Desarrollo Web de Platzi
Curso de Desarrollo Web de PlatziCarlos Azaustre
 
DotNet 2019: Optimizando Apps con Xamarin.Forms
DotNet 2019: Optimizando Apps con Xamarin.FormsDotNet 2019: Optimizando Apps con Xamarin.Forms
DotNet 2019: Optimizando Apps con Xamarin.FormsJavier Suárez Ruiz
 
09b jsf (1)
09b jsf (1)09b jsf (1)
09b jsf (1)UTN
 
Taller MVVM Imagine Camp Medellín (Intermedio)
Taller MVVM Imagine Camp Medellín (Intermedio)Taller MVVM Imagine Camp Medellín (Intermedio)
Taller MVVM Imagine Camp Medellín (Intermedio)Sorey García
 

La actualidad más candente (20)

Despegar Tech Talk - AngularJS
Despegar Tech Talk - AngularJSDespegar Tech Talk - AngularJS
Despegar Tech Talk - AngularJS
 
AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)
AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)
AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)
 
Asp.net mvc
Asp.net mvcAsp.net mvc
Asp.net mvc
 
Guia java script
Guia java scriptGuia java script
Guia java script
 
Curso de HTML5
Curso de HTML5Curso de HTML5
Curso de HTML5
 
Hola RoR
Hola RoRHola RoR
Hola RoR
 
Desarrollo Web Ágil con Symfony, Bootstrap y Angular
Desarrollo Web Ágil con Symfony, Bootstrap y AngularDesarrollo Web Ágil con Symfony, Bootstrap y Angular
Desarrollo Web Ágil con Symfony, Bootstrap y Angular
 
La magia de jquery
La magia de jqueryLa magia de jquery
La magia de jquery
 
Web components
Web componentsWeb components
Web components
 
Guia html2
Guia html2Guia html2
Guia html2
 
Definición y función de lenguaje java script
Definición y  función de lenguaje java scriptDefinición y  función de lenguaje java script
Definición y función de lenguaje java script
 
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
 
primefaces cortesia del portal de java
primefaces cortesia del portal de javaprimefaces cortesia del portal de java
primefaces cortesia del portal de java
 
Jsf Java Server Faces
Jsf   Java Server FacesJsf   Java Server Faces
Jsf Java Server Faces
 
Introduccion a AngularJS
Introduccion a AngularJSIntroduccion a AngularJS
Introduccion a AngularJS
 
Curso de Desarrollo Web de Platzi
Curso de Desarrollo Web de PlatziCurso de Desarrollo Web de Platzi
Curso de Desarrollo Web de Platzi
 
DotNet 2019: Optimizando Apps con Xamarin.Forms
DotNet 2019: Optimizando Apps con Xamarin.FormsDotNet 2019: Optimizando Apps con Xamarin.Forms
DotNet 2019: Optimizando Apps con Xamarin.Forms
 
09b jsf (1)
09b jsf (1)09b jsf (1)
09b jsf (1)
 
Angular js
Angular jsAngular js
Angular js
 
Taller MVVM Imagine Camp Medellín (Intermedio)
Taller MVVM Imagine Camp Medellín (Intermedio)Taller MVVM Imagine Camp Medellín (Intermedio)
Taller MVVM Imagine Camp Medellín (Intermedio)
 

Destacado

Desarrollador c,c++
Desarrollador c,c++Desarrollador c,c++
Desarrollador c,c++202527
 
Javascript: potenciando la web desde 1995
Javascript: potenciando la web desde 1995Javascript: potenciando la web desde 1995
Javascript: potenciando la web desde 1995ADWE Team
 
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?Micael Gallego
 
JavaScript para Programadores Java
JavaScript para Programadores JavaJavaScript para Programadores Java
JavaScript para Programadores JavaCarlos A. Iglesias
 
Desarrollo centrado en tareas en Eclipse con Mylyn 2009
Desarrollo centrado en tareas en Eclipse con Mylyn 2009Desarrollo centrado en tareas en Eclipse con Mylyn 2009
Desarrollo centrado en tareas en Eclipse con Mylyn 2009Micael Gallego
 
Javascript: Particularidades del Lenguaje, DOM, Eventos y AJAX
Javascript: Particularidades del Lenguaje, DOM, Eventos y AJAXJavascript: Particularidades del Lenguaje, DOM, Eventos y AJAX
Javascript: Particularidades del Lenguaje, DOM, Eventos y AJAXIrontec
 
Javascript 1
Javascript 1Javascript 1
Javascript 1Juan C
 
Lenguaje de programación java
Lenguaje de programación javaLenguaje de programación java
Lenguaje de programación javaChikito304
 
Javascript para principiantes -Introducción
Javascript para principiantes -IntroducciónJavascript para principiantes -Introducción
Javascript para principiantes -IntroducciónOscar Josué Uh Pérez
 
Aprende JavaScript
Aprende JavaScriptAprende JavaScript
Aprende JavaScriptAlf Chee
 
#PlatziConf - El camino para ser un Pro en JavaScript
#PlatziConf - El camino para ser un Pro en JavaScript#PlatziConf - El camino para ser un Pro en JavaScript
#PlatziConf - El camino para ser un Pro en JavaScriptCarlos Azaustre
 
Configuración de NetBeans para Java, C y C++
Configuración de NetBeans para Java, C y C++Configuración de NetBeans para Java, C y C++
Configuración de NetBeans para Java, C y C++victorconejo80
 
Java y sus caracteristicas
Java y sus caracteristicasJava y sus caracteristicas
Java y sus caracteristicasAny Saula
 

Destacado (20)

Desarrollador c,c++
Desarrollador c,c++Desarrollador c,c++
Desarrollador c,c++
 
Javascript: potenciando la web desde 1995
Javascript: potenciando la web desde 1995Javascript: potenciando la web desde 1995
Javascript: potenciando la web desde 1995
 
Java script
Java scriptJava script
Java script
 
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?
 
JavaScript para Programadores Java
JavaScript para Programadores JavaJavaScript para Programadores Java
JavaScript para Programadores Java
 
Introducción a Javascript I
Introducción a Javascript IIntroducción a Javascript I
Introducción a Javascript I
 
Desarrollo centrado en tareas en Eclipse con Mylyn 2009
Desarrollo centrado en tareas en Eclipse con Mylyn 2009Desarrollo centrado en tareas en Eclipse con Mylyn 2009
Desarrollo centrado en tareas en Eclipse con Mylyn 2009
 
Lenguaje objective c
Lenguaje objective cLenguaje objective c
Lenguaje objective c
 
Javascript: Particularidades del Lenguaje, DOM, Eventos y AJAX
Javascript: Particularidades del Lenguaje, DOM, Eventos y AJAXJavascript: Particularidades del Lenguaje, DOM, Eventos y AJAX
Javascript: Particularidades del Lenguaje, DOM, Eventos y AJAX
 
Javascript
JavascriptJavascript
Javascript
 
Javascript 1
Javascript 1Javascript 1
Javascript 1
 
Lenguaje de programación java
Lenguaje de programación javaLenguaje de programación java
Lenguaje de programación java
 
Javascript para principiantes -Introducción
Javascript para principiantes -IntroducciónJavascript para principiantes -Introducción
Javascript para principiantes -Introducción
 
manual java
manual javamanual java
manual java
 
Metaprogramación en JavaScript
Metaprogramación en JavaScriptMetaprogramación en JavaScript
Metaprogramación en JavaScript
 
Aprende JavaScript
Aprende JavaScriptAprende JavaScript
Aprende JavaScript
 
#PlatziConf - El camino para ser un Pro en JavaScript
#PlatziConf - El camino para ser un Pro en JavaScript#PlatziConf - El camino para ser un Pro en JavaScript
#PlatziConf - El camino para ser un Pro en JavaScript
 
Configuración de NetBeans para Java, C y C++
Configuración de NetBeans para Java, C y C++Configuración de NetBeans para Java, C y C++
Configuración de NetBeans para Java, C y C++
 
JavaScript Avanzado
JavaScript AvanzadoJavaScript Avanzado
JavaScript Avanzado
 
Java y sus caracteristicas
Java y sus caracteristicasJava y sus caracteristicas
Java y sus caracteristicas
 

Similar a Javascript en proyectos reales: jQuery (20)

Introducción a JQuery
Introducción a JQueryIntroducción a JQuery
Introducción a JQuery
 
En 20 minutos ... jQuery
En 20 minutos ... jQueryEn 20 minutos ... jQuery
En 20 minutos ... jQuery
 
(Muy breve) Introduccion a jQuery
(Muy breve) Introduccion a jQuery(Muy breve) Introduccion a jQuery
(Muy breve) Introduccion a jQuery
 
Taller de Jquery
Taller de JqueryTaller de Jquery
Taller de Jquery
 
Gwt III - Avanzado
Gwt III - AvanzadoGwt III - Avanzado
Gwt III - Avanzado
 
Seminario jquery, html5 y wicket
Seminario jquery, html5 y wicketSeminario jquery, html5 y wicket
Seminario jquery, html5 y wicket
 
J query
J queryJ query
J query
 
Charla Jquery
Charla JqueryCharla Jquery
Charla Jquery
 
Javascript Clásico
Javascript ClásicoJavascript Clásico
Javascript Clásico
 
jQuery 1.3 UI eghost Julio2009
jQuery 1.3 UI eghost Julio2009jQuery 1.3 UI eghost Julio2009
jQuery 1.3 UI eghost Julio2009
 
Rails intro
Rails introRails intro
Rails intro
 
Accesibilidad práctica con HTML5, CSS3 y WAI-ARIA
Accesibilidad práctica con HTML5, CSS3 y WAI-ARIAAccesibilidad práctica con HTML5, CSS3 y WAI-ARIA
Accesibilidad práctica con HTML5, CSS3 y WAI-ARIA
 
JQuery Mvc
JQuery   MvcJQuery   Mvc
JQuery Mvc
 
Jquery
JqueryJquery
Jquery
 
JAVASCRIPT.pptx
JAVASCRIPT.pptxJAVASCRIPT.pptx
JAVASCRIPT.pptx
 
jQuery y ASP
jQuery y ASPjQuery y ASP
jQuery y ASP
 
Barcelona Workshop 2008
Barcelona Workshop 2008Barcelona Workshop 2008
Barcelona Workshop 2008
 
De HTML a Express
De HTML a ExpressDe HTML a Express
De HTML a Express
 
Javascript
JavascriptJavascript
Javascript
 
Ruby On Rails Intro
Ruby On Rails IntroRuby On Rails Intro
Ruby On Rails Intro
 

Último

Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)JuanStevenTrujilloCh
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptxHugoGutierrez99
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosAlbanyMartinez7
 
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...Marketing BRANDING
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxhasbleidit
 
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptxLINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptxkimontey
 
Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointValerioIvanDePazLoja
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfKarinaCambero3
 
Análisis de Artefactos Tecnologicos (3) (1).pdf
Análisis de Artefactos Tecnologicos  (3) (1).pdfAnálisis de Artefactos Tecnologicos  (3) (1).pdf
Análisis de Artefactos Tecnologicos (3) (1).pdfsharitcalderon04
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
Actividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolarActividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolar24roberto21
 
Viguetas Pretensadas en concreto armado
Viguetas Pretensadas  en concreto armadoViguetas Pretensadas  en concreto armado
Viguetas Pretensadas en concreto armadob7fwtwtfxf
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerenciacubillannoly
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfcristianrb0324
 

Último (20)

Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos Juridicos
 
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
 
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptxLINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
 
Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power Point
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdf
 
Análisis de Artefactos Tecnologicos (3) (1).pdf
Análisis de Artefactos Tecnologicos  (3) (1).pdfAnálisis de Artefactos Tecnologicos  (3) (1).pdf
Análisis de Artefactos Tecnologicos (3) (1).pdf
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
El camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVPEl camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVP
 
Actividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolarActividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolar
 
Viguetas Pretensadas en concreto armado
Viguetas Pretensadas  en concreto armadoViguetas Pretensadas  en concreto armado
Viguetas Pretensadas en concreto armado
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerencia
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdf
 

Javascript en proyectos reales: jQuery

  • 1. Javascript en proyectos reales Nuevos estándares Web Máster en Ingeniería Web David Arango Maroto Universidad de Oviedo Simplelógica
  • 2. Javascript en los 90s http://www.dynamicdrive.com/dynamicindex9/noright.htm
  • 3. Javascript en la actualidad (mayormente) ● Compatibilidad ● Portabilidad ● Código no intrusivo – No hay consenso sobre la definición – Separación entre capas – Evitar incompatibilidad – Graceful degradation
  • 4. Javascript en la actualidad ● Demanda de expertos: – 607 ofertas buscando en www.tecnoempleo.com – http://jobs.jsninja.com/ ● Requerimientos Javascript en proyectos reales ● Mucho buzz por la llamada “Web 2.0”
  • 5. ¿Cómo quieres escribir Javascript? - Dificultad + Drop-in From scratch
  • 6. ¿Por qué usar librerías? ● Simplifican el trabajo con Javascript – Múltiples niveles de DOM – Diferentes implementaciones en navegadores ● Agilidad
  • 7. Librerías ● Prototype ● Dojo ● moo.fx ¡NO FRAMEWORKS! ● YUI ● Jquery ● ...
  • 8. Librerías – 2007 jQuery 38% YUI 17% Prototype 45% http://ajaxian.com/archives/nitobi-survey-results-on-ajax-development
  • 9. Librerías – 2008 jQuery 37% Prototype 37% YUI 26% http://ajaxian.com/archives/2007-ajax-tools-usage-survey-results
  • 10. Prototype vs jQuery ● Prototype: – Extiende los objetos de DOM y de Javascript. – Añade un montón de objetos extra. – Muy sólida. ● jQuery – Totalmente encapsulada en un sólo objeto. – Permite encadenado de métodos. – Realmente sencilla e intuitiva.
  • 11. jQuery ● “Haz más con menos código” ● 2006, John Resig ● Todo lo que necesitas: – Selección de elementos del DOM – Manejo de eventos http://ejohn.org/about/ – API ajax – Animaciones (básicas)
  • 12. jQuery (somos fans) ● Estupenda documentación ● Comunidad sólida – http://docs.jquery.com/Discussion – http://lists.scriptia.net/listinfo.cgi/jquery-es-scriptia.net ● Variedad de plugins ● Integración con RoR – http://ennerchi.com/projects/jrails ● Libre, cobertura de tests, amplio soporte de navegadores...
  • 13. jQuery ¿por qué? ● Estilo de programación ● Manejo de eventos más sencillo ● Peso 80 70 73 60 54 50 40 30 20 10 0 Prototype jQuery Comprimidas con YUI Compressor http://developer.yahoo.com/yui/compressor/
  • 14. Lovely lovely jQuery ● Cuando empezamos con jQuery no había soporte RoR ● Los bindings javascript de RoR tenían problemas de accesibilidad ● jQuery hizo el trabajo, bueno, y nosotros ● Choan Gálvez fue el culpable: – http://choangalvez.nom.es/
  • 15. Al grano, la función jQuery ● La función jQuery encapsula toda la funcionalidad de la librería. ● Lo primero que debes saber es cómo agregar comportamiento en la carga del DOM ¡magia!: $(document).ready(function() { })
  • 16. Inciso: incluyendo scripts ● Hay sólo una forma de hacerlo bien, y no hace falta ser Neerlandés para utilizarla: <script type=”text/javascript”> // Cada vez que pones LANGUAGE Dios mata un gatito </script> Buenas prácticas
  • 17. Selección de nodos, CSS ● CSS – $('p.activo') – $('ul#menu li.activo') – $('ul#menu li:first') – $('ul#menu li:odd') – $('ul#menu li:eq(3)')
  • 18. Selección de nodos, CSS3 $('div[id^=quot;contentquot;]') Elementos div cuyo id empieza por “content” Más en: http://www.456bereastreet.com/archive/200601/css_3_selectors_e
  • 19. Moviéndonos por el DOM ● parents() y parent() ● prev(), prev('a') ● next() ● siblings()
  • 20.
  • 21. Inciso: literal de objeto ● Utiliza el literal de objeto, es una forma de encapsular tu código: mi_app = { init: function() { // Cosas } } Buenas $(document).ready(mi_app.init); prácticas
  • 22. Colecciones de nodos ● Con una selección de nodos podemos... – Recorrerla: ● $('input').each(function() { alert(this.value) }) – Hacer modificaciones: ● $('p').hide() ● $('p').addClass('activo') ● $('p:odd').show().addClass('odd').append('<strong>Yeah! </strong>) ● ...
  • 23. Trabajando con la colección
  • 24. Modificación de attributos ● attr() hace sencillo el trabajo con atributos: – $('p').attr('title') // Retorna el valor del atributo para el primer elemento encontrado – $('p.destacado').attr('title', 'Destacado') // Asigna el valor al atributo de todos los elementos de la colección ● removeAttr() ● addClass(), removeClass, hasClass() hacen el resto
  • 25. Manipulación de contenidos ● Obtener y cambiar contenido – html() text() val() (getters y setters) ● Inserciones – after() before() // Insertar fuera – append() prepend() // Insertar dentro – wrap()
  • 26. Modificación de estilos ● css() nos hace el trabajo: – $('p').css('color', 'red') – $('p.destacado').css({ color: 'red', background-color: 'blue'}) ● Ojito con la separación entre capas
  • 27. Inciso: usa siempre var ● Las variables en Javascript tienen ámbito global o local dependiendo de si se han creado con la palabra clave var: numero = 42 // Yo soy global var numero = 42 // Yo soy local Buenas prácticas
  • 28. Ejemplo: cebrear tabla ● Crear una tabla y aplicarle un color diferente a las filas pares e impares siguiendo los preceptos de la separación entre capas.
  • 29. Efectos ● hide() y show() ● slideDown(), slideUp() ● fadeIn() y fadeOut ● Permiten añadir comportamiento al terminar la animación: – $('p').slideDown(2000, function() { alert('Fin') })
  • 30. Ejemplo: ocultar párrafos ● Documento con una serie de párrafos. ● Insertar enlaces antes de cada párrafo que permitan ocultar y desplegar.
  • 31. Sobre el cierre del elemento <script> ● Según el apéndice C de la especificación XHTML 1.0: C.3 Element Minimization and Empty Element Content Given an empty instance of an element whose content model is not EMPTY (for example, an empty title or paragraph) do not use the minimized form (e.g. use <p> </p> and not <p />). http://www.w3.org/TR/xhtml1/#guidelines
  • 32. Manejo de eventos ● $('p').bind('click', function() { alert('Click') }) ● blur, focus, load, resize, scroll, unload, beforeunload, click, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, error ● Muchos tienen shortcuts: – $('a:first').click(mostrar_parrafos)
  • 33. Manejo de eventos ● Si el callback del evento retorna false se cancela el burbujeo y el comportamiento por defecto de dicho evento: $('a:first').click(function() { // El navegador no sigue el enlace return false; });
  • 34. Inciso: burbujeo de eventos ● ¿Qué pasa cuando dos elementos anidados tienen comportamiento para un mismo evento? Captura Burbujeo 1 2 http://www.quirksmode.org/js/events_order.html
  • 35.
  • 36. preventDefault versus return(false) ● return(false) evita la propagación del evento y cancela su comportamiento por defecto. ● En ocasiones no querremos cancelar el burbujeo: $('a').click(function(e) { e.preventDefault(); }); ● Si queremos evitar la propagación sin cancelar el comportamiento por defecto: stopPropagation()
  • 37. Ojo ● return(false) no frenará el comportamiento por defecto si ocurre un error javascript antes: $('a').click(function() { funcion_inexistente(); return(false); // El enlace seguirá su curso // Un preventDefault hubiera hecho el trabajo }); Buenas prácticas
  • 38. Ejemplo: menú de acordeon ● Empezamos con una lista de enlaces anidada. ● Los enlaces de primer nivel deben ser agrupadores. ● Al hacer click sobre un enlace de primer nivel se despliega la lista de enlaces que contiene.
  • 39. Ejemplo: tabtastic ● Típica lista de contenidos con pestañas.
  • 41. AJAX
  • 42. Inciso, diálogos HTTP ● Presentación sobre diálogos HTTP. ● Analizar la Fisgona de Menéame.
  • 43. AJAX ? Asynchronous Javascript And XML
  • 44. Ajax en minúsculas ● Más que un acrónimo, es una forma de interacción. ● Carga asincrónica de datos, con o sin interacción del usuario.
  • 48. Ajax con jQuery: load() load(uri)
  • 49. Ejemplo: hola mundo ajax ● Escribir una página web con una lista de enlaces a páginas locales. ● Cargar el enlace vía ajax en un div insertado a continuación. ● Copiar el ejemplo a servidor HTTP local, analizar con firebug las cabeceras HTTP.
  • 50. Ajax avanzado en jQuery : ajax() $.ajax({ url: url, dataType: 'xml', success: function(msg) { // Éxito } });
  • 51. Ejemplo: ajax con xml ● ¡Lo de antes era AHAH! http://en.wikipedia.org/wiki/AHAH ● Intentar el ejemplo anterior con XML como tipo de datos.
  • 52. Tests de unidad: jShoulda http://jshoulda.scriptia.net/
  • 53. Tests de aceptación: Selenium http://seleniumhq.org/ http://www.vimeo.com/2343914