使用 requirejs 意味着不再有全局变量?

Using requirejs means no more global variables?

使用 requirejs 是否意味着我将不再处理全局变量?

我开始在我的项目中实现 requirejs。在使用 requirejs 之前,我将我的自定义 Backbone 路由器 class 附加到命名空间变量:

app.Router = Backbone.Router.extend({customStuffInHere});

说我现在定义为"module":

define(['backbone'], function(Backbone) {
    return Backbone.Router.extend({customStuffInHere});
});

这没有问题,因为我的自定义路由器在它自己的文件中 Router.js。所以它遵循每个文件一个模块的约定。

当我在 requirejs 之前创建这个路由器的实例时,我只是在做:

....code....
app.router = new app.Router();
....code....

现在我必须为此实例化创建一个全新的文件并将其包含在当前模块中吗?

我做的对吗?

编辑:我想我的问题是如何为我的所有应用程序使用一个路由器模型?

使用不带 .js 扩展名的 JS 文件的相对路径。 (或者使用 baseUrl 的相对路径)

从本质上讲,RequireJS 模块是单例的,这意味着您将在任何 definerequire 调用中获得对同一对象的引用

require('./path/to/Router', function () {
  var router = new Router();
}};