台灣最大程式設計社群網站
線上人數
148
 
會員總數:245463
討論主題:189220
歡迎您免費加入會員
討論區列表 >> 專欄文章 >> include 的詳細用法
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
include 的詳細用法
價值 : 0 QP  點閱數:2449 回應數:0

樓主

站務人員 站長
門外漢
0 1580
542 9
發送站內信

捐贈 VP 給 站務人員
包含檔案
利用伺服器端包含指令,可以在 Web 伺服器還沒處理檔案之前,把其他檔案的內容插入要傳給用戶端的檔案內。ASP 僅支援此種機制中的 #include 指令。請用以下語法將另一個檔案插入 .asp 檔案內:

<!-- #include virtual | file ="檔名" -->
以上語法中的 virtual 與 file 兩個關鍵字表示用來納入檔案的路徑種類,檔名則是要引入的檔案的路徑與檔案名稱。

包含檔案本身並不一定要用特殊的副檔名,但一般而言,將包含檔案的副檔名設定成 .inc,以便與其他種類的檔案區分,是比較好的程式設計風格。

使用 Virtual 關鍵字
Virtual 關鍵字的用途是設定虛擬目錄開頭的路徑。 舉例來說,假設虛擬目錄 /Myap 內有一個 Footer.inc 檔案,則在檔案中加上以下這行程式,便可將 Footer.inc 的內容納進來:

<!-- #include virtual ="/myapp/footer.inc" -->
使用 File 關鍵字
File 關鍵字的用途是設定相對路徑。 也就是從檔案本身目前所在目錄開始,到欲納入之檔案所在目錄的路徑。 舉例來說,如果您的檔案在 Myapp 這個目錄內,而 Header1.inc 位在 Myapp\Headers 目錄內,則以下這行程式就可以將 Header1.inc 插入您的檔案內:

<!-- #include file ="headers\header1.inc" -->
請注意,指定包含檔案時所用的路徑 Headers\header1.inc,就是與您的檔案所在目錄的相對路徑;如果 #include 陳述式所在的程式不在 /Myapp 目錄內,則以上陳述式就沒有作用了。

使用 file 關鍵字時,如果您已經在 Internet Information Services 嵌入式管理單元 中選取了 [啟用上層路徑] 選項,還可以用 (..\) 這種語法將上一層目錄或更高層目錄中的檔案納入進來。 若需相關指示,請參閱設定 ASP 應用程式。

包含檔案的位置
無論檔案位於哪一個路徑內,只要檔案的內容有變化,ASP 都能自動偵測到,並且在下一次瀏覽器要求含有此檔案的 .asp 檔案時,將檔案新的內容傳給瀏覽器。 但一般而言,若能將包含檔案集中放在同一個應用程式目錄或 Web 網站內,可以讓包含檔案比較安全些。 如果要做到更完善的保護,建議您將包含檔案放在應用程式中的單獨一個目錄內,例如 \Includes,並對這個目錄只開放適當的「執行」(Web 伺服器) 權限。 若需其他,請參閱設定 Web 伺服器的權限。

重要 在預設情況下,Web 伺服器對所有檔案均具有「讀取」的權限。 但為了避免使用者看到您所納入的檔案內容,最好取消 Include 目錄的「讀取」權限。

包含檔案:使用技巧與注意事項
包含檔案本身也可以將其他檔案納入到自己本身。此外,.asp 檔案也可以重複納入同一個檔案一次以上,只要所有的 #include 指令不會造成迴圈的情形即可。例如 First.asp 檔案納入 Second.inc 這個檔案,則 Second.inc 就不可以納入 First.asp。也不可以把自己包含進來。ASP 會偵測這類的迴圈會巢狀錯誤,並於偵測到這種情形時產生錯誤訊息,同時停止處理所要求的 .asp 檔案。

ASP 是先將指定的包含檔案納入,然後才執行指令命令。因此您不可以用指令命令來組成要納入之檔案的名稱。舉例來說,在以下這個指令中,由於 ASP 會先執行 #include 指令,然後才將檔案名稱設定給變數 name,因此以下這個指令並不會開啟 Header1.inc 這個檔案。

<!-- 這個指令無效 -->
<% name=(header1 & ".inc") %>
<!-- #include file="<%= name %>" -->
指令命令與程序必須整個包含在 <% 與 %>、HTML 標記 <SCRIPT> 與 </SCRIPT>、或 HTML 標記 <OBJECT> 與 </OBJECT> 等成對的分隔符號內。換句話說,.asp 檔案中若含有分隔符號的左半部分,其相對應的右半部分不可以放在欲納入的包含檔案內,這樣是錯誤的。指令或指令命令必須完整,不可以分散在不同檔案內。例如以下指令就沒有作用:

<!-- 這個指令無效 -->
<%
For i = 1 To n
主檔案中的陳述式
<!-- #include file="header1.inc" -->
Next
%>
但以下這個指令就可以順利執行:

<%
For i = 1 to n
主檔案中的陳述式
%>
<!-- #include file="header1.inc" -->
<% Next %>
注意事項 如果您的 ASP 指令納入的檔案含有很多函數與變數,但這些函數與變數在您的 ASP 程式中都不會用到,則這些沒用到的結構所佔用的額外資源對伺服器的效能將有不利的影響,會降低 Web 應用程式的延展性。因此一般建議最好將包含檔案打散分成好幾個比較小的檔案,就不必在伺服器端指令內引入一個或兩個含有過多不需用到之資訊的大檔案,只要將必要的檔案納入即可。

有時候您可以用 HTML 的 <SCRIPT></SCRIPT> 標記將伺服器端的檔案納入進來。例如以下這個指令就用相對路徑的方式,納入一個可以讓伺服器執行的檔案:

<SCRIPT LANGUAGE="VBScript" RUNAT=SERVER SRC="Utils\datasrt.inc"></SCRIPT>
下表列出在虛擬路徑以及相對路徑兩種狀況下,用 SRC 屬性納入檔案的正確語法:

路徑類型 語法 範例
相對路徑 SRC="路徑\檔名" SRC="Utilities\Test.asp"
Virtual SRC="/路徑/檔名" SRC="/MyScripts/Digital.asp"
Virtual SRC="\路徑\檔名" SRC="\RegApps\Process.asp"

注意事項 用這種方法納入檔案時,不可以在 <SCRIPT> 標記內放入任何程式碼;如果您真的需要這種功能,請額外多加一組 <SCRIPT> 標記。

本篇文章發表於2001-01-15 00:00
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
目前尚無任何回覆
   

回覆
如要回應,請先登入.