日常中,我們想要把一些靜態頁面放在框架上或者是進行轉移時,那么靜態頁面上的原url加載js、css、images都會失效,那么我們應該怎么進行修改捏?
現在倉鼠做個筆記哈
這里有幾個注意項:
1、路徑必須要絕對正確,基於項目之后的js、css文件位置路徑必須是絕對路徑
(例如項目的位置在D://studys/aa/bb下,項目名稱是cc,js文件路徑是D://studys/aa/bb/cc/public/js/dd.js,那么加載路徑應該是aa/public/js/dd.js)
2、不要用絕對路徑!!不要用絕對路徑!!不要用絕對路徑!!
(因為用絕對路徑,將文件放在其他電腦上后,js、css這些文件一樣加載不出來,因為我們存放php文件的系統盤非常有可能不一樣)
3、當我們使用相對路徑的時候,要善於使用$_SERVER這個全局變量去獲取,一般加載這些文件使用的是dirname($_SERVER['SCRIPT_NAME'])
($_SERVER['SCRIPT_NAME']獲取的是inde.php入口文件的相對位置,這里dirname()是指相對於inde.php上一個路徑)
(例如$_SERVER['SCRIPT_NAME']得到的結果是:aa/bb/cc/index.php,那么dirname($_SERVER['SCRIPT_NAME']得到的結果是:aa/bb/cc,這個結果一般截取到的是框架名稱位置——Index.php最終位置在框架文件夾下)
(這時候,我們再根據得到的結果,和我們放置js、css文件位置,進行一個拼接,就能得到我們訪問js、css文件的相對路徑)
例子:
原靜態頁面中,加載js、css、images的路徑為:

當我們放進框架后,加載這個靜態文件,發現樣式和圖片都失效了,全頁面變得亂七八糟

這時候,我們只要將正確的加載js、css的路徑進行修改,就能讀取到啦
1、查看我們JS、CSS、Images置放位置


從上面我們可以看到:JS、CSS等文件,是在v1.0.2/thinkmimi/public/下
2、再定義常量,獲取項目的相對路徑
# 相對於瀏覽器的項目根目錄地址-用於加載靜態文件 defined('ROOT_PATH') or define('ROOT_PATH', stripslashes(dirname($_SERVER['SCRIPT_NAME'])));
根據上面的文件,我們可以得出,ROOT_PATH得到的相對路徑為:/studys/TWO/v1.0.2,從這個路徑中,我們得出,v1.0.2是整個框架的名稱
3、最后進行url拼接

這時候,我們進行訪問,就能正確加載到我們的靜態文件啦

我們打開審查元素,查看JS、CSS等文件生成的URL

可以看到,加載的最終結果都是相對路徑,即使文件放在其他電腦上,系統也會根據$_SERVER去獲取此框架在該電腦中的相對路徑的
以上
END
