PHP引入合併多個JS和CSS檔案例項

崔子墨發表於2024-04-27

這篇文章主要實現了PHP合併並輸出多個JS和CSS檔案的實現方法,這裡使用了一個比較簡單的方法,重在揭示實現原理,需要的朋友可以參考下。

為什麼要這樣子做呢?其實很簡單,就是用php來判斷終端型別的不同,從而實現一種非主流的響應式佈局。如果恰好你也有這樣的想法那你就來對地方了,如果你不知吾所云,那麼就當我是個神經病,下面的程式碼裡沒有加入終端型別的判斷,只是實現了js 和 css的引入和輸出,順便做了一下壓縮。清楚了註釋和換行等!

不羅嗦了下面看程式碼:

1、HTML程式碼:

<link rel="stylesheet" type="text/css" href="you.php get=base,style1,style2,global&path=css/&type=css&v=20180829" />
<script type="text/javascript" src="you.php?get=jquery-1.6.4.min.js,minjquery.js,minjquery.ui.js,test.js,global.js&path=js/&type=js&v=20180829"></script>

2、PHP程式碼:

<?php
if(isset($_GET)) {
    //輸出JS
    if($_GET['type']=="js"){
        header ("Content-type:application/x-javascript; Charset: utf-8");
            $files = explode(",", $_GET['get']);
            $str = '';
            foreach ($files as $key => $val){
                $str .= file_get_contents($_GET['path'].$val);
            }
            $str = str_replace("\t", "", $str); //清除空格
            $str = str_replace("\r\n", "", $str); 
            $str = str_replace("\n", "", $str);
            $str = preg_replace("/\/\/\s*[a-zA-Z0-9_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/", "", $str); // 刪除單行註釋
            $str = preg_replace("/\/\*[^\/]*\*\//s", "", $str);// 刪除多行註釋
            echo $str;
        
        }
    //輸出CSS
    if($_GET['type']=="css"){
        header ("content-type:text/css; charset: utf-8");
        $files = explode(",", $_GET['get']);
        $fc = '';
        foreach ($files as $key => $val){
            $fc .= file_get_contents($_GET['path'].$val.".css");
        } 
        $fc = str_replace("\t", "", $fc); //清除空格
        $fc = str_replace("\r\n", "", $fc); 
        $fc = str_replace("\n", "", $fc); 
        $fc = preg_replace("/\/\*[^\/]*\*\//s", "", $fc); 
        echo $fc; 
    }
}
?>

3、引數說明:

type  #引入文字型別,css 或 js
get   #為檔名,多個css或js可以用半形的逗號分隔。例如 base,style1,style2,global
path  #為路徑,可以設定相對路徑。例如 style/css/  style/js/ 以“/”結尾
#配合偽靜態規則來使用會更好。

相關文章