Yii2-如何在最后一个位置的视图文件中包含外部js


Yii2 - How to include external js in view file in last position

我有一些问题,比如如何在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还可以方便地缩小/压缩代码以供生产使用。