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缓存模块请求,因此如果上载和slider
require(['foo'])
都需要(['foo']),它将只加载一次并返回给双方非常感谢!顺便说一句,实际上,
upload.js
slider.js
必须为同一页面加载,并且它们共享库。如果知道我想将它们分开,有没有最佳做法?RequireJS会缓存模块请求,因此如果上载和slider
require(['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();
    });
});