paint-brush
6 formas de generar documentos HTML con C# .Netpor@vitaliihoncharuk
33,836 lecturas
33,836 lecturas

6 formas de generar documentos HTML con C# .Net

por Vitalii Honcharuk3m2021/03/02
Read on Terminal Reader
Read this story w/o Javascript

Demasiado Largo; Para Leer

6 formas de generar documentos HTML con C#.Net son algunas opciones sobre cómo generar documentos HTML. RazorEngine requiere muchas dependencias y bibliotecas obsoletas. Handlebars.Net es una forma realmente fácil y rápida de generar documentos porque no utiliza ningún motor de secuencias de comandos para ejecutar una biblioteca Javascript; compila plantillas de manillares directamente en el código de bytes de IL. La forma más simple y rápida para la generación de archivos simples sería usar plantillas simples que no traerán nuevas dependencias al proyecto.
featured image - 6 formas de generar documentos HTML con C# .Net
Vitalii Honcharuk HackerNoon profile picture

Razón del artículo:

  • Generación de documentos HTML estáticos
  • Generación de cuerpo de correo electrónico

Parámetros a comparar :

  • Uso sencillo
  • Complejidad mínima
  • Dependencias mínimas

Revisé un montón de artículos y preguntas sobre desbordamiento de pila, intercambio de pila, aquí hay algunas opciones sobre cómo generar documentos HTML :

1. Motor de afeitar

Mientras revisaba el enfoque de RazorEngine , no pude ejecutarlo en .Net Core. Requiere muchas dependencias y bibliotecas obsoletas.

Sabiendo que todo el mundo evitaría las tecnologías obsoletas y las librerías de .Net Framework, creo que optar por este generador no es el camino correcto.

2. RazorLight

Después de algunas investigaciones, pude ejecutar el motor Razor usando esta biblioteca en la biblioteca "netstandard", consulte el siguiente código a continuación.

Ventajas:

  • Potente motor de generación

Contras:

  • Trae muchas bibliotecas en las dependencias.
  • La biblioteca no es oficial.
  • Una última versión de trabajo válida es 2.0.0-rc.3
  • Puede requerir el esfuerzo de DevOps para que funcione en los entornos
  • Requiere la siguiente propiedad dentro de PropertyGroup para la aplicación que usa esta biblioteca
 < PreserveCompilationContext > true </ PreserveCompilationContext >

3. Creador de contenido HTML

HtmlContentBuilder es más adecuado para la creación de HTML dinámico y requiere mucha preparación para generar una salida HTML real. No veo los beneficios de usar esta biblioteca para los objetivos actuales.

4. Aplicación web para llamar localmente y renderizar HTML en el servidor

Esta idea murió en mi cabeza desde el principio, ya que para lograrlo necesitábamos:

  • Cree un recurso separado usando aspnet core, asp.net framework u otro
  • Mantener este recurso
  • Actualizar despachador/cliente para el recurso
  • Realice llamadas a los puntos finales de este servicio localmente desde cualquier lugar que necesite para generar un documento HTML
  • Envíe los datos necesarios para la representación en el cuerpo de cada solicitud o implemente la recuperación de datos antes de generar un HTML

5. Plantillas sencillas

Aquí está el ejemplo de código con el enfoque más simple y atómico implementado en la aplicación de consola .net core:

Puntos clave:

  • No se requieren dependencias ni aplicaciones externas
  • Puede implementarse en cualquier lugar y no complicará el sistema.
  • Nada nuevo para el desarrollador de C#
  • Cada constructor de HTML es atómico y sabe qué construir y dónde colocar los datos
  • Puede tener la funcionalidad para obtener la plantilla de un archivo
  • Puede llamar a algunos constructores adicionales para obtener HTML desde allí (por ejemplo, para encabezado y pie de página)
  • Puede tener la funcionalidad para obtener HTML o CSS común de otro archivo

6. Manillar.Red

Después de todos los hallazgos decepcionantes anteriores, comencé a bloquear el uso de marcos JS para generar documentos, así es como encontré Handlebars.js pero escrito completamente en .NET .

Así que Handlebars.Net es una forma realmente fácil y rápida de generar documentos porque no utiliza ningún motor de secuencias de comandos para ejecutar una biblioteca Javascript; compila las plantillas de Handlebars directamente en el bytecode de IL . También imita la API de la biblioteca JS tanto como sea posible.

Dado que Handlebars.js tiene una gran comunidad y una larga historia, podrá encontrar respuestas a sus preguntas para crear un HTML válido.

El enlace a su repositorio de Github está aquí .

Conclusión

La forma más simple y rápida para la generación de archivos simples sería usar plantillas simples que no traerán nuevas dependencias al proyecto.

Por otro lado, a las personas que conocen Razor les puede resultar más fácil utilizar un potente motor Razor a través de RazorLight, pero puede requerir el esfuerzo de DevOps para asegurarse de que las bibliotecas dependientes estén en su lugar en los entornos. Y creo que la forma más fácil y extensible sería Handlebars.Net , que es de uso sencillo.

Además

Todos estos hallazgos se pueden aplicar no solo para generar archivos HTML, sino también para archivos XML y cualquier documento de texto sin formato.

Además, este artículo será útil para aquellos que buscan una forma de generar documentos PDF, ya que las fuentes de datos para la generación de archivos PDF pueden ser cadenas HTML. Un buen tema para explorar a continuación sería: "Cómo convertir HTML a PDF".

Imagen principal cortesía de Nathan da Silva en Unsplash.