在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' => [] ], ], ],