我希望将js脚本specific.js
包含在具有操作ID specific-action-id
的特定视图中。我不希望specific.js
包含在每个页面中。
为了包含整个网站的js脚本,我通常需要编辑AppAsset.php
。为此,我该怎么办?
答案 0 :(得分:16)
您只需在视图中注册此js文件,例如:
$this->registerJsFile('@web/js/specific.js');
了解详情:http://www.yiiframework.com/doc-2.0/guide-output-client-scripts.html#registering-scripts
答案 1 :(得分:4)
强烈建议使用资产包来注册外部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',
];
}
在您的视图文件中
use app\assets\StatusAsset;
StatusAsset::register($this);
资源 http://www.yiiframework.com/doc-2.0/guide-output-client-scripts.html https://code.tutsplus.com/tutorials/how-to-program-with-yii2-working-with-asset-bundles--cms-23226
答案 2 :(得分:1)
@soju是对的。但您也可以创建特定资产包以使用特定视图。在这种情况下,您的特定js文件可以是文件组,您可以使用资产包,并可以使用您想要的任何视图。