backbone.js应用程序范围的功能,不依赖于特定的控制器/模型

and*_*orp 5 javascript jquery backbone.js

我正在使用骨干样板,你可以在这里找到它.

我想知道如何添加全局功能,没有明确地绑定到任何特定的集合,模型,视图等.一个例子是'注销'功能,可能如下所示:

var logout = function(){
  // Clear Favorites
  // Handle asynchronous logging (all in-app logs are sent to the server at logout)
  // Redirect to the login page
  // Do other cleanup
}
Run Code Online (Sandbox Code Playgroud)

基本上,这将处理大量的模型/收藏,包括Favorites,Events,Logs,Users,和应用程序Router

如果你查看主干 - 样板文件中的main.js文件,我一直在顶部添加这些函数(第13行),如下所示:

function(namespace, $, Backbone, Example){

  // BEGIN MY APP LOGIC
  namespace.app.logout = function(){
    // Do logout here
  };
  // END MY APP LOGIC

  var Router = Backbone.Router.extend({
Run Code Online (Sandbox Code Playgroud)

这样可以正常工作,但应用程序逻辑很快就会失去控制.我的问题是,组织这段代码的更好方法是什么?如果我有一个Utils模块并加载了Utils模块,它会更有意义吗?

干杯!

kmi*_*iro 8

TLDR:http://addyosmani.github.com/backbone-fundamentals/ 高级部分.

让它成为可能,然后使它美丽,然后快速.

随着您的应用程序的发展和使事情发生(可能),很明显哪些功能属于一体.将它们分成相应的模块(漂亮).

我使用require.js,但不使用backbone-boilerplate(bb也有AMD分支).我组织我的应用程序的方式正如您所描述的那样,我有一个具有通用应用程序内容的utils模块.然后我将auth,Notification和Date格式化内容添加到utils模块.然后我将utils模块包含在我懒惰的地方,并希望我的所有util函数都可用.

由于它们都只是模块/混合,我还可以在我需要的任何单个模块中包含auth/notification/date模块.