如何在尊重AMD约定的同时在全局环境中定义模块?

时间:2012-10-24 09:51:45

标签: requirejs js-amd

我在Javascript中构建项目,我想尊重AMD惯例,但我需要从全球环境中获取我的项目(只需添加它的名称)

Dojo是一个完美的例子,因为它正是我想要的:有效的AMD,但Dojo可从全球环境获得。 我试着查看他们的来源,但没有找到他们定义Dojo的地方:/

到目前为止,我提出的唯一解决方案是:

project.js:

var Project = {
    // some stuffs in there
};

module.js:

require(['project'], function () {
    Project.Module = {
        // some stuffs in there
    };
});

我知道这不是最好的方法,我相信module.js应该返回{},而不是定义它。

最好的方法是什么?

谢谢!

1 个答案:

答案 0 :(得分:1)

我认为一个很好的选择是检查定义,如果可用,则将项目定义为模块。

if ( typeof define === "function"){
  define('project', [], function(){ return project; })
}