require.js加载依赖项不正确
require.js loads dependencies incorrectly
这就是设置,我的基本文件是main.js,它定义了我正在构建的网站的所有页面上所需的脚本。它看起来像这样:
define([
'/javascript/requirePlugins/require-order.js!http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js',
'/javascript/requirePlugins/require-order.js!/javascript/jquery-global-plugins.js',
'/javascript/requirePlugins/require-order.js!/javascript/globals.js'
], function () {
loadFonts();
}
);
它加载jQuery、一些插件和globals脚本文件。在一个页面上,我试图加载一个jQuery插件,但该插件试图在加载jQuery之前加载。它看起来像这样:
require(['/javascript/requirePlugins/require-order.js!/main','/javascript/requirePlugins/require-order.js!/javascript/3rdparty/lemon-slider-0.2.js'], function () {
$j('#carousel<%= ClientID %>').lemmonSlider({loop:false});
});
该函数似乎没有按照请求的顺序执行。我甚至不确定我是否可以嵌套这样的有序函数。我也尝试过将jQuery作为依赖项应用,但这也失败了:
require(['/javascript/requirePlugins/require-order.js!/jquery','/javascript/requirePlugins/require-order.js!/javascript/3rdparty/lemon-slider-0.2.js'], function () {
$j('#carousel<%= ClientID %>').lemmonSlider({loop:false});
});
感谢
订单插件被删除,您可以尝试shim-config按顺序加载插件
requirejs.config({
paths: {
'jquery': 'https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min',
'bootstrap': '../bootstrap/js/bootstrap.min',
'select2': 'vendor/select2',
'jshashtable': 'vendor/jshashtable-2.1',
'jquery.numberformatter': 'vendor/jquery.numberformatter-1.2.3.min',
'jq-datepicker': 'vendor/bootstrap-datepicker',
'jq-datepicker.da': 'vendor/bootstrap-datepicker.da'
},
// Use shim for plugins that does not support ADM
shim: {
'bootstrap': ['jquery'],
'select2': ['jquery'],
'jq-datepicker': ['jquery'],
'jshashtable': ['jquery'],
'jquery.numberformatter': ['jquery', 'jshashtable']
},
enforceDefine: true
});
编辑:
requirejquery也不再进行维护。
如果您只需要按顺序加载一些顶层脚本,并且这些脚本不使用requirejs支持的模块API,那么订单插件非常有用。如果您将其混合/用于加载使用define()模块API的模块,则效果不会很好。
特别是,order只是确保首先加载脚本。然而,define()API指定要加载的其他脚本,订单插件不知道要等待这些脚本加载。
对于这个特殊的问题,我建议使用require-jquery.js作为sinsedrix的建议。或者包装您在define()调用中使用的脚本。volo可以用它的amdify命令帮助你做到这一点:
volo.js amdify path/to/lemon-slider-0.2.js depends=jquery
此外,我会设置baseUrl,并对依赖项使用"模块命名",而不是完整路径。这将允许优化器正常工作。您还可以将"order"映射到requirePlugins路径,这有助于减少一些线路噪声。我还将创建一个"jquery"路径条目,这样,如果您在define调用中包装其他插件,它将映射回加载在main.js文件中的jquery。因此,在页面的顶级脚本中:
requirejs.config({
baseUrl: '/javascript/',
paths: {
order: 'requirePlugins/require-order',
jquery: 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min'
}
});
然后你的main.js可以这样写:
define([
'order!jquery',
'order!jquery-global-plugins',
'order!globals'
], function () {
loadFonts();
}
);
请注意,在这里,只要这些依赖项本身不调用define(),订单的使用是可以的。
但是,如果您正在包装您在define调用中使用的脚本,那么您可以取消顺序!上面的用法。不过,请保持jquery路径的配置。
也许您应该尝试使用require jquery:http://requirejs.org/docs/jquery.html
这样您就不必担心jquery何时加载。
- Jquery菜单操作不稳定,定位不正确,存在一般错误
- Amazon S3 REST API大小不正确
- Javascript Reg Exp不正确匹配
- 为什么Airbnb风格指南说不鼓励依赖函数名称推断
- DIV并排,位置不正确
- 仅在IE中,javascript中的时区名称不正确
- 注意:wp_enqueue_script调用不正确.在 Wordpress 调试模式下
- 你能解释一下为什么这个javascript不正确吗
- 从int值来看,Javascript日期不正确
- jQuery-迭代不正确?(太长,无法执行)
- 字符串解析不正确
- 日历显示不正确
- 引导程序下拉列表显示不正确
- Node.js:多个然后'It’执行顺序不正确
- Highcharts热图显示不正确
- Firefox使用JQuery返回不正确的JSON
- 尝试在两次迭代中警告同一选择器的值,在第一次迭代中得到正确的值,而在第二次迭代中获得不正确的值.为什么?
- Mongoose响应解析不正确
- 由于布尔值的变化,Django视图中的字符串格式不正确
- require.js加载依赖项不正确