Requirejs 在遵守AMD惯例的同时,如何在全球环境中定义模块?

Requirejs 在遵守AMD惯例的同时,如何在全球环境中定义模块?,requirejs,js-amd,Requirejs,Js Amd,我正在用JavaScript构建一个项目,我想尊重AMD的约定,但我需要我的项目能够从全球环境中获得(只需添加它的名称) Dojo是一个完美的例子,因为它正是我想要的:有效的AMD,但是Dojo可以从global env获得。我试图查看它们的源代码,但没有找到它们定义Dojo的地方 到目前为止,我提出的唯一解决方案是: project.js: var Project = { // some stuffs in there }; module.js: require(['project'

我正在用JavaScript构建一个项目,我想尊重AMD的约定,但我需要我的项目能够从全球环境中获得(只需添加它的名称)

Dojo是一个完美的例子,因为它正是我想要的:有效的AMD,但是Dojo可以从global env获得。我试图查看它们的源代码,但没有找到它们定义Dojo的地方

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

project.js:

var Project = {
    // some stuffs in there
};
module.js:

require(['project'], function () {
    Project.Module = {
        // some stuffs in there
    };
});
我知道这不是最好的方法,我相信module.js应该返回
{}
,而不是定义它


最好的方法是什么?

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

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