javascript
像JSP、ASP.NET、ColdFusion這樣的Web開發平台提供了大量強大伺服器端開發選項。但是,它們並沒有否定用JavaScript進行用戶端的Web開發。
JavaScript同時提供了邏輯和使用者介面功能,減輕了伺服器端處理的負載。儘管我們已經使用它有多年了,但是它的開發工具還是有點落後。現在就讓我們仔細看看JavaScript的開發和調試選項。
開發工具
如果你習慣使用諸如Visual Studio或者NetBeans這樣的整合式開發環境(IDE),那麼你就一定很熟悉各種調試選項,包括代碼單步調試、設定斷點,以及監視變數等。在監視代碼執行或者追蹤錯誤時,這些都是不可或缺的工具。不幸的是,這些工具在JavaScript開發人員中並不是十分普及。
調試
應用程式開發中的一個重要步驟是追蹤指令碼或者代碼中的錯誤。這包括隔離程式碼片段,一行一行地分析它們。在使用JavaScript的時候,你可以使用在開發工具大發展之前用過的方法。
在這種情況下,最常用的一種JavaScript函數是警報資訊框。你可以用它來檢查儲存在變數/對象裡的值,並與迴圈一起使用來查看對象的內容。
舉個例子,列表A裡的HTML代碼沒有按照預期的效果執行:
以下是引用片段:
<html><head>
<title>JS Test</title>
<script language="JavaScript">
function validate() {
var doc = document.forms[0];
var flag = true;
if (doc.fullName.value = '')
flag = false;
if (doc.contactNumber.value = '')
flag = false;
if (flag) doc.submit()
else alert('Enter values before submitting.');
}
</script></head>
<body>
<form id="frmTest">
Name: <input name="fullName" type="text" /><br />
Address: <input name="contactNumber" type="text" /><br />
<input type="button" value="Submit" />
</form></body></html> 按理說,它會在表單被真的提交之前驗證在兩個文字欄位裡輸入的值。
這個表單總是不管輸入的值是什麼就被提交,所以我們可以使用警報語句在指令碼執行期間檢查值的內容。列表B裡的指令碼就使用了警報語句來監視變數的值:
以下是引用片段:
<html><head>
<title>JS Test</title>
<script language="JavaScript">
function validate() {
var doc = document.forms[0];
var flag = true;
alert('Script starting, flag = ' + flag);
alert('Script starting, Full name = ' + doc.fullName.value);
alert('Script starting, Contact number = ' + doc.contactNumber.value);
if (doc.fullName.value = '') {
alert('First check, Full Name is empty.');
flag = false;
}
if (doc.contactNumber.value = '') {
alert('Second check, Contact Number is empty.');
flag = false;
}
if (flag) {
alert('Validation successful, document will be submitted.');
doc.submit()
} else {
alert('Enter values before submitting.');
} }
</script></head>
<body><form id="frmTest">
Name: <input name="fullName" type="text" /><br />
Address: <input name="contactNumber" type="text" /><br />
<input type="button" value="Submit" />
</form></body></html> 如果你執行這段指令碼,很明顯if語句總是為“真”。如果更加仔細地看一看,你會注意到這裡使用的是分配操作(=)而不是等於(==)。經過這兩個改變,指令碼就會按預期的結果執行了。
這個錯誤很常見,尤其是當開發人員在諸如VB.NET和其他句法上存在差異的語言之間輪流轉換時。我們現在快速探索更多幾個常見的錯誤:
- JavaScript對大小寫敏感,所以變數名、JavaScript語句,以及類似的內容必須使用正確的格式/大小寫。所以要按照統一的方式給你的對象、變數和函數命名。
- 在代碼中使用逗號。除了for語句外,JavaScript把逗號用作變數的分隔字元。
- JavaScript要用大括弧來定義一段語句。
- 字串必須放在引號(單引號或者雙引號)之間。
用alert函數進行調試對於開發人員來說很常見,但是現在有很多其他的選項來監視指令碼,包括瀏覽器和IDE。
雖然Internet Explorer是最流行的瀏覽器,但是它對JavaScript調試的支援還顯得相當初級。如果發生JavaScript錯誤,會有一個錯誤(資訊)視窗顯示。(大多數JavaScript錯誤的)錯誤訊息還遠不能讓人滿意,但是它們至少能夠讓你知道發生了什麼錯誤。這些訊息包括一個行號(儘管它從來都沒有與真正的錯誤行相對應,但是它確實讓你離錯誤行比較近了)。
此外,它還能夠調用外部應用程式進行調試(比如Visual Studio,如果安裝了的話)或者檢查代碼。注意:你可以從“工具|選項(Tools | Options)”裡啟動JavaScript的調試功能。
基於Mozilla的瀏覽器也提供了選擇的機會。Firefox帶有一個JavaScript控制台,用來顯示當前頁面上指令碼的(錯誤、警告、資訊等)訊息。它會明確地顯示發生錯誤的代碼,並用箭頭指示哪裡出現了錯誤。
Netscape和Opera也帶有JavaScript控制台。有些瀏覽器還有用於調試的專用句法。一個典型的例子是Opera,它支援將輸出送到控制台的opera.postError()命令。Safari瀏覽器的“調試(Debug)”菜單讓你可以啟動JavaScript錯誤的記錄,這樣它們就會出現在控制台裡。
IDE選項
你還可以通過自己習慣的IDE調試基於瀏覽器的應用程式。Visual Studio就是這樣一個例子,它能夠讓你通過它調試Internet Explorer應用程式。你必須在Web伺服器(IIS)啟動調試功能,這要按照下面的步驟進行:
- 在偵錯模式(Debug|Start)啟動Web應用程式。
- 應用程式在一個瀏覽器視窗裡啟動。返回到Visual Studio用戶端。選擇“調試|視窗|運行文檔(Debug | Window | Running Documents)”。
- 當前啟動並執行應用程式會出現在“運行文檔”視窗裡。你可以選擇Web表單,在JavaScript代碼裡設定斷點。
- 返回Web表單,使用應用程式;執行會在插入的任何JavaScript斷點處停止。
Visual Studio不是唯一支援調試的IDE。例如,Dreamweaver有它自己的JavaScript調試器,讓你調試句法和邏輯錯誤、設定斷點、監視變數、進行代碼單步調試。它的一個非常好的特性是會用簡單幾句話解釋JavaScript的錯誤。
你還可以使用單獨的JavaScript調試工具。一個典型的例子是SplineTech的JavaScript HTML Debugger,它是一個功能完備的開發工具。如果你使用Eclipse IDE,那麼JSEclipse就是Eclipse的一個用於JavaScript開發的外掛程式。
用於調試的其他語言
JavaScript已經發展成為進行Web用戶端編程的標準語言。它有大量的語言資源,但是對開發的支援並不完備。大多數使用JavaScript的開發人員更傾向於用原來的方法進行調試,但是現在有很多工具來減輕測試和調試的負擔。