你如何构建Backbone + RequireJS应用程序?

Mau*_*ice 15 structure requirejs backbone.js

在组织我的Backbone对象到AMD(对于中型到大型应用程序)时,我一直在努力在可重用性和复杂性之间取得适当的平衡

(A)每个Backbone对象(模型,视图等)都应该在自己的模块中吗?(B)相关的Backbone对象应该在同一个AMD模块中吗?(即:PersonModel,PersonCollection,PersonView对象在同一模块定义中)

选项(A)似乎允许最大的灵活性和可重用性,但也是最复杂的,因为(可能)大量的文件.虽然选项(B)可以使管理事物变得更容易,但灵活性较差且难以进行单元测试.

每个人如何构建这些东西(或者有)?

Mar*_*Zen 5

我对requirejs的好处是,它允许您将物理文件抽象为结构化命名空间.您可以采用方法(A)并在自己的文件中创建每个骨干类,然后创建一个"命名空间"模块,将所有相关的类粘合在一起.

// Suppose you have PersonView.js, PersonCollectionjs, PersonModel.js as modules
// create a Person module to function as namespace
define(["PersonModel", "PersonCollection", "PersonView"], function(model, collection, view) {
     return {
        Model: model,
        Collection: collection,
        View: view
     };  
});
Run Code Online (Sandbox Code Playgroud)

这样可以将模块组织在自己的文件中,并为每个类编写一个模块提供一些灵活性,而不需要为应用程序的其余部分公开该组织(我真的不喜欢require("PersonView", "PersonModel" ... )每次需要使用时都要编写在人的对象中,消费者更容易和更清洁地声明对"命名空间"而不是独立类的依赖.