Я зарегистрировал файл JavaScript в AppAsset так:, как использовать JavaScript - Yii2
public $js = ['Index/top_menu.js']
Нужно ли использовать registerJs
и registerJsFile
?
Если да, то где я должен их использовать?
Я зарегистрировал файл JavaScript в AppAsset так:, как использовать JavaScript - Yii2
public $js = ['Index/top_menu.js']
Нужно ли использовать registerJs
и registerJsFile
?
Если да, то где я должен их использовать?
Ассортимент активов рекомендуется использовать для работы с CSS и Javascript-активами в Yii2. В официальных документах есть complete guide.
Пример расслоения приложения активов:
<?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',
];
}
Пример расширения или конкретной пачке функциональности активов:
<?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);
Альтернативы, такие как registerJs()
и registerJsFile()
, но не рекомендуется. Некоторые из самых больших недостатков:
registerJs()
- Javascript в строке PHP без сильной потребности - это зло - не выделение IDE/редактора и автозаполнение, смешивание двух разных языков в одном файле.
registerJsFile()
- База кода становится менее организованной. При таком подходе вы думаете о включении определенных файлов в определенные места. С пакетами активов вы просто используете активы, содержащие все файлы, параметры и т. Д.
Есть больше преимуществ, и это уже обсуждалось, например, в этом SO question.