yii2如何引入自定義css或js文件

 Yii2 在管理css和js腳本方面,引入了一個資源管理包的概念AssetBundle。      先直接寫出我所知道的兩種引入方式:現假如我要引入我根目錄下的 public/assets/js/hello.js  文件   1)第一種是在視圖文件中直接引入:       在視圖文件開頭先引入HTML幫助類<?php
 use yii\helpers\Html;
?>

  然後在文件中引入js:

<?=Html::jsFile('@web/public/assets/js/hello.js')?>

如此即可


最後再說下yii2的資源管理類 AppAsset 類。使用它有什麼好處呢?首先一個是它可以規範依賴關係,不會因爲js先後的加載順序不同而導致代碼的不可用。比如說引入jquery,我們自定義的代碼若是在jquery文件之前先引入了,就有可能出現錯誤。而使用AppAsset 可以讓在視圖裏加載的文件肯定會排在你的基礎樣式或腳本的後面,不會出錯。

下面說下如何引用:

namespace app\assets;
use yii\web\AssetBundle;

class AppAsset extends AssetBundle {
    public $basePath = '@webroot';
    public $baseUrl = '@web';
    public $css = [
        'public/skin/default_skin/css/theme.css',
    ];
    public $js = [
        'public/vendor/jquery/jquery-1.11.1.min.js',
        'public/vendor/jquery/jquery_ui/jquery-ui.min.js',
        'public/js/bootstrap/bootstrap.min.js',
    ];

    //依賴包
    public $depends = [
        //這裏寫你的依賴包即可,沒有就別寫
    ];

    //導入當前頁的功能js文件,注意加載順序,這個應該最後調用
    public static function addPageScript($view, $jsfile) {
        $view->registerJsFile($jsfile, [AppAsset::className(), 'depends' => 'app\assets\AppAsset']);
    }

    
    
}
然後在我們的模板開頭部分加上:

//自動加載資源
AppAsset::register($this);
然後導入js:

//導入js資源
\app\assets\AppAsset::addPageScript($this,'js文件相對路徑或url');  //@web/public/assets/js/hello.js

如此即可。再延伸一下,假如幾個頁面都共同引入了相同的幾個js或css文件安,那麼可以在AppAsset裏導入當前js文件函數裏,一次性加載多幾個js文件:

//導入當前頁的功能js文件,注意加載順序,這個應該最後調用
    public static function addPageScript($view) {
        $view->registerJsFile('@web/public/assets/js/hello.js', [AppAsset::className(), 'depends' => 'app\assets\AppAsset']);
}


在視圖中直接調用addPageScript($this)即可
//導入js資源
\app\assets\AppAsset::addPageScript($this);



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章