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

Oma*_*riq 11 yii2

我想为specific.js具有操作ID的特定视图包含我的js脚本specific-action-id.我不希望它specific.js被包含在每一页中.

为了包含整个站点的js脚本,我通常需要编辑AppAsset.php.为此,我该怎么办?

soj*_*oju 16

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

$this->registerJsFile('@web/js/specific.js');
Run Code Online (Sandbox Code Playgroud)

阅读更多:http://www.yiiframework.com/doc-2.0/guide-output-client-scripts.html#registering-scripts


Ahm*_*ilo 7

强烈建议使用资产包来注册外部 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',
        ];
}
Run Code Online (Sandbox Code Playgroud)

在您的视图文件中

use app\assets\StatusAsset;
StatusAsset::register($this);
Run Code Online (Sandbox Code Playgroud)

资源 http://www.yiiframework.com/doc-2.0/guide-output-client-scripts.html https://code.tutsplus.com/tutorials/how-to-program-with-yii2-working-with-资产包--cms-23226