2016-09-14 55 views
2

我註冊AppAsset這樣的JavaScript文件:如何使用JavaScript - Yii2

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

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

回答

1

資產捆綁是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中已經討論過。