4 Preprocessament de JavaScript

Vista general

Aquesta secció proveeix detalls del pretractrament per a JavaScript.

Preprocessament de JavaScript

El preprocessament de JavaScript es realitza invocant la funció JavaScript amb un únic paràmetre "valor" i un cos de funció subministrat per l'usuari. El resultat de la passa de preprocessament és el valor que retorna aquesta funció, per exemple, per fer una conversió de Fahrenheit a Celsius, l'usuari introduiria:

return (value - 32) * 5 / 9

als paràmetres de preprocessament de JavaScript, que s'embolcallen en una funció JavaScript per servidor:

function (value)
       {
          return (value - 32) * 5 / 9
       }

El paràmetre d'entrada "valor" sempre es passa com a cadena. El valor de retorn es converteix automàticament a una cadena mitjançant el mètode ToString() (si falla, l'error es retorna com a valor de cadena), amb algunes excepcions:

  • retornar un valor no definit donarà lloc a un error
  • retornar un valor nul farà que el valor d'entrada s'esborri, de la mateixa manera que el preprocessament "Esborra el valor" a l'acció "Personalitzar en cas d'error".

Els errors es poden retornar iniciant valors/objectes (normalment cadenes o objectes d'error).

Per exemple:

if (value == 0)
           throw "Zero input value"
       return 1/value

Cada script té un temps d'espera d'execució de 10 segons (depenent de l'script, el temps d'espera pot trigar més a activar-se); superar-lo retornarà un error. S'aplica un límit d'emmagatzematge dinàmic de 64 Mo.

El bytecode de la passa de preprocessament de JavaScript s'emmagatzema a la memòria cau i es reutilitza la propera vegada que s'aplica el pas. Qualsevol canvi als passos de preprocessament de l'element farà que l'script desat a la memòria cau es restableixi i es torni a compilar posteriorment.

Els errors d'execució consecutius (3 de seguits) faran que el motor es restableixi per esmorteir la possibilitat que un script trenqui l'entorn d'execució per als scripts posteriors (aquesta acció es registra amb DebugLevel a 4 i posteriors).

El preprocessament de JavaScript s'implementa amb el motor JavaScript de Duktape (https://duktape.org/).

Veieu també: Objectes JavaScript addicionals i funcions globals

Emprar macros als scripts

És possible emprar macros d'usuari al codi JavaScript. Si un script conté macros d'usuari, aquestes macros les resol el servidor/proxy abans de realitzar passes específiques de preprocessament. Tingueu en compte que quan proveu les passes de preprocessament a la interfície web, els valors de macro no s'extreuran i caldrà introduir-los manualment.

El context s'ignora quan se substitueix una macro pel seu valor. El valor de la macro s'insereix tal com és al codi, no és possible afegir una escapada addicional abans de col·locar el valor al codi JavaScript. Tingueu en compte que això pot provocar errors de JavaScript en alguns casos.

A l'exemple següent, si el valor rebut supera un valor de macro {$THRESHOLD}, es retornarà el valor de llindar (si és present):

var threshold = '{$THRESHOLD}';
       return (!isNaN(threshold) && value > threshold) ? threshold : value;