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

Using requirejs means no more global variables?

本文关键字:全局变量 不再 意味着 requirejs 使用      更新时间:2024-06-20

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

我开始在我的项目中实现requirejs。在使用requirejs之前,我将自定义Backbone Router类附加到一个名称空间变量:

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

假设我现在将其定义为"模块":

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

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

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

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

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

我做得对吗?

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

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

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

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