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']); } }
然後導入js://自動加載資源 AppAsset::register($this);
//導入js資源 \app\assets\AppAsset::addPageScript($this,'js文件相對路徑或url'); //@web/public/assets/js/hello.js
如此即可。再延伸一下,假如幾個頁面都共同引入了相同的幾個js或css文件安,那麼可以在AppAsset裏導入當前js文件函數裏,一次性加載多幾個js文件:
} 在視圖中直接調用addPageScript($this)即可//導入當前頁的功能js文件,注意加載順序,這個應該最後調用 public static function addPageScript($view) { $view->registerJsFile('@web/public/assets/js/hello.js', [AppAsset::className(), 'depends' => 'app\assets\AppAsset']);
//導入js資源 \app\assets\AppAsset::addPageScript($this);