JavaScript discreto es un enfoque general para el uso de JavaScript del lado del cliente en páginas web, de modo que si las funciones de JavaScript están parcial o totalmente ausentes en el navegador web de un usuario , el usuario nota lo menos posible cualquier falta de la funcionalidad de JavaScript de la página web. [1] El término ha sido utilizado por diferentes escritores técnicos para enfatizar diferentes aspectos del desarrollo web front-end . Para algunos escritores, el término se ha entendido de manera más general para referirse 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 escritores han usado el término 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 desactivado JavaScript. [3] Siguiendo la última definición, JavaScript discreto contribuye a la accesibilidad web en la medida en que ayuda a garantizar que todos los usuarios, sea cual sea su plataforma informática, tengan 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 se puede concebir como que consta de cuatro partes: el contenido marcado ( HTML ), la hoja de estilo ( 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 agregando características o funcionalidades que no serían posibles sin JavaScript. [6] : 3
El concepto de "discreción" en relación con el JavaScript del lado del cliente fue acuñado en 2002 por Stuart Langridge [7] en el artículo "DHTML discreto y el poder de las listas desordenadas". [8] En el artículo Langridge argumentó por una forma de mantener todo el código JavaScript, incluidos los controladores de eventos, fuera del HTML cuando se usa HTML dinámico (DHTML). [7] Dijo que el propósito de este tipo de organización de código era "proporcionar una mejor experiencia de usuario para las personas cuyos navegadores pueden admitirlo, y no afectar a aquellos cuyos navegadores no pueden", al tiempo que facilita la creación de scripts para los desarrolladores web . [7] Langridge luego amplió este pensamiento y enfatizó que el significado central de "discreto" es que "si un navegador web determinado no es compatible con las funciones DHTML que está utilizando, esa ausencia debería afectar la experiencia del usuario lo menos posible ". [1] En otras palabras, para Langridge, "discreto" se refiere principalmente a la experiencia de los usuarios de la ausencia de funciones 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 JavaScript de David Flanagan : The Definitive Guide (2006) dice que si bien no existe una fórmula específica, hay tres objetivos principales de JavaScript discreto: [4]
- Para separar JavaScript del marcado HTML, así como mantener los módulos de JavaScript independientes de otros módulos utilizando 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 degradarse con elegancia, todo el contenido debe estar disponible sin que todo o nada de JavaScript se ejecute correctamente;
- No obstaculizar la accesibilidad del HTML , e idealmente mejorarlo, ya sea que el usuario tenga discapacidades personales o esté utilizando un navegador inusual o configurado de manera inusual.
El Proyecto de Estándares Web , en su Manifiesto de JavaScript (2006), dijo que "el propósito de JavaScript es mejorar la usabilidad de las páginas web al agregarles interacción", y describió cuatro beneficios de las secuencias de comandos DOM discretas : [9]
- Usabilidad : un guión DOM discreto no llama la atención del usuario: "los visitantes simplemente lo usan sin pensar en ello".
- 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.
- Accesibilidad : si falla algún script, la página aún ofrece sus funciones principales e información a través del marcado, las hojas de estilo y / o el script del lado del servidor.
- Separación : para beneficio de otros desarrolladores web 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 en 2007, Christian Heilmann identificó siete reglas de JavaScript discreto, algunas de las cuales tenían un alcance más amplio que otras definiciones más limitadas de "discreto": [10]
- "No haga ninguna suposición": las técnicas de programación defensivas deben permitir la posibilidad de que JavaScript no se ejecute, el navegador no admita los métodos esperados, el HTML puede haber cambiado, los dispositivos de entrada inesperados pueden estar en uso y otros scripts pueden no estar presente o puede estar invadiendo el espacio de nombres global.
- "Encuentra tus ganchos y relaciones", como ID y otros aspectos del HTML esperado.
- Deje atravesar objetos DOM individuales a los expertos, como el controlador CSS integrado en el navegador cuando sea posible.
- "Comprender navegadores y usuarios", en particular cómo fallan los navegadores, qué suposiciones hacen los usuarios y configuraciones o usos inusuales.
- "Comprender los eventos ", incluida la forma en que 'burbujean' y las características del
Event
objeto que se pasa a la mayoría de los controladores de eventos. - Juegue bien con otros scripts evitando funciones globales y nombres de variables.
- "Trabaje para el próximo desarrollador" utilizando nombres de función y variable autoexplicativos, creando código lógico y legible, haciendo obvias las dependencias y comentando cualquier código que aún pueda confundir.
Las definiciones más amplias de JavaScript discreto tienen mucho en común con las mejores prácticas generales de programación, como capas de encapsulación y abstracción , evitación de variables globales , convenciones de nomenclatura significativas , uso de patrones de diseño apropiados y pruebas sistemáticas . [11]
Ver también
- Cumplimiento de normas
Referencias
- ↑ a b c Langridge, Stuart (2005). Utopía DHTML: diseño web moderno con JavaScript y DOM . Collingwood, VIC, Australia: SitePoint. pag. 75 . ISBN 9780957921894. OCLC 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 determinado no es compatible con las funciones DHTML que está utilizando, esa ausencia debería afectar la experiencia del usuario lo menos posible. 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 está en un artículo extraído del libro: Langridge, Stuart (1 de junio de 2005). "Utopía DHTML: diseño web moderno con JavaScript y DOM" . artículos.sitepoint.com . Archivado desde el original el 21 de abril de 2010 . Consultado el 18 de octubre de 2016 . - ^ Keith, Jeremy (20 de junio de 2006). "Separación conductual" . www.alistapart.com . Consultado el 27 de enero de 2007 .
Separar el comportamiento del marcado como este se denomina JavaScript discreto.
- ^ Olsson, Tommy (6 de febrero de 2007). "Agradable degradación y mejora progresiva" . accessites.org . Archivado desde el original el 18 de julio de 2017 . Consultado el 3 de enero de 2009 .
La mejora progresiva en lo que respecta a JavaScript se está volviendo más común en estos días. La clave de esto se conoce como JavaScript discreto. Los agentes de usuario que no lo admiten ignoran silenciosamente un script discreto, pero los dispositivos más capaces lo aplican. Como una hoja de estilo externa.
- ^ a b Flanagan, David (2006). "JavaScript discreto". JavaScript: La guía definitiva (5ª ed.). O'Reilly Media . pag. 241–242 . ISBN 9780596101992. OCLC 64313259 .
- ^ Connor, Joshue O. (2012). "JavaScript discreto". Accesibilidad Pro HTML5: Construyendo una Web Inclusiva . Berkeley, CA: Apress . pp. 71 . doi : 10.1007 / 978-1-4302-4195-9_3 . ISBN 9781430241942. OCLC 757486357 .
- ^ a b Goodman, Danny ; Morrison, Michael ; Novitski, Paul; Rayl, Tia Gustaff (2010). "Papel de JavaScript en la World Wide Web y más allá". Biblia JavaScript (7a ed.). Indianápolis, IN: Wiley. págs. 3-13. ISBN 9780470526910. OCLC 435731997 .
- ^ a b c "Construyendo sitios web dinámicos" . www.netmag.co.uk . 2006-08-09. Archivado desde el original el 5 de diciembre de 2010 . Consultado el 18 de mayo de 2010 .
- ^ Langridge, Stuart (noviembre de 2002). "DHTML discreto y el poder de las listas desordenadas" . www.kryogenix.org . Archivado desde el original el 4 de diciembre de 2002 . Consultado el 7 de agosto de 2008 .
- ^ "El Manifiesto de JavaScript" . www.webstandards.org . Proyecto de estándares web . Archivado desde el original el 14 de junio de 2006 . Consultado el 8 de febrero de 2011 .
- ^ Heilmann, Christian (2007). "Las siete reglas de JavaScript discreto" . icant.co.uk . Archivado desde el original el 2 de mayo de 2011 . Consultado el 8 de febrero de 2011 . Ver también: Heilmann, Christian (2006). "JavaScript discreto". En Thatcher, Jim; Burks, Michael R .; Heilmann, cristiano; 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: Amigos de Ed; distribuido por Springer-Verlag . págs. 301–331 . doi : 10.1007 / 978-1-4302-0188-5_10 . ISBN 1590596382.
- ^ White, Alexei (2009). "JavaScript discreto". Referencia del programador de JavaScript . Programador a programador Wrox. Chichester, Reino Unido; Hoboken, Nueva Jersey: Wiley. pag. 311 . ISBN 9780470344729. OCLC 421783941 .
Otras lecturas
- Amery, Luke (marzo de 2009). "Explicación de JavaScript discreto". APC . Bauer Media Group . 29 (3): 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 9781847197726. OCLC 607690639 .
- Johansen, Christian (2011). "JavaScript discreto". Desarrollo de JavaScript basado en pruebas . Serie de bibliotecas del desarrollador. Upper Saddle River, Nueva Jersey: Addison-Wesley . págs. 177–196. ISBN 9780321683915. OCLC 613420202 .
- Kyrnin, Jennifer (2015). "JavaScript discreto". Sams Enséñate a ti mismo el diseño web adaptable en 24 horas . Sams enséñese usted mismo en 24 horas. Indianápolis, IN: Sams. págs. 95–101 . ISBN 9780672338380. OCLC 872430002 .
- Skinner, Jesse (2007). Ajax discreto . Atajos de O'Reilly. Sebastopol, CA: O'Reilly Media . ISBN 9780596510244. OCLC 172622153 .
- Smith, Peter (2013). "JavaScript discreto". Rendimiento profesional del sitio web: optimización del front-end y el back-end . Indianápolis, IN: Wiley. pag. 120. ISBN 9781118487525. OCLC 809561237 .
- "Los principios de JavaScript discreto" . www.w3.org . Plan de estudios de los estándares web del W3C . 2011 . Consultado el 5 de julio de 2021 .
- Vora, Pawan (2009). "JavaScript discreto" . Patrones de diseño de aplicaciones web . Amsterdam; Londres: Editorial Morgan Kaufmann . págs. 347–349 . ISBN 9780123742650. OCLC 255902089 .