2011-05-26 42 views
2

以下main.js代码不尊重优先顺序(有时underscore.jsbackbone.js需要它的时候没有加载):Requirejs'为了不与优先级的配置工作,CDN依赖性

require({ 
    baseUrl:'/scripts', 
    priority:[ 
     "http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js", 
     "http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.12/jquery-ui.min.js", 
     "http://ajax.cdnjs.com/ajax/libs/underscore.js/1.1.6/underscore-min.js", 
     "http://ajax.cdnjs.com/ajax/libs/backbone.js/0.3.3/backbone-min.js" 
    ] 
    },["src/app"], 
    function (app) { 
     app.start(); 
}); 

那些CDN之前添加order!依赖关系失败,出现order.js not found错误。

回答

6

我最近更新的RequireJS文档,但我没有推换到现场尚未:

“优先级”的配置无法加载插件被加载的资源。因此,要完成什么你正在尝试做的,你可以窝要求()调用,它会给你的行为,你想:

require(
    { 
     baseUrl:'/scripts' 
    }, 
    [ 
     "require", 
     "order!http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js", 
     "order!http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.12/jquery-ui.min.js", 
     "order!http://ajax.cdnjs.com/ajax/libs/underscore.js/1.1.6/underscore-min.js", 
     "order!http://ajax.cdnjs.com/ajax/libs/backbone.js/0.3.3/backbone-min.js" 

    ], 
    function (require) { 
     require(["src/app"], function (app) { 
      app.start(); 
     }); 
    } 
); 

这里假设你有在/scripts/order.js顺序插件位置。

+0

这很好。用CDN地址导入'order'插件和'RequireJS'也是可能的吗? – 2011-05-27 08:03:15

+0

好听。我目前还不知道order.js和require.js都在CDN上,尽管我在1.0版本发布后至少想要提供require.js。 require.js位于http://www.cdnjs.com上,但我没有任何关于它如何可靠的数据或支持该CDN的人员的任何数据。我喜欢他们想要做的事情。 – jrburke 2011-05-27 17:07:29

+0

为什么你需要嵌套的需求调用?我们不能在依赖数组中包含order!src/app吗?谢谢 – simao 2011-08-10 14:33:47