Skip to main content

Yii 按需加载js、css文件

首先介绍一点,在yii框架里面,js、css文件都被称为资源文件。

在assets\AppAsset.php中定义了$js、$css两个属性,在这里面写的文件可以称之为全局资源,一般如下写法:

public $css = [
'css/site.css',
'css/style.css',
];
public $js = [
'js/jQuery-1.11.3-min.js',
'js/bootstrap.min.js',
];

所有渲染出来的页面都会加载这四个文件,如果有一些js文件只在某几个甚至只在某一个页面需要用,写在这里显然不合适。这时就需要用到此方法了。

好用的方法 ,但是控制不了加载顺序

<?php $this->registerCssFile('penghui.css');?>
<?php $this->registerJsFile('penghui.js');?>
<?php
$this->registerJsFile('@web/js/workflow.js');
?>

下面这个方法试了好想不对

首先在assets\AppAsset.php中添加一个静态方法,内容如下:

//定义按需加载JS方法,注意加载顺序在最后
public static function addScript($view, $jsfile) {
$view->registerJsFile($jsfile, [AppAsset::className(), 'depends' => 'backend\assets\AppAsset']);
}

//定义按需加载css方法,注意加载顺序在最后
public static function addCss($view, $cssfile) {
$view->registerCssFile($cssfile, [AppAsset::className(), 'depends' => 'backend\assets\AppAsset']);
}
在模板文件开头添加如下代码:
<?php
use app\assets\AppAsset;
AppAsset::addScript($this, '@web/js/menu.js'); // @web是AppAsset类中$baseUrl的值
AppAsset::addScript($this, '@web/js/sortable.js');
?>