Lightning LockerService. Qué es y como sobrevivir a su activación

Tweet about this on TwitterShare on Facebook0Share on Google+0Share on LinkedIn0Digg thisBuffer this pageEmail this to someone

Como muchos de vosotros habréis comprobado ya, LockerService es una realidad, una actualización desde la release “Summer 16” que instaura una arquitectura nueva para los componentes de Lightning.

¿Para que sirve LockerService?

Esta arquitectura encapsula nuestras funcionalidades y código en la medida en que cada componente, CSS y Javascript actúa solo sobre el mismo componente y sus hijos, y solo se podrán comunicar entre sí por eventos o por herencia de atributos o a través de componentes asegurados del propio framework. Hablando claro, Salesforce nos obliga a utilizar los “SecureObject” de JavaScript y su modo estricto, más adelante veremos qué repercusiones tendrá esta actualización en nuestros componentes.

Esto permitirá a Salesforce garantizar una mayor calidad en el desarrollo de los componentes que lo utilicen, sin embargo, esta actualización será obligatoria a partir del 2/11/2017 y no son todo ventajas. Esta nueva arquitectura no permite utilizar jQuery y todas las bibliotecas que utilicen jQuery, lo que progresivamente hará que cada vez se utilicen más las funcionalidades que ofrece Lightning, haciendo menos necesario el uso de otras bibliotecas de apoyo, esto se conseguirá llevar bien acabo cuando se reduzcan los bugs  y tengamos una versión más estable de Lightning.

Esta actualización afecta a:

  • Lightning Experience
  • Salesforce1
  • Template-based Communities
  • Standalone apps que crees (Por ejemplo, app)

Experiencias y soluciones:

En la web se han encontrado evidencias de que la versión 2.2.2. y la 2.2.4. de jQuery sí que están permitidas, sin embargo, en las últimas pruebas que hemos realizado la biblioteca presenta errores de seguridad o directamente, el objeto window de JavaScript no se considera seguro y todas las funcionalidades que jQuery utilice sobre este objeto no funcionarán correctamente. Otro síntoma más de esto es que directamente no cargue la biblioteca como static resource.

Para el trabajo de desarrollador, el no poder utilizar la grandísima ayuda que ofrece jQuery es un tema serio a tener en cuenta, ya que hay que buscar alternativas con código JavaScript para realizar las mismas funcionalidades, y de cara a la planificación, descartar aquellas bibliotecas que puedan utilizar jQuery. Así que antes de intentar utilizar una biblioteca específica es necesario asegurarnos de que LockerService nos permita utilizarla.

Podréis ver en este enlace lo mencionado anteriormente: Bibliotecas externas con Lightning

Lo que significa que muy posiblemente si tienes componentes de Lightning que utilizaban JQuery o accedían a todo el DOM sin restricciones, es recomendable que eches un vistazo a tu código y lo revises bien, ya que seguramente será necesario modificarlo sin nuestro querido “$”

Muy útil…

De todos modos, es necesario añadir que Salesforce nos ofrece la herramienta Salesforce Lightning CLI, una aplicación de fácil instalación que nos ayudará a detectar las incidencias que habrá en nuestro código con LockerService activado, una buena manera de revisar nuestro trabajo: Salesforce Lightning CLI

En definitiva, con esta arquitectura también se pretende hacer que los desarrolladores utilicen más el framework de aura y Lightning, sin tener que depender de bibliotecas externas como jQuery. Sin embargo, creo que forzar esta actualización cuando hay miles de proyectos que utilizaban diferentes versiones de jQuery (y otras bibliotecas) que se verán comprometidos, hace que sea una medida brusca pero necesaria.  Os animamos a todos a desarrollar en el lado de Lightning, pues ha llegado, y es para quedarse.

Que tengáis un buen día!

, , , , , , , , , , ,