使用require js命名一个Backbone应用程序

use*_*093 2 javascript namespaces requirejs backbone.js js-amd

我正在尝试为我的骨干应用创建命名空间,以便我可以在全球范围内进行呼叫.

通常,我会这样做:

var myNamespace = window.myNamespace || {};
myNamespace.SomeView = Backbone.View.extend(..);
Run Code Online (Sandbox Code Playgroud)

不确定如何使用require js实现此目的

Mis*_*lin 5

你可以在你的电话requiredefine电话中做同样的事情window(如果你在浏览器中工作).

// views/app.js
define(['router', 'views/main-view'], function (router, mainView) {
  var App = function () { /* main app module */ };
  // do your "global" export
  window.App = App;
  return App;
});

// views/header-view.js
define(['views/app', 'models/user'], function (App, User) {
  // your header view code here
  // note that you have access to `App` already in a closure
  // but you can still talk to it by doing
  globalAppReference = window.App;
  globalAppReference === App; // true
});
Run Code Online (Sandbox Code Playgroud)

问题是你为什么需要它?理想情况下,所有模块都将使用requireJS定义,因此您无需通过全局对象引用它们.

  • 我同意@gryzzly.全局变量(命名空间是委婉语)是执行此操作的旧方法.RequireJS模块是新方法.你不需要或不需要两者.只需使用requirejs模块. (2认同)