Aquesta secci¨® proveeix detalls del pretractrament per a 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:
als par¨¤metres de preprocessament de JavaScript, que s'embolcallen en una funci¨® JavaScript per servidor:
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:
Els errors es poden retornar iniciant valors/objectes (normalment cadenes o objectes d'error).
Per exemple:
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 ().
Veieu tamb¨¦: Objectes JavaScript addicionals i funcions globals
?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):