如何仅加载yii2中所需的javascript文件
我使用的是yii2,我所有的JS和CSS文件都是通过资产文件(比如SiteAsset.com)包含的,但是JS文件和CSS文件会加载到我在这个布局文件(比如main.php布局文件)中加载的每个页面,这给我带来了很多问题,因为一些不需要的代码可能会在我甚至不需要的页面上运行,也会延迟加载所需的时间,如何只加载特定页面所需的css或JS文件。一些代码来说明我的意思如何仅加载yii2中所需的javascript文件,javascript,php,jquery,css,Javascript,Php,Jquery,Css,我使用的是yii2,我所有的JS和CSS文件都是通过资产文件(比如SiteAsset.com)包含的,但是JS文件和CSS文件会加载到我在这个布局文件(比如main.php布局文件)中加载的每个页面,这给我带来了很多问题,因为一些不需要的代码可能会在我甚至不需要的页面上运行,也会延迟加载所需的时间,如何只加载特定页面所需的css或JS文件。一些代码来说明我的意思 my asset file public $css = [ //'css/listing.css', '/
my asset file
public $css = [
//'css/listing.css',
'//maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css',
'//maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css',
'//code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css',
'css/AdminLTE.min.css',
'css/skins/_all-skins.min.css',
//'css/skins/skin-custom-1.css',
//'css/skins/skin-custom-1-light.css',
'css/skins/_custom-skins.css',
//'plugins/iCheck/flat/all.css',
'css/site.css',
'css/listing.css',
];
public $js = [
'//maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js',
'js/main.js',
//'plugins/iCheck/icheck.min.js',
'//code.jquery.com/ui/1.11.4/jquery-ui.min.js',
'//cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.2/moment.min.js',
'plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.min.js',
'js/app.min.js',
//'js/dashboard.js',
'js/demo.js',
'js/listing.js',
'js/functions.js',
];
如果我有两个页面,分别是
index.php
和welcome.php
,我想在index.php
中加载js/listing.js和js/functions.js
,但在welcome.php
页面上只加载js/functions.js
,而不加载js/functions.js
。如何在yii2中实现这一点感谢您提供的任何帮助我假设您没有任何模块
1)在您的资产
文件夹中。创建,AppAsset1.php
AppAsset1.php
<?php
namespace app\assets;
use yii\web\AssetBundle;
class AppAsset1 extends AssetBundle
{
public $basePath = '@webroot';
public $baseUrl = '@web';
public $css = [
'/app/css/style.css', // Your CSS location
'/app/css/style1.css',
];
public $js = [
'/app/js/myscript.js', // Your JS location
'/app/js/myscript1.js',
];
public $depends = [
// If you want to keep dependence.
'yii\web\YiiAsset',
'yii\bootstrap\BootstrapAsset',
'yii\web\JqueryAsset',
];
}
<?php
use app\assets\AppAsset1;
AppAsset1::register($this);
?>
像这样,您可以创建任意数量的资产,并将其包含在特定页面的任何位置。我理解。但是,这一行很容易混淆->”。但是在welcome.php页面上,只加载js/functions.js,根本不加载js/functions.js。“我的意思是在welcome.php文件上,我想加载js/functions.js,我不想劳德js/functions.js感谢您的重播,但我有一个模块,因此,使用此解决方案将覆盖模块的默认资产文件,而且此解决方案非常繁琐,每次我有需要不同js或css文件的页面时,都需要创建资产文件,有没有更好的方法来实现此功能??谢谢你告诉我你的模块结构@山姆,不要说乏味。这都是你的要求。如果您有100个页面,每个页面需要1个不同的JS文件。所以,应用程序肯定会变得单调乏味。好的,非常感谢,也许我没有其他选择了,我必须一个接一个地去做,