這兩個定義不太好理解,舉例說明:
IIS設置的站點根目錄為"c:\wwwroot\",a.asp檔所在目錄是c:\wwwroot\afolder,
b.asp檔所在目錄是c:\wwwroot\bfolder,c.asp檔所在目錄是c:\wwwroot\afolder\cfolder,
則以a.asp作為起點尋找b.asp,所經過的路徑依次為c:\wwwroot\afolder、c:\wwwroot、c:\wwwroot\bfolder;而尋找c.asp,
所經過的路徑就是c:\wwwroot\afolder、c:\wwwroot\afolder\cfolder。
由此得出,b.asp對於a.asp的相對路徑就是../bfolder;相同的,a.asp對於b.asp的相對路徑就是../afolder。
a.asp檔需要使用"file"調用b.asp檔的時候,其語句就應該寫為。
調用c.asp,其語句是。
而無論什麼時候,a.asp、b.asp、c.asp這三個檔的絕對路徑分別是c:\wwwroot\afolder、c:\wwwroot\bfolder、c:\wwwroot\bfolder\cfolder。
因此,在a.asp檔中使用"virtual"調用另外兩個檔,分別為和。
另外需要提一下的是include與iframe的區別。前者是把一個相對獨立的檔代碼作為調用檔代碼的一部分執行,該語句屬於ASP語言,只能用於asp檔中。
而iframe是單純把一個獨立的檔在調用檔中嵌套顯示,兩者是完全獨立的,無任何關係,且iframe屬於HTML語言,可在asp、htm、html等檔中調用。
include file 可以用相對路徑或全路徑與檔案名的組合來描述如:file="..\script\my.inc" file="../script/my.inc" 奇怪的是竟然可以 file="../script\my.inc"也通過編譯他的禁止:是不可以用絕對路徑來表示如:file="/script/my.inc"
include virtual可以使用虛抑的絕對路徑來表示virtual="/yousite/script/my.inc"
但是對asp3.0的編程中關於virtual可以使用虛抑的相對路徑來表示,我從未驗證成功,還望有人來指點如 <!-- #include virtual="../script/my.inc" --> ????
結果證明:(1)斜線或反斜線是無關緊要的(2)file除了全路徑不可以表示,而virtual則剛好相反
----------------------------------------------------------------------------
在此將二者的區別再總結一下,僅供參考:
1。#include file 包含檔的相對路徑,#include virtual包含檔的虛擬路徑。
2。在同一個虛擬目錄內,和效果是相同的,但假設虛擬目錄名為myweb,則也可以通過調試,但我們知道是絕對要報錯的。
3。如果一個站點下有2個虛擬目錄myweb1和myweb2,myweb1下有文件file1.asp,myweb2下有文件file2.asp,如果file1.asp要調用file2.asp,那麼在file1.asp中要這樣寫:,在這種情況下用#include file是無法實現的,用必然報錯。相反,在myweb2的檔中包含myweb1中的檔也是一樣。如果該被包含檔在某個檔夾下面,只要在虛擬路徑中加上該檔夾即可。
4。不論用#include file 還是 #include virtual,在路徑中用“/”還是“\”或者二者交叉使用都不會影響編譯效果,程式會順利執行。
5。以上情況不適用於2個站點檔的相互調用,而且在同一個站點內,和等效,但假設站點名為website,使用是錯誤的。
沒有留言:
張貼留言