JavaScript文件依赖于Yii2中的JavaScript代码块(用于dojo配置)


JavaScript file dependend on JavaScript code block in Yii2 (for dojo configuration)

我试图注册dojo 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加载后,正文标签打开,但由于加载javascript是阻塞,我会尽量避免。