Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何仅加载yii2中所需的javascript文件_Javascript_Php_Jquery_Css - Fatal编程技术网

如何仅加载yii2中所需的javascript文件

如何仅加载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', '/

我使用的是yii2,我所有的JS和CSS文件都是通过资产文件(比如SiteAsset.com)包含的,但是JS文件和CSS文件会加载到我在这个布局文件(比如main.php布局文件)中加载的每个页面,这给我带来了很多问题,因为一些不需要的代码可能会在我甚至不需要的页面上运行,也会延迟加载所需的时间,如何只加载特定页面所需的css或JS文件。一些代码来说明我的意思

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文件。所以,应用程序肯定会变得单调乏味。好的,非常感谢,也许我没有其他选择了,我必须一个接一个地去做,