CFScript | ColdFusion İşaretleme Dili
CFScript , ColdFusion platformunda CFML’nin bir uzantısıdır . CFScript, JavaScript‘e benzer . Bazı ColdFusion geliştiricileri , sıradan CFML’den daha az görsel ve tipografik ek yüke sahip olduğu için bunu tercih ediyor.
Kullanım
ColdFusion Bileşenlerini ve tüm iş mantığını CFScript’te yazmak ve CFML’yi HTML arasında yalnızca .cfm dosyalarında kullanmak en iyi uygulama olarak kabul edilir.
Saf komut dosyası tabanlı bir ColdFusion Bileşeni içinde olmadığı sürece, tüm CFScript kodu aşağıdaki gibi bir CFScript etiket çifti içinde yer almalıdır:
xParam = 115;
yParam = 200;
color = 'FFCC99';
cfset ve cfftp gibi diğer etiketlerin hiçbir zaman gövdesi yoktur; gerekli tüm bilgiler, aşağıdaki örnekte olduğu gibi, etiket nitelikleri (ad/değer çiftleri) biçiminde başlangıç (<) karakteri ile bitiş (>) karakteri arasında gider. Etiketlerin bir gövdeye sahip olmaması yasalsa, ilk örnekte olduğu gibi onları kapatmadan bırakmak sözdizimsel olarak kabul edilebilir, ancak birçok CFML geliştiricisi, ikinci örnekte olduğu gibi (tartışmalı) kodu daha okunaklı hale getirmek için etiketleri kendi kendine kapatmayı seçiyor.
Basit bir fonksiyon örneği:
function Sum(a, b) {
var sum = a + b;
return sum;
}
CFScript’te iki işlev içeren basit bir bileşen örneği:
component {
public void function foo() {
WriteOutput("Method foo() called
");
}
public function getString() {
var x = "hello";
return x;
}
}
ColdFusion 11, Railo 4.1+ ve Lucee 4.5+ , CFScript’te cf etiketlerini tam olarak desteklemek için ellerinden gelenin en iyisini yapar. Tüm etiketler için doğrudan ikameler olmasa da, bir etiketin sonuçlarını komut dosyasında, ancak farklı bir sözdizimi yoluyla elde etmek genellikle mümkündür. Örneğin, UDF yazmadan CFSCRIPT’de bir değişkene sorgu şu şekilde alınır :
qGetData = new Query();
qGetData .setDataSource('#APPLICATION.datasource#');
qGetData .setSQL('SELECT column1, column2 FROM table WHERE 1');
qDateResult = qGetData .Execute().getResult();
Sözdizimi (Syntax)
ColdFusion 8’den bu yana CFScript, “++”, “<=” ve “+=” gibi diğer birçok programlama dilinde yaygın olan sözdizimi kısaltmalarını desteklemektedir.
Özel etiketler (Custom tags)
CFScript’te iki tür yorum vardır: tek satırlı ve çok satırlı.
// Bu tek satırlık bir yorumdur.
// Bu ikinci bir tek satırlık yorumdur.
/* Bu çok satırlı bir yorumdur.
Her satıra bir yorum göstergesiyle başlamanız gerekmez.
Bu satır yorumdaki son satırdır. */
Try / Catch
try {
throw(message="Oops", detail="xyz");
} catch (any e) {
WriteOutput("Error: " & e.message);
rethrow;
} finally {
WriteOutput("I run even if no error");
}
Switch statement
switch (car) {
case "Nissan":
WriteOutput("I own a Nissan");
break;
case "Toyota":
WriteOutput("I own a Toyota");
break;
default:
WriteOutput("I'm exotic");
}
Looping
For Loop
for (i=1; i LTE ArrayLen(array); i=i+1) {
WriteOutput(array[i]);
}
Looping
FOR IN Loop
struct = StructNew();
struct.one = "1";
struct.two = "2";
for (key in struct) {
WriteOutput(key);
}
//OUTPUTS onetwo
Looping
While Loop
x = 0;
while (x LT 5) {
x = x + 1;
WriteOutput(x);
}
// Outputs: 12345
Looping
Do / While Loop
x = 0;
do {
x = x+1;
WriteOutput(x);
} while (x LTE 0);
// Outputs: 1
Looping over an Array
for (item in array) {
doSomething(item);
}
JavaScript'ten farklılıkları
CFScript ve JavaScript benzer olsa da, aralarında birkaç önemli fark vardır. Aşağıdaki liste, JavaScript’ten farklı CFScript özelliklerini tanımlar:
- CFScript , JavaScript ifadelerinin bir üst kümesi veya alt kümesi olmayan ColdFusion ifadesini kullanır. Özellikle, ColdFusion ifadeleri bitsel operatörleri desteklemez ve ColdFusion MOD veya % operatörü, karşılık gelen JavaScript % operatöründen farklı çalışır: ColdFusion’da operatör tamsayı aritmetiği yapar ve kesirli parçaları yok sayar. ColdFusion ifadeleri ayrıca JavaScript’te desteklenmeyen EQV, IMP, İÇERİR ve İÇERMEZ operatörlerini de destekler.
- Değişken bildirimleri (var anahtar sözcüğü) yalnızca kullanıcı tanımlı işlevlerde ve dizilerde kullanılır.
- CFScript büyük/küçük harf duyarlı değildir.
- Tüm ifadeler noktalı virgülle biter ve koddaki satır sonları yok sayılır.
- Atamalar ifadeler değil, ifadelerdir ve bu nedenle atama işleminin değerlendirilmesini gerektiren durumlarda kullanılamaz.
- windowve gibi JavaScript nesneleri document kullanılamaz.
- Yalnızca ColdFusion sunucusu CFScript’i işler. İstemci tarafı CFScript yok.