我有一个应用程序包含在require中,需要将其放入现有页面中,该页面中已经包含一些使用jquery的脚本。 require app包括jquery:
<script type="text/javascript" src="/require.js" data-main="pathtomyscript"></script>
<script src="jquery-ui-1.8.20.min.js" type="text/javascript"></script>
<script src="jqueryplugin.js" type="text/javascript"></script>
据我所知,即使在AMD http://requirejs.org/docs/jquery.html
的背景下,jquery也将自身加载为全局我遇到的问题是我的require app需要几秒钟才能加载到页面中,此时其他脚本(jquery ui等)已经运行了。 结果是一堆未捕获的ReferenceError:$未在控制台中定义错误。一旦我的需要应用程序加载,然后jQuery可用..但是为时已晚。
这有什么办法吗?
答案 0 :(得分:1)
避免通过RequireJS和其他脚本(例如JQuery UI)通过<script>
元素混合加载某些脚本(例如JQuery),因为最终会遇到排序问题,就像您遇到的因为依赖关系不是被指定。在这种情况下,我建议设置一个RequireJS垫片来表明JQuery UI和插件依赖于JQuery,并且需要这两个模块。
例如:
require.config({
paths: {
jquery: 'jquery-[version-you-are-using]',
jqueryUi: 'jquery-ui-1.8.20.min',
},
shim: {
jquery: { exports: '$' },
jqueryUi: { deps: ['jquery'], exports: '$' },
jqueryplugin: { deps: ['jquery'], exports: '$' },
}
});
require(['jqueryUI', 'jqueryplugin'], function($) { /* ... */ });
或者,您可以采用在任何require'd模块之前加载与JQuery相关的脚本的方法。例如:
<script src="jquery-[version-you-are-using].js" type="text/javascript"></script>
<script src="jquery-ui-1.8.20.min.js" type="text/javascript"></script>
<script src="jqueryplugin.js" type="text/javascript"></script>
<script type="text/javascript" src="/require.js" data-main="pathtomyscript"></script>
使用此方法的常用方法是通过直接<script>
引用加载所有外部/第三方脚本,而所有特定于应用程序的脚本都作为require'd模块加载。