簡體   English   中英

如何使用 JavaScript - Yii2

[英]how to use javaScript - Yii2

我在 AppAsset 中注冊了一個 JavaScript 文件,如下所示:

public $js = ['Index/top_menu.js']

是否有必要使用registerJsregisterJsFile
如果是,我應該在哪里使用它們?

資產包是在 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM