Mostrando las entradas con la etiqueta MVC 5. Mostrar todas las entradas
Mostrando las entradas con la etiqueta MVC 5. Mostrar todas las entradas

martes, 24 de diciembre de 2019

ASP.NET MVC - Mis librerías Javascript favoritas

Cuando necesito iniciar un proyecto desde cero, hay ciertas librerías que incluyo casi por default en el mismo ya que me proporcionan funcionalidad que considero básica.

A continuación te presento la lista de librerías que con toda seguridad verías en mis proyectos, al menos en los que involucren ASP.NET MVC:
  • jQuery y bootstrap: ¿hay algo que explicar? =)
  • bootbox: cuadros de diálogo, alerta, prompt, input, etc. Al igual que con otras librerías, es necesario poner atención a las versiones, por ejemplo, cuando instalé el Nuget package "bootbox" tenía instalado el Bootstrap4 y sucedió que los cuadros de diálogo de bootbox aparecían con el título deforme. Revisé un poco la documentación y me dí cuenta de que estaba usando un bootbox que requería la versión 3 de bootstrap. Fue necesario buscar un paquete de bootbox diferente: Bootbox.JS
  • toastr: notificaciones "non blocking", mensajes que desaparecen solos.
  • bootstrap-select: dropdown list estilizadas, con opciones adicionales como checkboxes y búsqueda entre los elementos disponibles.
    • requiere jQuery, bootstrap, popper.js
  • jquery-editable-select: dropdown lists estilizadas con opciones adicionales pero menor funcionalidad que el anterior.
  • jquery.datatables: para la creación y estilizado de tablas de datos con funcionalidades como exportado a excel, pdf, búsqueda entre los elementos de la tabla, ordenamiento, paginación
    • datatables.bootstrap: para estilizar los datatables con bootstrap
    • datatables.buttons: extensión para datatables, que añade la capacidad de añadir botones de excel, pdf, etc.
      • jszip: necesario para las opciones de exportado a excel
      • datatables/buttons.html5: necesario para uso de los botones en HTML5 (existe otra librería para botones Flash para el caso de navegadores viejos)
    • NOTA: si es necesario utilizar más de un plugin/componente de jQuery datatables, tienen una página de descarga donde puedes indicar qué necesitas y te genera opciones consolidadas para obtenerlo de un CDN, un paquete para descargar, NPM, Yarn o Bower.
  • js.cookie: manejo de cookies (sin dolores de cabeza).

¿Cómo las añado al proyecto?


En el caso de ASP.NET, Algunas de ellas tienen su correspondiente paquete Nuget, tales como:
  • jQuery
  • Bootstrap: normalmente instala también jQuery y popper.js
  • Bootbox
  • Toastr
  • jQuery.DataTables: incluye por default varios archivos como datatables.bootstrap.js y datatables.buttons y buttons.html5, pero no incluye jsZip.
  • jsZip
¿En qué orden las añado? en el mismo orden que se encuentra la lista anterior dado que algunas de ellas tienen dependencia con otras, por ejemplo, Bootbox requiere bootstrap y jQuery mientras que Bootstrap necesita jQuery.

Para proyectos de Angular y similares, las añado manualmente o configuro el bundle si la plataforma lo permite.


Bundling en ASP.NET MVC 5

Por lo general, el proyecto tengo los siguientes bundles:
  • ScriptBundle:
    • jquery: aquí se encuentra solo el jQuery
    • jQueryVal: añadido por ASP.NET
    • modernizr: añadido por ASP.NET
    • bootstrap: contiene todos los archivos de Javascript que son default o casi default en todas las páginas de la aplicación, incluso algunos que no sean necesarios en todas las páginas pero que no sean demasiado grandes. Por ejemplo: bootstrap.js, respond.js, bootbox.js, toastr.js, bootstrap-select.js, jquery.datatables.min.js, datatables.bootstrap.js, datatables.buttons.min.js, js.cookie.js y algún script propio de mi aplicación.
    • datatables_excel_export: dado que no todas las pantallas exportan datos excel, aquí agrupo dos archivos, jsZip.js y buttons.html5.js.
  • StyleBundle:
    • css: aquí añado todos los css necesarios por los componentes de la lista anterior, y claro, los míos propios: bootstrap.css, bootstrap-select.css, toastr.css, jquery.datatables.css, etc, etc.

Para Finalizar

Lo más importante para mí acerca de este post es que me digas ¿Cuáles utilizas tu, porqué y para qué?

Saludos!