У меня есть рабочая идиома coffeescript / backbone, которая выглядит следующим образом:
SidebarWidgets = ((() ->
SidebarWidgets = { }
class SidebarWidgetPrototype extends Backbone.View
initialize: (options) ->
@template = $(options.templateId).html()
render: () ->
$(@el).html(_.template(@template, @model.toJSON()))
@el
class SidebarWidgets.user extends SidebarWidgetPrototype
class SidebarWidgets.shoppingcart extends SidebarWidgetPrototype
class SidebarWidgets.messages extends SidebarWidgetPrototype
SidebarWidgets
)())
class Sidebar extends Backbone.View
views: ['user', 'shoppingcart', 'messages']
initialize: (options) ->
@subviews = { }
_.each(@views,(v) =>
subviews[v] = news SidebarWidgets[v](
model: cxDatasets[v]
id: 'sidebar-' + v
templateId: '#sidebar-' + v + 'template'
)
)
render: () ->
$(@el).html()
_.each(@views, (v) =>
$(@el).append(@subview(v).render())
)
Цель этой идиомы - предоставить список базовых представлений, которые затем будет включать представление боковой панели, предоставляя при этом возможность (но не необходимость) переопределять или улучшать один или несколько методов виджета.
Что меня раздражает, так это то, что для тех представлений, которые не нуждаются в модификации, им все равно нужно явно указывать синтаксис класса Coffeescript.
Есть ли способ создать анонимный класс с синтаксисом Coffeescript? Можете ли вы сказать что-то вроде (следующий псевдокод):
thisclass = extend BackboneView
initialize: (options) ->
Если так, то как?