Áú»¢¶Ä²©

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 ().

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;