應用總結:ASP編程心得回放

來源:互聯網
上載者:User
好一門程式設計語言有兩個條件是必不可少的,一是理論與實踐結合,在實際常式去驗認證本上的理論能加深你對理論的理解;二是學會總結,把學習、運用中的心得體會記下來,當成一種經驗或者教訓加以提煉並在日後的應用中加以改進,一定能提高你對這門程式設計語言的認識。以下是筆者在學習與運用ASP編程中的兩點經驗,希望能對大家有所協助。

  ASP頁面內VBScript和JScript的互動

  ASP具備管理不同語言指令碼程式的能力,能夠自動調用合適的指令碼引擎以解釋指令碼代碼和執行內建函數。ASP開發環境提供了兩種指令碼引擎,即VBScript(預設)和JScript。不過,開發人員並沒有被限制於只能使用這兩種語言,只要能夠提供合適的ActiveX指令碼引擎就能使用任何指令碼語言。

  指令碼語言的選擇往往基於許多不同原因:它可能是開發人員最為熟悉的語言,可能是對給定工程來說能夠提供最多特色支援的,也有可能是最具效率的。不同的環境和要求使得我們在選擇指令碼語言時注重不同的因素,同時也使得我們在某些時候面臨選定的指令碼語言不能直接提供其它語言固有的函數這一問題,或某個指令碼已經寫成但用的卻是另外一種指令碼語言。

  此時應該怎麼辦?是否需要用當前所用的指令碼語言重寫這些指令碼?或者說,是否有可能在一種指令碼語言中調用其它指令碼語言的內建函數?本文要說明的就是在ASP應用中如何讓VBScript指令碼和JScript指令碼互動以最大限度地獲得兩種指令碼語言的特色支援。

   一、VBScript和JScript的內建函數

  在VBScript和JScript中,有大量的內建函數功能是相同或類似的。然而,在一種指令碼語言中內建的函數並非總是在另外一種指令碼語言中也有對應的函數。例如,VBScript提供了許多用於操作字串和格式化資料的函數,這些函數在JScript中並不存在。這些函數包括StrReverse()、Filter()以及FormatCurrency()等。在另一方面,JScript所提供的用於管理數組、字串編碼等的函數在VBScript中也沒有定義,如join()、reverse()、pow()、位操作、escape()和unescape()等。

  那麼,如果在JScript程式中需要一個VBscript函數該怎麼辦呢?

二、異種指令碼的互相調用

  如果需要在JScript指令碼中調用一個VBScript中內建的函數,則應該寫一個VBScript使用者定義函數(在這裡調用VBScript內建函數),然後在JScript指令碼中象調用公用JScript函數一樣調用這個使用者定義函數。

  例如,如果要調用的VBSCript內建函數是FormatCurrency(),則可以聲明如下自訂函數:

 < SCRIPT LANGUAGE="VBSCRIPT" RUNAT="SERVER">
 Function FormatValue(Value)
  FormatValue = FormatCurrency(Value)
 End Function
 < /SCRIPT>


  接下來在JScript代碼中就可以象普通JScript函數一樣調用FormatValue()了。用類似的方法也可以實現VBScript代碼調用JScript函數。

  應用同樣的規則,我們可以在任何指令碼內調用任何使用者定義函數。不過,從JScript指令碼內調用一個不帶參數的VBScript過程(Sub)時應略加註意,此時在JScript中應該象調用一個不帶參數的JScript函數一樣調用它,如用foo()調用VBScript Sub foo過程。

   三、資料共用

  在某些情形下混合運用VBScript和JScript函數是非常有用的,但在不同語言指令碼之間共用資料也可能很有用。實現這種共用的方法很簡單:不管使用的是什麼語言,只要是在頁面級聲明的變數就可以任意引用。

  對象的使用方法也相似,可以任意選用合適的語言讀取、修改屬性或調用對象的方法。當然給定對象的屬性和方法是由建立該對象執行個體的語言所定義的。正如上例VBScript的程序呼叫,當從JScript中調用一個不帶參數的VBScript對象的方法時,其調用方法也遵從JScript的調用規則,反之亦然。

   四、數組管理

  數組共用問題稍微複雜一點。雖然數組也象其它變數一樣可以在不同語言指令碼之間共用,但必須注意相容方面的問題。

VBScript數組在JScript下可以用VBScript的符號引用,即用myArray(2)引用數組元素而不是JScript的數組元素引用符號myArray[2]。此外,還可以使用一個特殊的JScript對象——VBArray對象將VBScript數群組轉換為JScript數組。下面的代碼從VBScript數組myVBArray建立JScript數組myJSArray:

 var Temp = new VBArray(myVBArray)
 var myJSArray
 myJSArray = Temp.toArray()


  上述代碼首先建立一個臨時的VBArray對象,然後使用它的toArray()方法將自己轉換為JScript數組。此後就可以象普通JScript數組一樣使用myJSArray,如myJSArray[1]。但應當注意的是,toArray()方法將把一個多維的VBArray轉換為一維的JScript數組。

  從VBScript中引用JScript數組更為複雜。雖然在VBScript中我們可以直接存取JScript數組相關的方法和屬性,但沒有直接存取JScript數組的單個元素的方法。也就是說,我們可以在VBScript指令碼中讀取JScript數組的長度屬性,如下所示:

   x = myJSArray.length


  但無法直接讀取該數組的單個元素,下面的VBScript代碼是不正確的:

   x = myJSArray(3)


  解決該問題的一個可行的方法是執行一個轉換過程,如下面的代碼所示,此處假定VBScript是預設的指令碼語言:

< %
  Dim Temp
  Dim myVBArray
  Temp = myJSArray.join(", ")
  myVBArray = Split(Temp, ", ")
%>


  此處的JScript join()方法將數組myJSArray元素轉換到一個以逗號為分割符的字串,VBScript Split()函數將字串轉換為VBScript數組。注意這裡我們是在VBScript環境下調用JScript的join方法。依照此例,我們可以通過自訂VBScript函數來類比JScript的VBArray對象的toArray()方法以實現JScript數組到VBScript數組的轉換。

用模板建立動態ASP頁

  對於模板,我想大家可能都有一些概念,在word中很多模板,設計好了大概的版面,你只要用你自己的話填充那些佔位字元就好了。這兒的模板大概也就是這個意思,頁面中相對穩定的部分固定下來,其他的部分根不同的情況在輸入不同的內容。其實在DreamWeaver中也有模板的功能,不過那個靜態,只能手動填充內容,而這兒講的是動態自動的內容填充。

  首先,我先來解釋一下為什麼要用到模板檔案。有時候,模板能夠帶給你對網頁功能和布局更為完整的概念。當你看到Word的模板格式之後,就知道最後版面是個什麼樣子的了,在這兒也是如此。例如,你可以保留ASP語句,而使用不同的模板來建立不同的頁面風格。

  這樣,你就不用為每種不同風格的網頁分別來寫不同的ASP頁面了,這顯然可以為我們節省很多時間和精力。而且,模板檔案能夠讓你更容易的瀏覽頁面代碼,不用擔心ASP和HTML的混雜搞的你頭昏腦脹。你可以只用把注意力集中在HTML上,而完全不用去管ASP了。再有就是,摸板很簡單,你絕對很快就能搞懂搞定。在這篇文章中,將會用到一個資料庫——一個用的很廣泛的僱員表。包括僱員ID,姓名,照片,以及工作摘要和照片的註腳。下面是這個Access資料庫的結構:

檔案名稱 - myDatabase.mdb
表名 - Employees
ID
自動計數(Autonumber)
FullName
文本 - 最多100個字元
PicURL
文本 - 最多255個字元
Duties
注釋類型
PicCaption
文本 - 最多50個字元


  一個很簡單的資料庫,是吧。當然你可以按要求來擴充它,那就是你自己的事了。我假設你已瞭解資料庫的基本操作,這樣我不用在這上面花太多的筆墨,其實這兒的代碼都是很簡單的,只要你知道一些基本的東西,就能把它看懂。建立了資料庫之後,我們可以開始建立模板檔案了。這個檔案是每個頁面的骨架。我沒有用到表格,那樣有些麻煩,而我很懶,而且,也不用加入,標籤,因為那是要加在ASP頁面中的。所以到最後,它的樣子就是這樣了:

Full Name:
%name% < br>Description of duties:

%duties%

This picture was taken: %date%


Employee ID: %empID%


  就是這樣了!這就是一個簡單的模板。把它存為template.tmp,在後面的ASP頁面中將要引用到它。要注意的是:我們可以在模板中加入各種HTML標籤,你完全可以在摸版中定義好網頁的結構和樣式,就像實際寫一個網頁一樣,只是要把關鍵的地方標出來——注意到了那些%圍著的東西了嗎?那就是模板的精髓了。或許你已經注意到,那些%圍著的是和資料庫中的欄位意義對應的。看看下面的ASP代碼,是如何讀入模板和資料庫檔案,把他們揉和在一起,然後輸出我們想要的HTML頁面。

  這就是所有的代碼了,很簡單,不是嗎?它所作的只是開啟模板檔案,按順序讀入每一行,然後用沖資料庫中讀入的實際的欄位值來代替模版中那些%img%,%name%標記。而且,它還把在“Duties”欄位內大段文本中的斷行符號解釋成HTML的斷行符號 ,這樣就不至於打亂整個的排版格式了。怎麼樣?輕鬆搞定吧。模板在某些應用上真的是可以發揮奇效,省時省力。理論上,你還可以修改這段代碼,用FileSystemObject來讀寫文本,這樣資料就不一定要儲存在資料庫中了。在一些應用中,比如即時的新聞發布,這樣也許更為方便一些。



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。