Evaluación dinámica
Si las variables de marcador de posición como ${file.meta.width} no son suficientes para implementar la lógica de tu aplicación,
también puedes usar todas las funciones de JavaScript moderno para crear instrucciones dinámicas de
Assembly. Estos scripts se ejecutarán en
nuestra infraestructura y tendrán acceso a todas las
variables de Assembly. Esto incluye los
metadatos de un archivo que Transloadit determina automáticamente, información básica sobre el entorno de ejecución de la Assembly
y
campos que puedes completar como desarrollador al crear la Assembly.
Por ejemplo, quizás quieras cambiar el tamaño de las imágenes para que cumplan con el principio de diseño de la proporción áurea:
{
"robot": "/image/resize",
"height": "${file.meta.width / (1 + Math.sqrt(5))/2}",
"resize_strategy": "crop"
}
O quizás quieras convertir a mayúsculas el nombre del archivo de salida al subirlo a S3:
{
"robot": "/s3/store",
"path": "my-folder/${file.name.toUpperCase()}"
}
Todo lo que esté dentro de ${...} se evaluará y tendrás disponibles todas las funciones del lenguaje JavaScript,
siempre que tu script no realice ninguna operación asincrónica. Por ejemplo, puedes
usar los métodos de Math,
Date o
String.
Consulta de variables
La evaluación dinámica no tiene costo cuando consiste en una consulta simple, como ${file.name} o
${file.meta.faces[0]}.
Las evaluaciones más complejas, como ${Math.max(10, file.meta.width)}, tienen un costo. Esto se
debe a que invocamos 🤖/script/run para interpretar
JavaScript, lo que hace que las evaluaciones exijan más a nuestras máquinas y sean unos milisegundos más lentas, pero, al
tener a tu disposición un lenguaje de programación completo, también sean mucho más potentes.