Yii2-仅针对特定视图包含JS脚本

Yii2-仅针对特定视图包含JS脚本,yii2,Yii2,我想包含我的js脚本specific.js,用于具有操作id的特定视图特定操作id。我不希望每个页面都包含specific.js 为了在整个站点中包含js脚本,我通常必须编辑AppAsset.php。为此,我应该怎么做?您只需在视图中注册此js文件,例如: $this->registerJsFile('@web/js/specific.js'); 阅读更多信息:@soju是对的。但您也可以为特定视图创建特定的资产包。您的特定js文件可以是一个文件组。在这种情况下,您可以使用资产捆绑包,也

我想包含我的js脚本
specific.js
,用于具有操作id的特定视图
特定操作id
。我不希望每个页面都包含
specific.js


为了在整个站点中包含js脚本,我通常必须编辑
AppAsset.php
。为此,我应该怎么做?

您只需在视图中注册此js文件,例如:

$this->registerJsFile('@web/js/specific.js');

阅读更多信息:

@soju是对的。但您也可以为特定视图创建特定的资产包。您的特定js文件可以是一个文件组。在这种情况下,您可以使用资产捆绑包,也可以使用您想要的任何视图。

强烈建议使用资产捆绑包注册外部js文件,而不是registerJsFile(),因为它们允许更好的灵活性和更细粒度的依赖项配置。此外,使用资产包还可以组合和压缩多个JS文件,这对于高流量网站来说是很理想的

因此,您可以创建一个新的AppAsset文件,并将css和javascript文件放入其中

创建资产包

在\assets目录中,我们创建StatusAsset.php:

<?php
/**
 * @link http://www.yiiframework.com/
 * @copyright Copyright (c) 2008 Yii Software LLC
 * @license http://www.yiiframework.com/license/
 */

namespace app\assets;

use yii\web\AssetBundle;

/**
 * @author Qiang Xue <qiang.xue@gmail.com>
 * @since 2.0
 */
class StatusAsset extends AssetBundle
{
    public $basePath = '@webroot';
    public $baseUrl = '@web';
    public $css = [];
    public $js = [
      '/js/jquery.simplyCountable.js',
      '/js/twitter-text.js',
      '/js/twitter_count.js',  
      '/js/status-counter.js',
    ];
    public $depends = [
            'yii\web\YiiAsset',
            'yii\bootstrap\BootstrapAsset',
        ];
}
资源

这不会添加到特定操作中。。这是一个将js文件添加到视图的通用过程。要根据操作id添加,我们可能需要使用afterAction事件。这不是最好的选择,创建资产包,因为在另一个答案中是首选方法。
use app\assets\StatusAsset;
StatusAsset::register($this);