Método para crear plantillas HTML para servidores web que alojan contenido estático

Hice una aplicación web de Ruby on Rails en el pasado. Usando RoR, había una "plantilla" estándar que se usaba para cada página, y el contenido que se insertaba en la "plantilla" se manejaba en el lado del servidor. Por ejemplo, definí un encabezado y un pie de página estándar, y cuando se realizaba una solicitud para una página específica, el contenido de esa página se insertaba entre el encabezado y el pie de página y luego se entregaba al cliente.

Actualmente, uso Firebase como base de datos de back-end, motor de actualización en tiempo real (pub/sub) y herramienta para alojar una aplicación web diferente. El alojamiento de Firebase simplemente sirve archivos HTML/JS estáticos, y los clientes realizan todo el trabajo pesado (a diferencia de RoR) para la autenticación, la manipulación DOM basada en el usuario, etc.

En esta aplicación, tengo un encabezado y un pie de página estándar que se usan en todas las páginas, pero mi problema es que cualquier cambio en el encabezado/pie de página debe realizarse manualmente en cada página.

Entonces, mi pregunta es, ¿existe un método estándar (o una herramienta, tal vez) que esencialmente le permita a uno compilar en forma de plantilla y luego "compilar" automáticamente en los archivos HTML separados que luego podría permitir que Firebase aloje? No estoy necesariamente buscando usar algo como AngularJS, aunque creo que aborda el problema de manera inherente.

Una aplicación con unas pocas páginas es fácil de administrar, pero a medida que la aplicación crece, las cosas se complican rápidamente y garantizar la coherencia se convierte en una tarea engorrosa.

La pregunta: generador de sitios estáticos con GUI , creo que está cerca de lo que estoy preguntando, pero no es exactamente lo mismo. No estoy buscando una herramienta para generar un sitio estático, sino una herramienta para editar HTML en forma de plantilla (y no necesariamente con una GUI elegante, estaba pensando más en una solución basada en texto como algún tipo de complemento para Notepad ++ ). Se recomendó a Jekyll como respuesta a la pregunta vinculada, y parece ser una posible buena solución, pero pensé que vería si había otras.

"No estoy buscando una herramienta para generar un sitio estático, sino una herramienta para editar HTML en forma de plantilla": ¿Podría explicar dónde ve las diferencias aquí? … Si entiendo bien su caso, desea crear/editar plantillas HTML y usar estas plantillas para generar varias páginas estáticas (que forman un sitio web) … que es exactamente lo que hacen los generadores de sitios estáticos, ¿no es así?
Después de regresar y releer mi pregunta y tu comentario, supongo que esos dos son lo mismo. En ese momento, estaba pensando que un generador de sitios estáticos también intentaba incorporar todas las cosas del servidor web, donde solo quería alojar los archivos HTML estáticos. Pero de nuevo, sí, creo que ahora esos dos son lo mismo...

Respuestas (1)

Creo que lo que necesitas es un generador de sitios estáticos .

Por lo general (pero no necesariamente) son herramientas de línea de comandos:

  1. Los archivos de plantilla y de contenido se colocan en carpetas específicas.
  2. Ejecutas la herramienta.
  3. Obtienes los archivos HTML estáticos.

Ahora puede simplemente tomar todos los archivos HTML generados y cargarlos.

Hay tantas soluciones (consulte, por ejemplo, las listas en http://staticsitegenerators.net/ y https://www.staticgen.com/ para hacerse una idea) que es difícil dar una recomendación específica sin especificar qué es exactamente. esperas de él.

Ejemplos populares son Jekyll , Pelican , Middleman y Hexo . Me gusta Hugo , sobre todo por su gran servidor de prueba incorporado con soporte de recarga en vivo ( vea también mi pregunta ), pero supongo que esto no le importa.
Entonces, cuando crea que un generador de sitios estáticos podría ser una solución para su caso, siéntase libre de crear una nueva pregunta (etiquetada con ) donde enumera explícitamente las características que necesita, por ejemplo: ¿Debería usar un motor de plantilla específico? ¿En qué formato (p. ej., Markdown) desea escribir el contenido? ¿Qué tipo de diseño de URL debería usar? ¿Solo necesita generar archivos HTML? ¿Debería crear un feed? ¿Tiene diferentes "tipos de contenido"? ¿Debería minificar el HTML generado? etc.