Yii2: Регистрация Asset Bundle и регистрация внешнего Js-файла

Привет, я хотел узнать о преимуществах регистрации Asset Bundle после процесса, описанного в документах, таких как Process one in AppAsset.php

public $js = [ 'js/myjsfile.js' ]; 

затем в файле вида, добавляющем пространство имен, например

 namespace app\assets; 

и затем добавить оператор использования, например

 use app\assets\AppAsset; AppAsset::register($this); 

Вместо того, чтобы делать все это, если я использую Process Two

 $this->registerJs('js/myjsfile.js', $this::POS_READY); 

он отлично работает. Итак, почему я должен использовать Process One .

  1. Любое преимущество и причина для этого будут высоко оценены.
  2. Если я следую процессу, мне нужно добавить все файлы js в AppAsset.php отдельно.

Благодарю.

Одной из основных причин использования Asset Bundle является то, что пути ваших активов всегда будут правильными. Рассматривать:

 $this->registerJsFile('js/myjsfile.js', ['position'=>$this::POS_READY]); 

будет генерировать что-то вроде:

 <script src="js/myjsfile.js"></script> 

Что отлично подходит для URL-адресов, не поддерживаемых urlManager, например http://localhost/yiiproject/index.php?r=user/update&id=8 потому что ваш браузер ищет файл js по адресу: /yiiproject/js/myjsfile.js

Но если вы включите urlManager, ваш url будет выглядеть как http://localhost/yiiproject/user/update/8 , что означает, что ваш браузер будет искать ваш файл js по адресу: /yiiproject/user/update/8/js/myjsfile.js .

Вы можете решить эту проблему, используя:

 $this->registerJsFile(Yii::$app->request->baseUrl.'/js/myjsfile.js', ['position'=>$this::POS_READY]); 

Но Asset Bundle в основном делает это для вас.

Asset Bundles имеют некоторые преимущества перед нормальной регистрацией. Помимо того, что сказал @deacs в своем ответе, это другие:

  1. Assets Bundles может публиковать файл в активах, если его нет в веб-каталоге
  2. Assets Bundle может обрабатывать меньше файлов (в случае CSS), а также сжимать активы.
  3. Делает код шикарным, особенно в решении зависимостей и, следовательно, повторного использования

Все функции, обеспечивающие блеск пакетов, находятся в документах

Используя Asset Bundles, вы также можете получить последнюю версию из папки «vendor», поэтому, если вам нужно обновить некоторую библиотеку, вам не нужно вручную это делать, поскольку композитор уже делает это.