Saltear al contenido principal

Generadores de sitios estáticos – Lenguaje Python

Un generador de sitio web estático combina un lenguaje de marcado, como Markdown o reStructuredText, con un motor de plantillas como
Jinja, para producir archivos HTML. Los archivos HTML pueden ser alojados y servidos por un servidor web o una red de entrega de contenido (CDN).
sin cualquier dependencia adicional, como un servidor WSGI.

Contrata a un experto en Python para iniciar tu proyecto hoy mismo:

¿Por qué son útiles los generadores de sitios estáticos?

Los archivos de contenido estático como HTML, CSS y JavaScript se pueden servir desde una red de entrega de contenido (CDN) a gran escala y bajo costo. Si un sitio web generado estáticamente se ve afectado por un alto tráfico simultáneo, la CDN lo atenderá fácilmente sin interrupciones de conexiones.

Por ejemplo, cuando Python estaba en la cima de Hacker News por un fin de semana, Páginas de GitHub se usó como un CDN para servir el sitio y no tuvo ningún problema incluso con cerca de 400 conexiones simultáneas a la vez, como se muestra en la siguiente captura de pantalla de Google Analytics capturada durante esa ráfaga de tráfico.

Ejemplo de cómo los sitios web estáticos escalan con una CDN basada en Mundo Python Python en el tráfico de la página principal de Hacker News.

¿Cómo funcionan los generadores de sitios web estáticos?

Los generadores de sitios estáticos permiten al usuario crear archivos HTML escribiendo en un lenguaje de marcado y codificando archivos de plantilla. El generador de sitios estáticos luego combina el lenguaje de marcado y las plantillas para producir HTML. El HTML de salida no necesita mantenerse a mano porque se regenera cada vez que se modifican las marcas o las plantillas.

Por ejemplo, como se muestra en el diagrama a continuación, el generador de sitios estáticos de Pelican puede tomar archivos reStructuredText y archivos de plantilla Jinja2 como entrada y luego combinarlos para generar un conjunto de archivos HTML estáticos.

Ejemplo de cómo funcionan los generadores de sitios estáticos con un lenguaje de marcado y plantillas.

¿Cuál es la desventaja de usar generadores de sitios estáticos?

La principal desventaja es que el código no se puede ejecutar después de que se crea un sitio. Está atascado con los archivos de salida, por lo que si está acostumbrado a crear aplicaciones web con un marco web tradicional, tendrá que cambiar sus expectativas.

El contenido que normalmente funciona con una base de datos, como comentarios, sesiones y datos de usuario, solo se puede manejar a través de servicios de terceros. Por ejemplo, si desea tener comentarios en un sitio web estático, deberá incrustar la forma de Disqus y depender completamente de su servicio.

Muchas aplicaciones web simplemente no se pueden construir con solo un generador de sitios estático. Sin embargo, un generador de sitios web estáticos puede crear parte de un sitio que será servido por un servidor web mientras que otras páginas son manejadas por el servidor WSGI. Si se hace bien, esas aplicaciones web tienen el potencial de escalar mejor que si el servidor WSGI representara cada página. La complejidad puede valer la pena o no para su aplicación específica.

Implementaciones de Python

Existen numerosos generadores de sitios web estáticos en muchos idiomas diferentes. Los que se enumeran aquí están codificados principalmente en Python.

  • Pelican es un generador de sitios web estáticos de Python de uso común que se utiliza para crear Python. El motor de plantillas principal es Jinja y Markdown, reStructuredText y AsciiDoc son compatibles con la configuración predeterminada.
  • Lektor es un sistema de gestión de contenido estático y un generador de sitios que puede implementar su salida en cualquier servidor web. Utiliza Jinja2 como motor de plantillas.
  • MkDocs usa un archivo de configuración YAML para tomar archivos Markdown y un tema opcional para generar un sitio de documentación. El motor de plantillas es Jinja, pero un usuario no tiene que crear sus propias plantillas a menos que se desee un sitio personalizado, momento en el que podría tener más sentido utilizar un generador de sitio estático diferente.
  • mynt (código fuente) está diseñado para crear blogs y utiliza Jinja para generar páginas HTML.
  • Nikola (código fuente) toma cuadernos reStructuredText, Markdown o Jupyter (IPython) y combina los archivos con plantillas Mako o Jinja2 para generar sitios estáticos. Es compatible con Python 2.7 y 3.3+. Python 2.7 se eliminará a principios de 2016, mientras que Python 3.3+ seguirá siendo compatible.
  • Acrilamida (código fuente) utiliza compilaciones incrementales para generar sitios estáticos más rápido que recrear cada página después de que se realiza cada cambio en los archivos de entrada.
  • Hyde (código fuente) comenzó como una reescritura de Python del popular software basado en Ruby
    Generador de sitios estáticos Jekyll. Hoy en día, el proyecto ha superado esos orígenes del «clon Jekyll». Hyde admite Jinja, así como otros lenguajes de plantillas y pone más énfasis en los metadatos dentro de los archivos de marcado para instruir al generador sobre cómo producir los archivos de salida. Revisar la Sitios web con tecnología Hyde página para ver ejemplos en vivo creados con Hyde.
  • Grow SDK (código fuente) utiliza proyectos, conocidos como pods, que contienen una estructura de directorio y archivos específicos para que se pueda generar el sitio. El proyecto permanece en la fase «experimental».
  • Complejidad (código fuente) es un generador de sitios para usuarios a los que les gusta trabajar en HTML. Utiliza HTML para crear plantillas, pero tiene algunas funciones de Jinja para la herencia. Funciona con Python 2.6+, 3.3+ y PyPy.
  • Cactuscódigo fuente) utiliza el motor de plantillas Django que se creó originalmente teniendo en cuenta a los diseñadores de front-end. Funciona con Python 2.xy 3.x.

Ejemplos de generador de sitios estáticos Python de código abierto

Recursos del generador de sitios estáticos

Los generadores de sitios estáticos se pueden implementar en cualquier lenguaje de programación. Los siguientes recursos son generales para cualquier ecosistema de programación o proporcionan un ángulo único sobre cómo usar un generador de sitios estáticos.

Recursos de implementación de sitios estáticos

La implementación de un sitio estático es mucho menos complicada que la implementación de una aplicación web tradicional, pero aún necesita alojar los archivos en algún lugar accesible. También deberá configurar DNS para apuntar un nombre de dominio a su sitio, así como proporcionar soporte HTTPS. Estas guías describen varias formas de manejar la implementación del sitio estático.

  • Alojamiento de sitios estáticos con S3 y Cloudflare muestra cómo configurar un bucket de S3 con Cloudflare al frente como una CDN que sirve el contenido con HTTPS. Debería poder lograr aproximadamente la misma situación con Amazon Cloudfront, pero como usuario de Cloudflare me gusta su servicio para estas configuraciones de sitios estáticos.
  • Google Cloud proporciona un tutorial sobre cómo usarlos para aloja tu sitio estático. Tenga en cuenta que actualmente no puede usar HTTPS en los servidores de Google Storage, lo cual es una desventaja importante.
  • Scar es una herramienta de código abierto para facilitar las implementaciones de sitios estáticos y las redespliegues a Amazon Web Services.
  • Implementar un blog estático con integración continua utiliza un sitio generado por Hugo (un generador de sitios estáticos basado en Golang) como ejemplo, pero las instrucciones se pueden usar fácilmente para implementar una salida del generador de sitios estáticos basado en Python también.
  • Cómo crear un sitio web estático de AWS S3 con SSL explica la configuración necesaria para utilizar SSL para HTTPS en un sitio estático alojado en AWS.
  • Alojamiento de su sitio estático con AWS S3, Route 53 y CloudFront es otro tutorial sólido que utiliza la pila de AWS para implementar un sitio alojado globalmente.
  • Por qué su sitio web estático necesita HTTPS muestra toda la actividad maliciosa que pueden causar los malos actores si no usa HTTPS como parte de la implementación de su sitio estático. Hay pocas excusas para tener un sitio inseguro sin HTTPS requerido en el mundo actual de certificados Let’s Encrypt gratuitos.
  • ¿Cómo construir un sitio web de baja tecnología? lleva las implementaciones de sitios estáticos al extremo. El sitio sirvió con energía solar y configuración de hardware personalizada. Esta es una lectura excelente, aunque no resultará ni remotamente práctica para la mayoría de las organizaciones.

¿Qué más quieres aprender sobre el desarrollo web de Python?

¿Necesitas ayuda para revisar el código de tu proyecto?



Esta entrada tiene 0 comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Volver arriba