使用 dojoConfig $ 加载 jQuery 仍未及时定义

loading jQuery with dojoConfig $ still not defined in time

dojoConfig 是:

    <script type="text/javascript">
    dojoConfig = {
        async: true,
        parseOnLoad: false,
        packages: [
                  { name: 'jquery', location: '//ajax.googleapis.com/ajax/libs/jquery/3.1.1', main: 'jquery.min' },
                  { name: 'jqueryui', location: '//ajax.googleapis.com/ajax/libs/jqueryui/1.12.1', main: 'jquery-ui.min' }
        ]
    };                 
</script>

我正在从谷歌加载:

下面将演示该问题:

    <script type="text/javascript">
   define.amd.jQuery = true;
   require(["jquery", "dojo/domReady!"], function (jquery) { 
       $(document).ready(function () { 
          console.log("First ready!"); //works
       }); 
   });
   $(document).ready(function(){console.log("ready!");});//throws error
</script>

这似乎是一个时间问题,因为 Uncaught ReferenceError: $ is not defined 在写出 "First ready!" 之前被写入控制台。想使用任何一个现成的功能。关于如何解决的任何想法?如果不是,那么我们可以将所有根级 $ 函数包装在 dojo/ready 函数中,虽然有点恶心。

你得到 $ 作为 undefined 因为 jquery 被正确加载并且 cdn 版本 asfaik 不能直接在你的 dojoConfig.

中使用

要解决这个问题,简单的方法是尝试从 cdn 中包含 jquery,在您的 html <header> 中添加脚本标签,如:

<header>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
</header>

或者您可以尝试将 jquery 作为非 amd 模块加载,如 dojo 文档中所述:

https://dojotoolkit.org/documentation/tutorials/1.10/modules_advanced/

相反,如果您不使用 cdn,您可以尝试以下操作:

    <!-- any external libraries configuration included in header -->
    <!-- dojo config -->
    <script>
            var dojoConfig = {
                baseUrl: "./",
                async: true,
                isDebug: true,
                parseOnLoad: false,
                packages: [
                    {name: "dojo", location: "libs/dojo"},
                    {name: "dijit", location: "libs/dijit"},
                    {name: "dojox", location: "libs/dojox"},
                    {name: "jquery", location: "libs/jquery", main: "jquery-3.1.1"},
                    {name: "jqueryui", location: "libs/jquery", main: "jquery-ui-1.12.1"},
                ]

            };
    </script>