CFScript - CFScript
CFScript este o extensie a CFML pe platforma ColdFusion. CFScript seamănă cu JavaScript . Unii dezvoltatori ColdFusion îl preferă, deoarece are un nivel de vizualizare mai puțin vizual și tipografic decât CFML obișnuit.
cuprins
folosire
Este considerată cea mai bună practică să scrii ColdFusion Componentele și toată logica de afaceri în CFScript și să folosești CFML doar în fișiere .cfm printre HTML .
Toate codurile CFScript trebuie să fie conținute într-o pereche de etichete CFScript după cum urmează, cu excepția cazului în care se află într-o componentă pură bazată pe script ColdFusion.
<cfscript>
xParam = 115;
yParam = 200;
color = 'FFCC99';
</cfscript>
Un exemplu simplu de funcție :
<cfscript>
function Sum(a, b) {
var sum = a + b;
return sum;
}
</cfscript>
Un exemplu simplu de componentă în CFScript, care conține două funcții:
component {
public void function foo() {
WriteOutput("Method foo() called<br/>");
}
public function getString() {
var x = "hello";
return x;
}
}
ColdFusion 11, Railo 4.1+ și Lucee 4.5+ fac tot posibilul pentru a sprijini pe deplin etichetele cf în CFScript. Deși este posibil să nu existe înlocuiri directe pentru toate etichetele, este totuși posibil să obținem rezultatele unei etichete în script, dar printr-o sintaxă diferită. De exemplu, acesta este modul de a obține o interogare într-o variabilă în CFSCRIPT fără a scrie o UDF :
<cfscript>
qGetData = new Query();
qGetData .setDataSource('#APPLICATION.datasource#');
qGetData .setSQL('SELECT column1, column2 FROM table WHERE 1');
qDateResult = qGetData .Execute().getResult();
</cfscript>
Sintaxă
De la ColdFusion 8, CFScript a acceptat prescurtările de sintaxă care sunt comune în multe alte limbaje de programare, precum "++", "<=" și "+ =".
Operatori de aritmetică
| Operator | Descriere |
|---|---|
| + - * / | Aritmetica de bază: adunare, scădere, înmulțire și divizare.
În diviziune, operandul corect nu poate fi zero. |
| ++ - | Creștere și decrementare. Măriți sau micșorați variabila cu una.
Acești operatori pot fi folosiți pentru pre-incrementare sau decrementare (ca în x = ++ i), unde variabila este schimbată înainte de a fi utilizată în expresie. Ele pot fi, de asemenea, utilizate pentru post-incrementare sau decrementare (ca în x = i ++), unde valoarea este modificată după ce este utilizată în expresie. Dacă valoarea variabilei i este inițial 7, de exemplu, valoarea x în x = ++ i este 8 după evaluarea expresiei, dar în x = i ++, valoarea x este 7. În ambele cazuri, valoarea lui devin 8. Acești operatori nu pot fi folosiți cu expresii care implică funcții, ca în f (). A ++. De asemenea, puteți utiliza o expresie precum - ++ x, dar --- x și +++ x provoacă erori, deoarece semnificațiile lor sunt ambigue. Puteți utiliza parantezele pentru a grupa operatorii, ca în - (- x) sau + (++ x). |
| + = - = * = / =% = | Operatori de alocare a compusului. Variabila din dreapta este utilizată atât ca element în expresie cât și ca variabilă a rezultatului. Astfel, expresia a + = b este echivalentă cu a = a + b.
O expresie poate avea un singur operator de alocare compus. |
| + - | Aritmetica unitară: Setați semnul unui număr. |
| MOD sau% | Modulus: Returnați restul după ce un număr este împărțit de un divizor. Rezultatul are același semn ca divizorul. Valoarea din dreapta operatorului ar trebui să fie un număr întreg; utilizarea unei valori non-numerice provoacă o eroare și dacă specificați un număr real, ColdFusion ignoră partea fracționată (de exemplu, 11 MOD 4.7 este 3). |
| \ | Diviziune întreagă: Împărțiți un număr întreg la alt număr întreg. Rezultatul este și un număr întreg; de exemplu, 9 \ 4 este 2. Operandul corect nu poate fi zero |
| ^ | Exponențiere: întoarceți rezultatul unui număr ridicat la o putere (exponent). Utilizați caracterul caret (^) pentru a separa numărul de putere; de exemplu, 2 ^ 3 este 8. Numerele reale și negative sunt permise atât pentru bază, cât și pentru exponent. Cu toate acestea, orice expresie echivalentă cu un număr imaginar, astfel -1 ^ .5 are ca rezultat șirul „-1. # IND. ColdFusion nu acceptă numere imaginare sau complexe. |
Comentarii
CFScript are două forme de comentarii: o singură linie și multilină.
// This is a single-line comment.
// This is a second single-line comment.
/* This is a multiline comment.
You do not need to start each line with a comment indicator.
This line is the last line in the comment. */
Încearcă să prinzi
try {
throw(message="Oops", detail="xyz");
} catch (any e) {
WriteOutput("Error: " & e.message);
rethrow;
} finally {
WriteOutput("I run even if no error");
}
Declarație de comutare
switch (car) {
case "Nissan":
WriteOutput("I own a Nissan");
break;
case "Toyota":
WriteOutput("I own a Toyota");
break;
default:
WriteOutput("I'm exotic");
}
luping
Pentru Buclă
for (i=1; i LTE ArrayLen(array); i=i+1) {
WriteOutput(array[i]);
}
DE ÎN Buclă
struct = StructNew();
struct.one = "1";
struct.two = "2";
for (key in struct) {
WriteOutput(key);
}
//OUTPUTS onetwo
În timp ce Buclă
x = 0;
while (x LT 5) {
x = x + 1;
WriteOutput(x);
}
// Outputs: 12345
Fă / În buclă
x = 0;
do {
x = x+1;
WriteOutput(x);
} while (x LTE 0);
// Outputs: 1
Buclând peste o matcă
for (item in array) {
doSomething(item);
}
Diferențe față de JavaScript
Deși CFScript și JavaScript sunt similare, acestea au câteva diferențe cheie. Următoarea listă identifică caracteristicile CFScript care diferă de JavaScript:
- CFScript folosește expresii ColdFusion, care nu sunt un superset sau un subset de expresii JavaScript. În special, expresiile ColdFusion nu acceptă operatori bit, iar ColdFusion MOD sau% operator operează diferit de operatorul JavaScript% corespunzător: În ColdFusion, operatorul face o aritmetică întreagă și ignoră părțile fracționate. Expresiile ColdFusion acceptă, de asemenea, EQV, IMP, CONTAIN și NU CONȚINE operatorii care nu sunt suportați în JavaScript.
- Declarațiile variabile (cuvântul cheie var) sunt utilizate doar în funcțiile și thread-urile definite de utilizator.
- CFScript nu este sensibil cu majuscule.
- Toate instrucțiunile se încheie cu punct și virgulă, iar pauzele de linie din cod sunt ignorate.
- Atribuțiile sunt declarații, nu expresii și, prin urmare, nu pot fi utilizate în situații care necesită evaluarea operației de atribuire.
- Obiectele JavaScript, precum
windowșidocument, nu sunt disponibile. - Doar serverul ColdFusion procesează CFScript. Nu există CFScript din partea clientului.