我有点困惑我应该如何用RequireJs实例化我的对象。我正在使用coffeescript类,它将所有对象定义为键入的函数? (不知道在正确的术语)依赖注入或服务位置与RequireJs
在我使用依赖注入我自己的对象的时候,这里是一个例子视图模型和服务
我注入我的服务到通过选择在构造函数中视图模型阵列
define 'myViewModel', [ 'jquery', 'sammy' ], ($, sammy) ->
class myViewModel
constructor: (options) ->
self = @
@service = options.service
@router = sammy(->
@get('/SomeRoute#:id', self.onHashUpdated)
)
@router.run()
这里我注入alertId到服务
define 'myService', ['baseService'], (baseService) ->
class myService extends baseService
constructor: (options) ->
@alertId = options.alertId
super()
这里是我的高层次的页面对象。我做我的视图模型实例化并将所有需求依赖项注入视图模型。
require [ 'myViewModel', 'myService', 'domReady!' ], (viewModel, service) ->
myViewModelInstance = new viewModel
service: new service
alertId: 'some-alert-id'
我只是不知道这是我应该怎么做,或者我应该返回从服务的新服务限定使其成为一个单例。
所有其他依赖像jquery
,sammy
,knockout
所有的工作是这样,返回从require
工作对象,而不是需要被实例化像我的对象类型。
是否有使用requireJs的接受模式?
我应该做依赖注入还是服务位置?
这会导致测试JavaScript并找到一个可以重写requireJs并返回被嘲弄的对象而不是真正的依赖关系的库。
在茉莉花我可能有这样的事情
describe '=== my view model ===', ->
sut = null
beforeEach ->
require ['myViewModel', 'mockService'], (viewModel, mockService) ->
sut = new viewModel
service: new mockService
我尝试了testr但文档是深不可测,有没有真正的如何使用它的任何完整的例子。
SquireJs看起来像这样的事情的可能性呢?