Javascript requireJS的不稳定行为
我遇到了一些关于Javascript requireJS的不稳定行为,javascript,jquery,requirejs,amd,Javascript,Jquery,Requirejs,Amd,我遇到了一些关于requireJS的问题,对此我并不熟悉 我有这棵树 应用程序/ 在master.html文件中: <script data-main="js/main" src="js/lib/require.js"></script> 每个upload.js或slider.js都具有以下结构。此处$myfunction分别用于上传和滑动 define(['dependency_$myfunction'],function() { function $
requireJS
的问题,对此我并不熟悉
我有这棵树
应用程序/
在master.html
文件中:
<script data-main="js/main" src="js/lib/require.js"></script>
每个upload.js
或slider.js
都具有以下结构。此处$myfunction
分别用于上传和滑动
define(['dependency_$myfunction'],function() {
function $myfunction(){
...
}
return{
$myfunction: $myfunction
}
}
);
我有两个问题
1)
js
加载的行为是不稳定的:一旦加载两次,jquery就无法识别
。顺便说一句,upload.js
和slider.js
共享依赖项以及在这些共享依赖项中设置的slider.js
的某些函数被认为是未定义的(可能有些文件加载了两次?)。那么,我的requireJS
用法正确吗?模块加载是异步的,因此如果您确实需要在加载其他模块之前加载jQuery,则必须执行以下两项操作之一:
1-使用jquery的回调函数,以便在加载jquery之前不要尝试加载其他函数:
require(['js/lib/jquery.js'], function($) {
require({
paths: {
'dependency_upload': 'vendor/upload/vendor/dependencies'
}
}, ['js/vendor/upload/upload.js'], function(App) {
App.upload();
});
});
2-(这是首选方法)使用a告诉RequireJS,无论何时您请求upload.js,它都需要首先加载jquery。模块加载是异步的,因此如果您确实需要在加载另一个模块之前加载jquery,您必须做以下两件事之一: 1-使用jquery的回调函数,以便在加载jquery之前不要尝试加载其他函数:
require(['js/lib/jquery.js'], function($) {
require({
paths: {
'dependency_upload': 'vendor/upload/vendor/dependencies'
}
}, ['js/vendor/upload/upload.js'], function(App) {
App.upload();
});
});
2-(这是首选的方法)使用a告诉RequireJS,无论何时您请求upload.js,它都需要首先加载jquery。“路径:{'dependentials'}”不是有效的JavaScript(“function upload/slider(){…}”)@kryger我知道,这只是为了让我的帖子更清晰;)事实并非如此。输入真正有效的代码。@SimonBoudrias我清除了它!“路径:{'dependencies'}”不是有效的JavaScript(“函数上载/滑块(){…}”)@kryger我知道,这只是为了让我的帖子更清楚;)事实并非如此。输入真正有效的代码。@SimonBoudrias我清除了它!非常感谢你!顺便说一句,实际上,
upload.js
slider.js
必须为同一页面加载,并且它们共享库。如果知道我想将它们分开,我该如何处理呢?有没有最佳做法?RequireJS缓存模块请求,因此如果上载和sliderrequire(['foo'])
都需要(['foo']),它将只加载一次并返回给双方非常感谢!顺便说一句,实际上,upload.js
slider.js
必须为同一页面加载,并且它们共享库。如果知道我想将它们分开,有没有最佳做法?RequireJS会缓存模块请求,因此如果上载和sliderrequire(['foo'])
都需要(['foo']),它将只加载一次并返回给这两个模块
require(['js/lib/jquery.js'], function($) {
require({
paths: {
'dependency_upload': 'vendor/upload/vendor/dependencies'
}
}, ['js/vendor/upload/upload.js'], function(App) {
App.upload();
});
});