CFScript | ColdFusion İşaretleme Dili

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:

				
					<cfscript>
xParam = 115;
yParam = 200;
color = 'FFCC99';
</cfscript>
				
			

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.

				
					<cfset value = "Hello">
<cfset value = "Hello" />
				
			

Basit bir fonksiyon örneği:

				
					<cfscript>
function Sum(a, b) {
var sum = a + b;
return sum;
}
</cfscript>
				
			

CFScript’te iki işlev içeren basit bir bileşen örneği:

				
					component {
public void function foo() {
WriteOutput("Method foo() called<br/>");
}

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 :

				
					<cfscript>
qGetData = new Query();
qGetData .setDataSource('#APPLICATION.datasource#');
qGetData .setSQL('SELECT column1, column2 FROM table WHERE 1');
qDateResult = qGetData .Execute().getResult();
</cfscript>
				
			

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.