在Yii 2中加载jQuery等核心脚本
我一直在努力弄清楚如何在Yii 2
加载jQuery
或其他CORE脚本。
在Yii 1
这似乎是这样的:
clientScript->registerCoreScript("jquery"); ?>
在Yii 2中,$ app是Yii的属性,而不是方法,所以上面自然不起作用,但将其更改为:
clientScript->registerCoreScript("jquery"); ?>
产生此错误:
Getting unknown property: yii\web\Application::clientScript
我找不到关于加载核心脚本的Yii 2的任何文档,所以我尝试了以下内容:
registerJsFile(Yii::$app->request->baseUrl . '/js/jquery.min.js', array('position' => $this::POS_HEAD), 'jquery'); ?>
虽然这会在头部加载jQuery,但Yii也会在需要时加载第二个版本的jQuery,从而导致冲突错误。
另外,我不想使用Yii的jQuery实现,我宁愿保持自己的,因此这就是我这样做的原因。
如何在没有Yii的情况下加载jQuery和其他核心文件,并在需要时加载它们的副本?
要禁用Yii2
的默认资产,您可以参考以下问题:
Yii2禁用Bootstrap Js,JQuery和CSS
无论如何, Yii2
的资产管理方式与Yii 1.xx
不同。 首先,您需要创建一个AssetBundle
。 作为官方指南示例,在“中创建如下所示的资产包:
namespace app\assets\YourAssetBundleName; use yii\web\AssetBundle; class YourAssetBundleName extends AssetBundle { public $basePath = '@webroot'; public $baseUrl = '@web'; public $css = [ 'path/file.css',//or files ]; public $js=[ 'path/file.js' //or files ]; //if this asset depends on other assets you may populate below array public $depends = [ ]; }
然后,将它们发布到您的视图中:
use app\assets\YourAssetBundleName; YourAssetBundleName::register($this);
哪个$this
指的是当前视图对象。
另一方面,如果您只需要将JS
文件注册到视图中,您可以使用:
$this->registerJsFile('path/to/file.js');
警予\网络\查看:: registerJsFile()
如果您只需要将CSS
文件注册到视图中,您可以使用:
$this->registerCssFile('path/to/file.css');
警予\网络\查看:: registerCssFile()
你可以删除核心jQuery,如下所示:
配置/ web.php
'assetManager' => [ 'bundles' => [ // you can override AssetBundle configs here 'yii\web\JqueryAsset' => [ 'sourcePath' => null, 'js' => [] ], ], ],