我有一些问题,比如如何在jquery file includes之后的最后一个位置包含js文件。因为现在的问题是首先加载js,然后加载jQuery文件。就像现在我已经添加了文件像:
use frontend'assets'AppAsset;
AppAsset::register($this);
$this->registerJsFile('@frontend_base/web/js/sendverification.js');
所以这将添加js文件,但不会添加到最后。那么我该如何做到这一点呢?
实际上,您可以使脚本依赖于jQuery。这是唯一真正的方法,不使用包含模式的奇怪之处,以确保这一点:
$this->registerJsFile('@frontend_base/web/js/sendverification.js', ['depends' => 'yii'web'JqueryAsset'])
使用POS_
常量只能确保JS包含在页面的某个部分,而不是某个文件之后,并且可以包含在该文件之前。
您可以在此处阅读更多信息:http://www.yiiframework.com/doc-2.0/yii-web-view.html#registerJsFile()-详细
您可以将Js File的位置定义为Register Js File
$this->registerJsFile('@frontend_base/web/js/sendverification.js',['position' => 'yii'web'View::POS_END]);
推荐的解决方案是使用AssetBundles。类似于:
class SendverificationAsset extends AssetBundle {
public $basePath = '@webroot';
public $baseUrl = '@web';
public $js = [
'js/sendverification.js'
];
public $depends = [
'yii'web'JqueryAsset'
];
}
然后在您的视图文件中:
use frontend'assets'AppAsset;
use frontend'assets'SendverificationAsset;
AppAsset::register($this);
SendverificationAsset::register($this);
依赖关系将确保SendverificationAsset
的Javascript和/或CSS始终位于JQuery包含的内容之后。
使用AssetBundles还可以方便地缩小/压缩代码以供生产使用。