Académique Documents
Professionnel Documents
Culture Documents
http://www.dynamicdrive.com/dynamicindex9/noright.htm
No hay consenso sobre la definicin Separacin entre capas Evitar incompatibilidad Graceful degradation
Javascript en la actualidad
Demanda de expertos:
Requerimientos Javascript en proyectos reales Mucho buzz por la llamada Web 2.0
- Dificultad +
Drop-in
From scratch
Agilidad
Libreras
NO FRAMEWORKS!
Libreras 2007
jQuery 38%
Prototype 45%
YUI 17%
http://ajaxian.com/archives/nitobi-survey-results-on-ajax-development
Libreras 2008
jQuery 37%
http://ajaxian.com/archives/2007-ajax-tools-usage-survey-results
Prototype vs jQuery
Prototype:
Extiende los objetos de DOM y de Javascript. Aade un montn de objetos extra. Muy slida. Totalmente encapsulada en un slo objeto. Permite encadenado de mtodos. Realmente sencilla e intuitiva.
jQuery
jQuery
Haz ms con menos cdigo 2006, John Resig Todo lo que necesitas:
Seleccin de elementos del DOM Manejo de eventos API ajax Animaciones (bsicas)
http://ejohn.org/about/
http://docs.jquery.com/Discussion http://lists.scriptia.net/listinfo.cgi/jquery-es-scriptia.net
http://ennerchi.com/projects/jrails
Prototype
jQuery
Cuando empezamos con jQuery no haba soporte RoR Los bindings javascript de RoR tenan problemas de accesibilidad jQuery hizo el trabajo, bueno, y nosotros Choan Glvez fue el culpable:
http://choangalvez.nom.es/
La funcin jQuery encapsula toda la funcionalidad de la librera. Lo primero que debes saber es cmo agregar comportamiento en la carga del DOM magia!: $(document).ready(function() { })
Hay slo una forma de hacerlo bien, y no hace falta ser Neerlands para utilizarla:
<script type=text/javascript> // Cada vez que pones LANGUAGE Dios mata un gatito </script>
Buenas prcticas
CSS
$('div[id^="content"]')
Elementos div cuyo id empieza por content
Ms en: http://www.456bereastreet.com/archive/200601/css_3_selectors_e
Colecciones de nodos
Recorrerla:
$('input').each(function() { alert(this.value) })
Hacer modificaciones:
...
Modificacin de attributos
$('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 coleccin
resto
Manipulacin de contenidos
(getters y setters)
Inserciones
Modificacin de estilos
Las variables en Javascript tienen mbito global o local dependiendo de si se han creado con la palabra clave var:
Buenas prcticas
Crear una tabla y aplicarle un color diferente a las filas pares e impares siguiendo los preceptos de la separacin entre capas.
Efectos
hide() y show() slideDown(), slideUp() fadeIn() y fadeOut Permiten aadir comportamiento al terminar la animacin:
Documento con una serie de prrafos. Insertar enlaces antes de cada prrafo que permitan ocultar y desplegar.
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:
// El navegador no sigue el enlace return false;
$('a:first').click(function() {
});
Qu pasa cuando dos elementos anidados tienen comportamiento para un mismo evento?
Captura
Burbujeo
http://www.quirksmode.org/js/events_order.html
return(false) evita la propagacin del evento y cancela su comportamiento por defecto. En ocasiones no querremos cancelar el burbujeo:
e.preventDefault();
$('a').click(function(e) { });
Ojo
$('a').click(function() {
});
Buenas prcticas
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
AJAX
Asynchronous Javascript And XML
AJAX
AJAX
Asynchronous Javascript And XML
Ajax en minsculas
Ms que un acrnimo, es una forma de interaccin. Carga asincrnica de datos, con o sin interaccin del usuario.
Ejemplos: autocompletado
load(uri)
Escribir una pgina web con una lista de enlaces a pginas locales. Cargar el enlace va ajax en un div insertado a continuacin. Copiar el ejemplo a servidor HTTP local, analizar con firebug las cabeceras HTTP.
Lo de antes era AHAH! http://en.wikipedia.org/wiki/AHAH Intentar el ejemplo anterior con XML como tipo de datos.
http://jshoulda.scriptia.net/
http://seleniumhq.org/ http://www.vimeo.com/2343914