若要一再重複使用多個函數,可以先將這些函數的定義寫在函數定義檔,然後再將此檔案導入 asp 網頁。
第一種方式,是使用 Server-side include (SSI) 的方式將函數的定義加入網頁,其格式如下:
<!--#include file="filename"-->
其中 filename 代表檔案的實體位置,可加上相對或絕對路徑。另一種方式是:
<!--#include virtual="URLpath"-->
其中 URLpath 代表檔案的網址,可以是相對或絕對的網址。
換句話說,我們可將函數的定義寫在一個檔案中,若某一個網頁要用到這個函數,只要將相對應的檔案利用 SSI 的方式來加入網頁即可。
在下列範例中,我們分別使用 client-side include 和 server-side include 來加入一些與時間相關的函數:
上述範例的原始檔如下:
其中,使用 client-side include 所加入的檔案是 timeFunctionRunAtClient.js:
而使用 server-side include 所加入的檔案是 timeFunctionRunAtServer.inc:
這兩個檔案的內容幾乎一樣,唯一不同的是,timeFunctionRunAtServer.inc 在函數前後各加上了 <% 和 %>。
在使用 SSI 時,有幾點要特別注意:
- SSI 並不是 ASP 的一部份,它是透過 IIS/PWS 的 ssinc.dll 來處理,而 ASP 則是由 asp.dll 來處理,此項資訊可由 IIS 的「Interne服務管理員/預設的Web站台/內容/主目錄/應用程式設定/設定」來檢視之。
- SSI 可以是巢狀的(Nested),亦即被包含的檔案仍可再包含其他檔案。
- SSI 是在 ASP 之前執行,因此不可使用 ASP 來產生被包含的檔案名稱。
- SSI 不可寫在 <% ... %> 的標記之內。
- 被 SSI 所導入的檔案,也可以包含 HTML 的標籤。
如果希望將某些常用的函數放在一個檔案,並讓客戶端及伺服器端都能執行這些函數,此時我們就可以使用第二種方式來讀入此函數定義檔,此方法很像 JavaScript 在用戶端所使用的 client-side include,其命令格式如下:
<script language=jscript runat=server src=timeFunction.js></script>
請見下列範例:
上述範例的原始檔如下:
在上述範例中,無論是 client-side include 或是 server-side include,所加入的函數定義檔案都是 timeFunction.js,其內容如下:
因此我們可以寫一個函數定義檔,同時在伺服器和用戶端都使用此檔案,如此就可以達到「一箭雙鵰」(寫一份函數在伺服器和用戶端共用)的最高境界!
JScript 程式設計與應用:用於伺服器端的 ASP 環境