如果路线内有太多路线,你如何组织你的路线对象,让我们说一百个。你只是把它放在一个文件或对象中吗?
感谢。
答案 0 :(得分:2)
我认为这里没有正确或错误的答案。绝对正确的是,你不能拥有一条拥有50多条路线的路由器......这是一个可维护性的噩梦。
相反,我更喜欢将我的应用程序拆分为子应用程序或模块(根据需要调用它们),其中每个应用程序都有明确的目的和责任。因此,在假设的订单管理系统中我可能有
这里的关键只是永远不会创建一个巨大的app / monolith,而是创建许多小应用程序,它们可以组合在一起形成整个应用程序(与每个应用程序之间的事件进行通信)。也就是说,在上面的例子中,“人”以及“订单”应用程序都有自己的路由器,它们只保存与它们相关的路由。 “全局”应用程序构成了粘合剂,将所有单个应用程序保持在一起,例如具有应用程序菜单,也可能是一些通用路径,而不是特定模块/子应用程序。
也许Backbone Aura是一个很好的起点。
答案 1 :(得分:1)
您可以将路由器分解为多个文件。你如何分解它取决于你的用例,在我的应用程序中,我们按模块细分。
如何定义模块取决于您的应用程序,但一般的经验法则是您将功能组合在一个“功能”或主题下。
例如,假设您的应用程序是一个基本的“公司”应用程序(使用Backbone.js的错误示例,但让我们保持简单。)该网站有几个部分:“关于我们”,“产品”,“客户端“,”支持“,”博客“,”职业“。在每个部分中,它有2级子页面(例如,在产品中,您可以有一个产品列表,在每个产品中,您可以深入查看产品的更详细视图,如何购买产品,等等。)
在示例中,每个部分我们都可以将它们视为模块。并且,基于此,您可以将包含所有路由的单个路由器分解为不同的路由器。 (它们当然可以在不同的文件中!)
var MainRouter = Backbone.Router.extend({
routes: {
'/': 'home'
},
home: function() {
// Display home view
}
});
var ProductRouter = Backbone.Router.extend({
routes: {
'/product': 'listProducts',
'/product/:id/buy': 'buyProduct',
'/product/:id': 'viewProduct',
'/product/compare/:id1/:id2': 'compareProduct'
},
listProducts: function() { ... },
buyProduct: function(id) { ... }
viewProduct: function(id) { ... }
compareProduct: function(id1, id2) { ... }
});
启动应用时,您只需启动它们:
$(function() {
new MainRouter();
new ProductRouter();
});
通过这样做,您还可以将代码分解为不同的模块,甚至可以保持每个模块的视图,模板和模型分离。