【问题标题】:How to organize JavaScript in Yii projectYii项目中如何组织JavaScript
【发布时间】:2017-06-20 08:28:57
【问题描述】:
我使用 Yii 编写项目。我希望收到有关如何组织我的 JavaScript 的建议。我考虑了几个选项:
- 将所有代码放在一个文件(app.js)中,为每个功能模块创建并将其附加到项目的每个页面。但问题是并非所有页面都需要所有功能,因此在这种情况下我必须加载无用代码很难在数百行之间导航。(我知道我可以在单独的文件中编写然后“编译”所有内容,但这并不能解决代码过多的问题)
- 为每个功能创建单独的文件并通过 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',[ ....]);
}