[Yii 2] Delucidazioni su Assetbundle

Salve,

Ho alcuni dubbi sugli assetbundle, prima che impazzisco magari qualcuno può aiutarmi.

Domanda 1) Se io ho per il mio template diversi file js o css e voglio caricare solo quelli che servono, devo creare piu assetbundle e richiamarli in quella pagina? oppure li metto tutti nello stesso assettbundle e lui carica quelli che servono solo quando servono?

Domanda 2) ho messo il tema admin-lte seguendo la guida, ma ho notato che manca jquery ui. Se provo a caricarlo tramite l’estensione yii2-jui, ho notato che ci sono problemi. Qualcuno ha già affrontato questo problema?

Ciao,

tutti i files dichiarati in un assetbundle vengono caricati quando invochi registerAssetBundle().

Puoi farlo dalla vista con una cosa tipo:




app\assets\TuaAsset::register($this);



Il tutto è ben spiegato nella guida!

Per la domanda 2 non ho idea, non ho mai usato admin-lte :(

si la guida l’ho vista ma non è molto chiara per alcuni aspetti!

Comunque grazie della risposta!

Sintetizzando, Yii carica tutti i file indicati nel tuo Bundle quando registri il bundle.

Non ha modo di sapere se utilizzi o meno un file js/css se non sei tu a dirglielo! :)

Ciao

Quindi come faccio?

sto trovando anche parecchie difficoltà nell aggiunta di template perchè ci sono incompatibilità tra le librerie js che carico io e quelle che carica yii in automatico

Probabilmente vengono caricate due volte, ad es. jquery. Dovresti vedere che incompatibilità ci sono e caricarne solo una.

Che tipo di incompatibilità?

Ricorda che nei tuoi assets puoi specificare le dipendenze verso altri assets.

Ad esempio se vuoi essere sicuro che venga caricato jQuery prima dei tuoi file dovresti specificare nel tuo asset una cosa tipo:




  /**

   * @var array Assets richiesti 

   */

  public $depends = [

    'yii\web\JqueryAsset'

  ];



Se vuoi modificare i files caricati da un asset non gestito da te puoi specificare parametri custom per il componente "assetManager" (leggi qui), le possibilità sono molteplici dipende molto dal problema che hai.

Inoltre se usi librerie di terze parti ti consiglio di verificare se esistono come pacchetto Bower, se esiste devi indicarlo come dipendenza nel tuo composer.json e creare un asset bundle specifico per quella libreria, andrai ad usarlo poi come dipendenza dell’asset con i tuoi script!

Sembra tutto molto complicato ma questo modo ti permette di avere tutto molto ordinato e di gestire gli aggiornamenti e l’aggregazione dei file in maniera automatica… :)

Puoi vedere qui.

E’ di aiuto. Comunque, Nicola lo ha spiegato bene.