Я пытаюсь зарегистрировать файлы додзё javascript в Yii 2.0.
Согласно документации dojo, блок кода для конфигурации dojo должен быть загружен до фактического dojo.js, чтобы его можно было рассмотреть. Однако в выводе HTML мой пользовательский код javascript всегда загружается после dojo.js.
Это мой код:
$this->registerJs('dojoConfig="async:true,isDebug:true";', $this::POS_HEAD,'dojoconfiguration');
$this->registerJsFile('/dojo_toolkit/dojo/dojo.js', ['depends' => [\yii\web\JqueryAsset::className()], 'position' => yii\web\View::POS_HEAD]);
А в HTML это выглядит так:
<script src="/dojo_toolkit/dojo/dojo.js"></script>
<script type="text/javascript">dojoConfig="async:true,isDebug:true";</script>
Любой совет?
Для той же позиции Yii2 всегда сначала помещает встроенные сценарии, а затем фактические внешние файлы. Таким образом, вы не можете это исправить, добавив их обоих в <head>
,
Лучше всего дать registerJsFile()
позвонить POS_END
загрузить его в самом конце. Он все еще будет загружен до document.ready()
звонок сделан.
Таким образом, вы можете быть уверены, что конфигурация в заголовке анализируется перед загрузкой. Наихудший сценарий, который вы можете использовать POS_BEGIN
загрузить его сразу после открытия тега body, но поскольку загрузка javascript блокируется, я постараюсь избежать этого.
Других решений пока нет …