Articulo de referencia

JavaScript discreto

JavaScript no intrusivo es un enfoque general para el uso de JavaScript del lado del cliente en páginas web, de modo que si las características de JavaScript están parcial o tot...

JavaScript no intrusivo es un enfoque general para el uso de JavaScript del lado del cliente en páginas web, de modo que si las características de JavaScript están parcial o totalmente ausentes en el navegador web de un usuario , este note lo menos posible cualquier falta de funcionalidad de JavaScript de la página web. [ 1 ] El término ha sido utilizado por diferentes redactores técnicos para enfatizar diferentes aspectos del desarrollo web front-end . Para algunos, el término se ha entendido de manera más general como una referencia a la separación de la funcionalidad (la "capa de comportamiento") de la estructura/contenido y presentación de una página web , [ 2 ] mientras que otros lo han utilizado de manera más precisa para referirse al uso de la mejora progresiva para admitir agentes de usuario que carecen de cierta funcionalidad de JavaScript y usuarios que han deshabilitado JavaScript. [ 3 ] Siguiendo esta última definición, JavaScript no intrusivo contribuye a la accesibilidad web en la medida en que ayuda a garantizar que todos los usuarios, independientemente de su plataforma informática, tengan un acceso aproximadamente igual a toda la información y funcionalidad de la página web. [ 4 ] [ 5 ]

Descripción general

Una página web dinámica típica del lado del cliente puede concebirse como compuesta por cuatro partes: el contenido marcado ( HTML ), la hoja de estilos ( CSS ), JavaScript del lado del cliente y objetos incrustados como imágenes. [ 6 ] : 5 La parte de JavaScript del lado del cliente puede concebirse como una mejora de las otras partes al agregar características o funcionalidades que no serían posibles sin JavaScript. [ 6 ] : 3

El concepto de "no intrusividad" en relación con JavaScript del lado del cliente fue acuñado en 2002 por Stuart Langridge [ 7 ] en el artículo "DHTML no intrusivo y el poder de las listas desordenadas" [ 8 ] . En dicho artículo, Langridge defendió una forma de mantener todo el código JavaScript, incluidos los manejadores de eventos, fuera del HTML al usar HTML dinámico (DHTML) [ 7 ] . Afirmó que el propósito de este tipo de organización del código era "proporcionar una mejor experiencia de usuario para quienes tienen navegadores compatibles y no afectar a quienes no los tienen", además de facilitar la escritura de scripts para los desarrolladores web [ 7 ] . Posteriormente, Langridge amplió esta idea y enfatizó que el significado central de "no intrusivo" es que "si un navegador web determinado no admite las características de DHTML que se están utilizando, esa ausencia debería afectar la experiencia del usuario lo menos posible". [ 1 ] En otras palabras, para Langridge, "no intrusivo" se refiere principalmente a la experiencia de los usuarios respecto a la ausencia de características de JavaScript en una situación determinada. [ 1 ]

Definiciones de variantes

Otros autores han descrito variaciones sobre los elementos esenciales de la discreción.

El libro de David Flanagan, JavaScript: The Definitive Guide (2006), afirma que, si bien no existe una fórmula específica, hay tres objetivos principales del JavaScript no intrusivo: [ 4 ]

  • Separar JavaScript del marcado HTML, así como mantener los módulos de JavaScript independientes de otros módulos mediante convenciones básicas como el uso de espacios de nombres para evitar colisiones de espacios de nombres y el uso de código de inicialización de módulos;
  • Para que la degradación se produzca de forma controlada, todo el contenido debe estar disponible sin que se ejecute correctamente ninguna parte o la totalidad del código JavaScript;
  • Para no obstaculizar la accesibilidad del HTML , e idealmente para mejorarla, tanto si el usuario tiene alguna discapacidad personal como si utiliza un navegador inusual o con una configuración poco común.

El Web Standards Project , en su JavaScript Manifesto (2006), afirmó que "el propósito de JavaScript es mejorar la usabilidad de las páginas web añadiéndoles interacción", y describió cuatro beneficios de la programación no intrusiva del DOM : [ 9 ]

  1. Usabilidad : Un script DOM discreto no llama la atención del usuario; "los visitantes simplemente lo usan sin pensarlo".
  2. Degradación elegante : Los scripts DOM discretos nunca generan mensajes de error en ningún navegador, incluso cuando fallan. Si las funciones no se pueden presentar correctamente, desaparecen silenciosamente.
  3. Accesibilidad : Si algún script falla, la página seguirá ofreciendo sus funciones e información principales a través del marcado, las hojas de estilo y/o los scripts del lado del servidor.
  4. Separación : Para beneficio de otros desarrolladores web, presentes y futuros, todo el código JavaScript se mantiene por separado, sin afectar a otros archivos de script, marcado o código.

Para la Conferencia Web de París de 2007, Christian Heilmann identificó siete reglas de JavaScript no intrusivo, algunas de las cuales tenían un alcance más amplio que otras definiciones más estrechas de "no intrusivo": [ 10 ]

  1. "No haga suposiciones": Las técnicas de programación defensiva deben contemplar la posibilidad de que JavaScript no se ejecute, que el navegador no admita los métodos esperados, que el HTML haya cambiado, que se utilicen dispositivos de entrada inesperados y que otros scripts no estén presentes o invadan el espacio de nombres global.
  2. "Encuentra tus ganchos y relaciones", como identificadores y otros aspectos del HTML esperado.
  3. Deje el recorrido de los objetos DOM individuales en manos de los expertos, como por ejemplo, el controlador CSS integrado en el navegador, siempre que sea posible.
  4. "Comprender los navegadores y a los usuarios", en particular cómo fallan los navegadores, qué suposiciones hacen los usuarios y las configuraciones o usos inusuales.
  5. "Comprender los eventos ", incluyendo cómo se "propagan" y las características del Eventobjeto que se pasa a la mayoría de los manejadores de eventos.
  6. Para que funcione correctamente con otros scripts, evite usar nombres de funciones y variables globales.
  7. "Trabaja para el próximo desarrollador" utilizando nombres de variables y funciones que se expliquen por sí mismos, creando código lógico y legible, haciendo obvias las dependencias y comentando cualquier código que aún pueda resultar confuso.

Las definiciones más amplias de JavaScript no intrusivo tienen mucho en común con las mejores prácticas de programación en general, como la encapsulación y las capas de abstracción , la evitación de variables globales , las convenciones de nomenclatura significativas, el uso de patrones de diseño apropiados y las pruebas sistemáticas . [ 11 ]

Referencias

  1. 1 2 3 Langridge, Stuart (2005). DHTML Utopia: Diseño web moderno con JavaScript y DOM . Collingwood , VIC, Australia: SitePoint. pág. 75. ISBN  9780957921894OCLC 60690615. Una restricción de diseño importante al agregar DHTML a sus sitios web es que debe ser discreto. Por "discreto" me refiero a que si un navegador web no admite las funciones DHTML que está utilizando, esta ausencia debe afectar lo menos posible la experiencia del usuario. No se deben mostrar errores al usuario: el sitio debe ser perfectamente utilizable sin las mejoras de DHTML. (Referencia a la primera edición, ya que muestra cómo el autor fue pionero en el concepto). El mismo pasaje se encuentra en un artículo extraído del libro: Langridge, Stuart (1 de junio de 2005). "DHTML Utopia: Diseño web moderno con JavaScript y DOM" . articles.sitepoint.com . Archivado del original el 21 de abril de 2010. Consultado el 18 de octubre de 2016 .
  2. Keith, Jeremy (2006-06-20). "Separación de comportamiento" . www.alistapart.com . Consultado el 27 de enero de 2007. Separar el comportamiento del marcado de esta manera se denomina JavaScript no intrusivo.
  3. Olsson, Tommy (2007-02-06). "Graceful Degradation & Progressive Enhancement" . accessites.org . Archivado del original el 17-05-2017 . Recuperado el 03-01-2009 . La mejora progresiva en JavaScript se está volviendo más común en estos días. La clave para esto se conoce como JavaScript no intrusivo. Un script no intrusivo es ignorado silenciosamente por los agentes de usuario que no lo admiten, pero es aplicado por dispositivos más capaces. Al igual que una hoja de estilo externa.
  4. 1 2 Flanagan, David (2006). "JavaScript discreto". JavaScript: La guía definitiva (5.ª ed.). O'Reilly Media . págs. 241-242 . ISBN   9780596101992OCLC 64313259 
  5. Connor, Joshue O. (2012). "JavaScript discreto". Pro HTML5 Accessibility: Building an Inclusive Web . Berkeley, CA: Apress . pp. 71. doi : 10.1007 /978-1-4302-4195-9_3 . ISBN  9781430241942OCLC 757486357 
  6. 1 2 Goodman, Danny ; Morrison, Michael ; Novitski, Paul; Rayl, Tia Gustaff (2010). "El papel de JavaScript en la World Wide Web y más allá". JavaScript Bible (7.ª ed.). Indianápolis, IN: Wiley. págs. 3–13 . ISBN   9780470526910OCLC 435731997 
  7. 1 2 3 "Creación de sitios web dinámicos" . www.netmag.co.uk . 09-08-2006. Archivado del original el 05-12-2010 . Consultado el 18-05-2010 .
  8. Langridge, Stuart (noviembre de 2002). "DHTML discreto y el poder de las listas desordenadas" . www.kryogenix.org . Archivado del original el 4 de diciembre de 2002. Consultado el 7 de agosto de 2008 .
  9. "El Manifiesto de JavaScript" . www.webstandards.org . Proyecto de Estándares Web . Archivado del original el 14 de junio de 2006. Consultado el 8 de febrero de 2011 .
  10. Heilmann, Christian (2007). "Las siete reglas del JavaScript discreto" . icant.co.uk . Archivado del original el 2 de mayo de 2011. Recuperado el 8 de febrero de 2011 .Véase también: Heilmann, Christian (2006). «JavaScript discreto». En Thatcher, Jim; Burks, Michael R.; Heilmann, Christian; Henry, Shawn Lawton; Kirkpatrick, Andrew; Lauke, Patrick H.; Lawson, Bruce; Regan, Bob; Rutter, Richard; Urban, Mark (eds.). Accesibilidad web: estándares web y cumplimiento normativo . Berkeley, CA: Friends of Ed; distribuido por Springer-Verlag . pp. 301–331 . doi : 10.1007/978-1-4302-0188-5_10 . ISBN  1590596382.
  11. White, Alexei (2009). "JavaScript discreto". JavaScript Programmer's Reference . Wrox Programmer to Programmer. Chichester, Reino Unido; Hoboken, Nueva Jersey: Wiley. pág . 311. ISBN  9780470344729OCLC 421783941 

Lecturas adicionales

  • Amery, Luke (marzo de 2009). "Explicación de JavaScript no intrusivo". APC . 29 (3). Bauer Media Group : 89.
  • Brinzarea-Iamandi, Bogdan; Hendix, Audra; Darie, Cristian (2009). «JavaScript discreto». AJAX y PHP: Creación de aplicaciones web modernas (2.ª  ed.). Birmingham, Reino Unido: Packt Publishing . págs. 205-206 . ISBN  9781847197726OCLC 607690639 
  • Johansen, Christian (2011). «JavaScript discreto». Desarrollo de JavaScript guiado por pruebas . Serie Biblioteca del desarrollador. Upper Saddle River, NJ: Addison-Wesley . págs. 177–196 . ISBN  9780321683915OCLC 613420202 
  • Kyrnin, Jennifer (2015). «JavaScript discreto». En Sams: Aprende diseño web responsivo en 24 horas . Sams: Aprende diseño web en 24 horas. Indianápolis, IN: Sams. págs. 95-101 . ISBN  9780672338380OCLC 872430002 
  • Skinner, Jesse (2007). Ajax discreto . O'Reilly Short Cuts. Sebastopol, CA: O'Reilly Media . ISBN 9780596510244OCLC 172622153 
  • Smith, Peter (2013). «JavaScript discreto». Rendimiento profesional de sitios web: optimización del front-end y el back-end . Indianápolis, IN: Wiley. pág.  120. ISBN 9781118487525OCLC 809561237 
  • "Los principios del JavaScript no intrusivo" . www.w3.org . Currículo de estándares web del W3C . 2011. Consultado el 5 de julio de 2021 .
  • Vora, Pawan (2009). «JavaScript poco intrusivo» . Patrones de diseño de aplicaciones web . Ámsterdam; Londres: Morgan Kaufmann Publishers . págs. 347-349 . ISBN  9780123742650OCLC 255902089