Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery ui 如何使用RequireJS将jQueryUI包含在我的modular backbone.js应用程序中?_Jquery Ui_Backbone.js_Requirejs - Fatal编程技术网

Jquery ui 如何使用RequireJS将jQueryUI包含在我的modular backbone.js应用程序中?

Jquery ui 如何使用RequireJS将jQueryUI包含在我的modular backbone.js应用程序中?,jquery-ui,backbone.js,requirejs,Jquery Ui,Backbone.js,Requirejs,我想使用RequireJS将jQueryUI包含在我的backbone.js应用程序中。my index.html中包含的main.js文件如下所示: require.config({ paths: { jquery: 'libs/jquery/jquery-1.7.2.min', jqueryui: 'libs/jquery/jquery-ui-1.8.18.custom.min', underscore: 'li

我想使用RequireJS将jQueryUI包含在我的backbone.js应用程序中。my index.html中包含的main.js文件如下所示:

require.config({
    paths: {
            jquery: 'libs/jquery/jquery-1.7.2.min',
            jqueryui: 'libs/jquery/jquery-ui-1.8.18.custom.min',
            underscore: 'libs/underscore/underscore-min',
            backbone: 'libs/backbone/backbone-optamd3-min',
            text: 'libs/require/text',
            templates: 'templates'
       }

});

require(['app'], function(App){
    App.start();
});
define([
    'jquery',
    'underscore',
    'backbone',
    'views/categoryview',
    'text!templates/category.html'
    ], function($, _, Backbone, CategoryView, categoryTemplate){
        // Here comes my code
});
对于每个模型/视图/路由器文件,我只在“define”块的开头包含“jquery”名称空间,如下所示:

require.config({
    paths: {
            jquery: 'libs/jquery/jquery-1.7.2.min',
            jqueryui: 'libs/jquery/jquery-ui-1.8.18.custom.min',
            underscore: 'libs/underscore/underscore-min',
            backbone: 'libs/backbone/backbone-optamd3-min',
            text: 'libs/require/text',
            templates: 'templates'
       }

});

require(['app'], function(App){
    App.start();
});
define([
    'jquery',
    'underscore',
    'backbone',
    'views/categoryview',
    'text!templates/category.html'
    ], function($, _, Backbone, CategoryView, categoryTemplate){
        // Here comes my code
});

但是jQueryUI不能在这些文件中使用。我的代码有问题吗?还是应该在每个“define”块中包含“jqueryui”?但是如果我在“define”块中包含“jqueryui”,我应该如何在函数中命名它以避免与jquery的名称冲突

您可以在主文件中包含仅修补其他对象(如jQuery UI)的所有文件,如下所示(您需要确保在jQuery UI之前加载jQuery):

require(['jquery','app','jqueryui'],函数($,app){app.start();});
另一种方法是在每个模块中包括jqueryui,正如您已经提到的


我个人更喜欢第一种方法,尽管它隐藏了依赖项。

相当老的帖子。有一个可以将jqueryui文件转换为jrburke创建的AMD版本的工具。希望它会有用

虽然kujakettu的回答至少部分正确,但我还必须在我的垫片中将jQuery指定为依赖项,以确保jQuery在jQuery UI之前加载

e、 g


其他答案现在有点过时了。jQueryUI附带AMD支持。如果您想要整个项目,只需使用
bowerinstalljqueryui
,然后将其添加到路径。不需要垫片


如果您希望加载应用程序中所需的jQuery UI子集(同时不加载额外的膨胀)然后只需使用
bower install jquery ui
来完成整个过程,然后使用名为r.js的RequireJS构建工具来创建一个包含您所需文件的AMD包。

因此,您的意思是按照您提供的方式在我的main.js文件中包含jqueryui,在每个模块中,都不需要担心jqueryui,我只需要包含jquery,一切都将启动并运行?是的,当您第一次包含jquery ui时,它会向原始jquery对象添加更多内容。之后,jQuery对象将提供所有ui功能。如果您有其他jquery插件,同样适用。这种方法是错误的。requirejs不保证jquery在jqueryui之前加载。使用带有手动依赖项的填隙配置会更好。@WillemD'Haeseleer此答案明确指出“您需要确保在jQuery UI之前加载jQuery”填隙配置是一种方法,因此从技术上讲,答案没有问题。@WillemD'Haeseleer对于旧版本,这是正确的。从1.11.0开始,不再需要垫片,因此现在(我知道您的评论很旧)答案是可以的。顺便说一句,这不是我的答案。那些使用旧版本的用户可以使用for-shim-config