2
我註冊AppAsset這樣的JavaScript文件:如何使用JavaScript - Yii2
public $js = ['Index/top_menu.js']
是否有必要使用registerJs
和registerJsFile
?
如果是,我應該在哪裏使用它們?
我註冊AppAsset這樣的JavaScript文件:如何使用JavaScript - Yii2
public $js = ['Index/top_menu.js']
是否有必要使用registerJs
和registerJsFile
?
如果是,我應該在哪裏使用它們?
資產捆綁是Yii2中使用CSS和Javascript資產的推薦方式。官方文檔中有complete guide。應用資產束的
實施例:
<?php
namespace app\assets;
use yii\web\AssetBundle;
class FontAwesomeAsset extends AssetBundle
{
public $sourcePath = '@bower/font-awesome';
public $css = [
'css/font-awesome.min.css',
];
public $publishOptions = [
'only' => [
'fonts/',
'css/',
]
];
}
然後,在視圖或佈局,可以像這樣它寄存器:
use app\assets\AppAsset;
...
AppAsset:register($this);
<?php
namespace app\assets;
use yii\web\AssetBundle;
class AppAsset extends AssetBundle
{
public $basePath = '@webroot';
public $baseUrl = '@web';
public $css = [
'css/site.css',
];
public $js = [
];
public $depends = [
'yii\web\YiiAsset',
'yii\bootstrap\BootstrapAsset',
];
}
分機或特定功能的資產束的實施例
替代品如registerJs()
和registerJsFile()
可以使用但不推薦。一些最大的缺點是:
registerJs()
- PHP中沒有強大需求的PHP字符串是邪惡的 - 沒有IDE /編輯器突出顯示和自動完成,在一個文件中混合兩種不同的語言。
registerJsFile()
- 代碼庫的組織性降低。通過這種方法,您可以考慮在特定位置包含特定文件。對於資產捆綁包,您只需使用包含所有文件,選項等的資產。
還有更多優點,例如在此SO question中已經討論過。