Soy nuevo (más o menos) en todas las aplicaciones de pila completa de JavaScript, y completamente nuevo en Angular, por lo que esperaba que alguien pudiera aclararme las cosas aquí.
¿Por qué necesitaría usar un marco de plantillas como Jade o Handlebars al escribir aplicaciones del lado del cliente usando AngularJS?
Debo decir que nunca he usado ninguno de estos marcos de plantillas. Por tanto, no conozco completamente las ventajas. Pero cuando miro a Handlebars, por ejemplo, hace muchas de las mismas cosas que haría en Angular, como hacer bucles, etc.
Por lo que puedo decir, tendría más sentido crear las plantillas en Angular usando el HTML adecuado y luego hacer todas las plantillas del lado del cliente, y combinar esto con un primer enfoque de API usando node y mongo, por ejemplo.
La razón de esta confusión es que muchos de los ejemplos que encuentro en GitHub hacen uso de Jade, y me parece contradictorio.
Por favor, ilumíname y enderezame. Me encantaría aprender algunas de las mejores prácticas de personas que saben mucho más que yo.
Gracias
Utilizo Jade para generar plantillas consumidas por AngularJS porque odio escribir HTML simple. Se parece a algo como:
… Que creo que es mucho más limpio que HTML simple.
fuente
ng-inlude
, posiblemente usado junto conng-src
, de los mixins e incluye de Jades?Sinceramente, no entiendo por qué a la gente le importa la diferencia entre esto:
y esto:
Excepto que encuentro uno un poco más legible por humanos. Ligeramente . No entiendo por qué la gente es tan ferviente con el tema. Todo es derramamiento de bicicletas. La diferencia es insignificante y cualquier programador competente podría traducir fácilmente uno al otro después de cinco segundos en Google. Usa lo que quieras y deja que todos los demás peleen por nada. Elija sus batallas y participe en debates sobre cosas que realmente importan, como los reactores atómicos;)
fuente
if
a la ecuación, todo cambia de repente. Consulte más arriba sobre los "usuarios premium".if
s en su marcado de jade, entonces ya necesita algún tipo de motor de plantillas de todos modos y tendría que convertirlo a cualquierif
sintaxis que utilice ese motor. Realmente no entiendo tu crítica.Entonces TL; DR, en el servidor, puede usar cualquier lenguaje [jade, haml, ...] para generar solo la estructura html para su aplicación, no tiene nada que ver con angularJS ya que se renderizará y funcionará con HTML en tiempo de ejecución en la interfaz.
No tiene que usar Jade en el servidor, y sugiero que no lo use, ya que confundirá a los nuevos desarrolladores. En los proyectos que ve, usan Jade solo porque es más limpio y están acostumbrados, y si lo usa con angularJS, su único trabajo es generar html simple sin ninguna lógica.
fuente
La respuesta aceptada es algo unilateral y descuida el hecho de que cualquier configuración de precompilador para HTML tiene un gran uso para CUALQUIER tipo de proyecto HTML: la composición y la flexibilidad de marcado resultante.
¿Trabaja solo en una aplicación angular? Dale una oportunidad a Jade.
Jade mejora su capacidad para modularizar HTML, reduce la cantidad de tiempo que dedica a depurar HTML y también fomenta la creación de inventarios de marcado.
Durante el tiempo de diseño, puede haber una gran cantidad de iteraciones en partes HTML. Si la salida HTML se basa en un conjunto de archivos jade, es fácil para el equipo actuar con flexibilidad ante los requisitos cambiantes. Además, cambiar el marcado mediante la recomposición de las inclusiones de jade es significativamente más sólido que volver a escribir HTML puro.
Dicho esto, reconozco la aversión general a mezclar angular con jade en la etapa de producción o desarrollo. Introducir otro conjunto requerido de conocimiento de sintaxis es una mala idea para la mayoría de los equipos y el uso de jade podría ocultar una gestión de proyectos ineficiente al abstraerse de algunos trabajos que estarían prohibidos por los principios de DRY (por ejemplo, ser perezoso en la preparación del marcado)
fuente
Leí todas las respuestas anteriores y me sorprendió un poco que nadie hubiera mencionado un aspecto que hace que usar jade sobre la generación de plantillas AngularJS sea algo muy útil.
Como ya se dijo, en producción, la diferencia de escenarios realistas entre escribir html crudo y jade es realmente notable, pero lo más importante que nunca debemos olvidar es que a veces necesitamos plantillas de angularjs reiniciadas y cambiadas dinámicamente .
En pocas palabras, a veces necesitamos cambiar html a través de innerHTML y luego forzar a AngularJS a recompilar el contenido. Y este es exactamente el tipo de tarea cuando la generación de tales vistas a través de jade puede tener sus beneficios.
Además, AngularJS funciona bien con modelos, cuya estructura es bien conocida por definición. En realidad, sucede que en realidad no conocemos la estructura exacta (imagina, digamos, el renderizador JSON). AngularJS será bastante torpe aquí (incluso si estamos construyendo una aplicación angular), mientras que jade hará el trabajo.
fuente
Puede incluir plantillas angulares a través de Jade.
Para las plantillas de almacenamiento en caché, percibo esto como mucho menos frágil que incluir las plantillas de escape en los archivos javascript.
Ver: https://docs.angularjs.org/api/ng/service/$templateCache
fuente
Jade definitivamente está mucho más cerca de html que decir Haml. Entonces, el cambio de contexto es realmente mínimo. Sin embargo, no está completamente ausente. Puede que no le importe en absoluto a un desarrollador. Pero cuando su diseñador llega y le pregunta cómo hacer que una etiqueta anidada funcione correctamente, está resolviendo un problema innecesario que creó en primer lugar.
HTML aún se puede escribir de manera muy legible y se pueden usar parciales para hacerlo más comprensible. 500 líneas de cualquier cosa son difíciles de leer, ya sea Jade o HTML.
Aquí hay una plantilla de Jade
Y el HTML equivalente
Cuando se escribe de manera legible, no veo que HTML esté particularmente en desventaja para justificar un cambio. Efectivamente, los corchetes angulares son una monstruosidad. Pero preferiría tenerlos, que tener que lidiar con las dudas del diseñador sobre si la indirecta que introduje está rompiendo el html. (Puede que no. Pero demostrar que no es un esfuerzo digno)
fuente
En primer lugar, siempre necesitas algún tipo de plantilla del lado del servidor.
Las plantillas del lado del cliente puro tienen enormes desventajas en el tiempo de carga, por lo que a menudo se mitiga al representar algunos elementos estáticos en el servidor. De esta manera, cuando el usuario carga parcialmente una página, ya verá algunos elementos en la página.
Y bueno, las plantillas son útiles en este caso, aunque la gente a veces usa un generador de html estático como Jekyll.
Hay otra razón para usar Jade que no se mencionó aquí antes.
Espacio en blanco.
Si está escribiendo HTML mantenible por humanos con sangrías y saltos de línea, cada salto de línea resultará en un nodo de texto de espacio en blanco. En algunos casos, puede arruinar el formato de elementos en línea y hacer que el código javascript sea más extraño.
Puede leer más detalles aquí: https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Whitespace_in_the_DOM
Si está escribiendo código Jade, se compila en HTML de una línea que no tiene este problema.
fuente
Cuando se trabaja en equipo, el front-end probablemente prefiere diseñar sus páginas como html estático. Traducir ese html estático en plantillas dinámicas es una fuente de errores, y agregar jade agrega ese paso de traducción.
¡Como muchos otros, prefiero la sencillez!
fuente