[英]how to use javaScript - Yii2
我在 AppAsset 中注冊了一個 JavaScript 文件,如下所示:
public $js = ['Index/top_menu.js']
是否有必要使用registerJs
和registerJsFile
?
如果是,我應該在哪里使用它們?
資產包是在 Yii2 中使用 CSS 和 Javascript 資產的推薦方式。 官方文檔中有完整的指南。
應用程序資產包示例:
<?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()
- 沒有強烈需求的 PHP 字符串中的 Javascript 是邪惡的 - 沒有 IDE/編輯器突出顯示和自動完成,在一個文件中混合兩種不同的語言。
registerJsFile()
- 代碼庫變得不那么井井有條。 通過這種方法,您可以考慮在特定位置包含特定文件。 使用資產包,您只需使用包含所有文件、選項等的資產。
還有更多優點,例如在這個 SO question 中已經討論過。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.