【问题标题】:How to organize JavaScript in Yii projectYii项目中如何组织JavaScript
【发布时间】:2017-06-20 08:28:57
【问题描述】:

我使用 Yii 编写项目。我希望收到有关如何组织我的 JavaScript 的建议。我考虑了几个选项:

  1. 将所有代码放在一个文件(app.js)中,为每个功能模块创建并将其附加到项目的每个页面。但问题是并非所有页面都需要所有功能,因此在这种情况下我必须加载无用代码很难在数百行之间导航。(我知道我可以在单独的文件中编写然后“编译”所有内容,但这并不能解决代码过多的问题)
  2. 为每个功能创建单独的文件并通过 Yii 管理它的加载(仅将必要的文件附加到页面)。但是有些功能只需要几行代码,为此创建文件似乎是不合理的。

【问题讨论】:

    标签: javascript php jquery yii


    【解决方案1】:

    您可以混合使用资产和布局

    在存储在 your_app\views\layouts\your_asset_filename.php 中的适当布局中 你可以注册一个特定的资产

      use your_app\assets\YourAsset;
    
      //use common\models\UserParam;
      //use common\models\LandScope;
    
      /* @var $this \yii\web\View */
      /* @var $content string */
    
      YourAssest::register($this);
    
      ?>
    

    在 your_app\asset 你可以配置你需要的js文件

    class YourAsset extends AssetBundle
    {
        public $basePath = '@webroot';
        public $baseUrl = '@web';
    
        public $css = [
            'css/site.css',
            ........
        ];
        public $js = [
            'your_js1.js',
            'your_js2.js',
            ....
        ];
        public $jsOptions = ['position' => \yii\web\View::POS_HEAD];
        public $depends = [
            'yii\web\YiiAsset',
            'yii\bootstrap\BootstrapAsset',
        ];
    }
    

    最后你的控制器/动作你可以为每个渲染设置你需要的布局

    public function actionMyAction()
    {
       $this->layout = 'your_asset_filename';
    
       ... 
       return $this->render('your_view',[ ....]);
    
    }
    

    【讨论】:

      猜你喜欢
      • 2011-07-06
      • 2021-05-09
      • 2016-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-04
      相关资源
      最近更新 更多