我正在構建一個木偶應用程序,剛剛通過路線碰撞獲得了 位。作爲Backbone的新手,我不確定 是否有可能爲 Marionette的AppRouter
創建{黑色,白色}列表。目前爲止我看到的最好的線索有:木偶應用程序之間的路線衝突。可能想法/解決方案?
- 執行Default route。
- 我不相信這會解決我的問題,因爲這些應用程序分爲兩個單獨的模塊。
- 集成regex-based routing作爲
Marionette.AppRouter
的擴展。- 這並不意味着我可能是最簡單的工作。
之前,我佈局發生了什麼,這裏是一些背景:
users_app.js.coffee:
@Gdit.module "UsersApp", (UsersApp, App, Backbone, Marionette, $, _) ->
class UsersApp.Router extends Marionette.AppRouter
appRoutes:
'users/:id/edit': 'editUser'
'users/:id': 'showUser'
API =
showUser: (id) ->
new UsersApp.Show.Controller
id: id
editUser: (id) ->
new UsersApp.Edit.Controller
id: id
App.addInitializer ->
new UsersApp.Router
controller: API
roles_app.js.coffee:
@Gdit.module "RolesApp", (RolesApp, App, Backbone, Marionette, $, _) ->
class RolesApp.Router extends Marionette.AppRouter
appRoutes:
'users/roles': 'editUsersRoles'
API =
editUsersRoles: ->
new RolesApp.Edit.Controller
App.addInitializer ->
new RolesApp.Router
controller: API
當我嘗試訪問Roles.Edit.Controller
到時出現問題:
Started GET "https://stackoverflow.com/users/roles" for 127.0.0.1 at 2013-08-16 14:02:01 -0400
Processing by UsersController#show as JSON
Parameters: {"id"=>"roles"}
正如你所看到的,「角色」正在被/users/:id
途徑捕獲和被處理爲id
。不是我所期望的:)
最後,由於我提到了「最簡單的事情可能」的工作,我承認這實際上只是將editUsersRoles
的路線更改爲/users_roles
。不過,我更加好奇看看是否存在更優雅的解決方案,並看到一些尖峯等。
您的維護問題是一個很好的問題,但是您看到這種方法爲習慣於觀看慣用的木偶代碼的人創建了什麼樣的混淆? –
我在考慮這種問題,在代碼庫擴展後幾年後出現。第一次(或者剛剛第一次)進來的人可能會被這種路線衝突引發一點點。不是因爲它特別複雜,而是因爲它似乎沒有一個好的理由就躲避傳統。我的觀點是,消除驚喜可以是一件好事:)。 – ajk