我在 Javascript + BackboneJS(一个 MVC 框架)+ RequireJS 框架中工作,但这个问题有点面向对象。
让我首先解释一下,在 Backbone 中,您的视图是传统视图和控制器的混合体,而您的 HTML 模板是传统的 MVC 视图
一段时间以来一直在为此绞尽脑汁,但我不确定正确/务实的方法应该是什么。
我有一个 User 对象,其中包含许多代码所依赖的用户首选项(如单位系统、语言选择等)。
我的一些视图在不使用模板的情况下完成了大部分工作(通过使用 3rd 方库,如映射和图形库),因此它们依赖于 User 对象来处理单位转换。我目前正在使用 RequireJS 来管理该依赖项,而不会过多地破坏封装。
我的一些视图自己做的工作很少,只将模型数据传递给我的模板引擎/模板,这些模板引擎/模板完成工作并且确实依赖于用户对象,同样,用于单位转换之类的事情。将此依赖项传递到模板中的唯一方法是将其注入模型中,然后将模型传递到模板引擎中。
我的问题是,如何最好地处理如此广泛需要的依赖项?- 创建一个可在任何地方访问的应用程序范围的引用/全局对象?(YUK) - 使用 RequireJS 托管依赖项,尽管通常只建议对类/对象定义而不是具体对象使用托管依赖项加载。- 或者,只使用依赖注入,并手动将该依赖传递给需要它的所有东西?