在Javascript中有依赖注入容器吗?

时间:2017-07-26 10:09:56

标签: javascript mvvm dependency-injection ecmascript-6 frameworks

我是一名长期的后端开发人员,但最近我设法开发了一些中等大小的单页网络应用程序。

在服务器端,我使用过许多现代框架,如Spring,Grails,Symfony,Silex,Slim等,我真的很喜欢Silex或Slim的微框架概念(在所有情况下都是MVC框架)

在客户端,由于不同的应用程序性质,我认为MVVM是最好的方法。

快速评估一些微型JS框架(riotbackbone)并与我的服务器端背景进行比较我注意到在JS框架中,依赖注入容器(DIC)不被认为是一个框架(至少是微观框架)。

在每个服务器端,现代MVC(微)框架,DIC是框架的基础,但我不认为这发生在Javascript框架上(至少微框架,我知道胖胖的Angular有它)

从我的搜索中,只有一些粉丝的JS独立DIC容器是bottlejs 在GitHub上只有672颗星。将此与具有许多独立DIC项目的PHP进行比较,例如Pimple(1570星)或PHP-DI(1040星),您可以看到很大的差异

你认为这是许多js微框架的重要错误或子评估吗? 或者,DIC的模块化,可测试性和可维护性在JS中可以通过其他方式实现。

1 个答案:

答案 0 :(得分:0)

Singletons可以使用JS模块自然生成,因此这不是DI的关注点。并且JS模块模拟也可以实现可测试性(proxyquire等)。这就是一些框架(Durandal,React-like)所依赖的。

在测试装备ES6模块中,通常使用引擎盖下的任何方式,因此该方法仍然适用。 proxyquire和其他高速缓存修改库可能有其局限性(深度依赖性),但在编写良好的测试中,您通常会将单元模拟为高一级,因此这通常有效。这是在Jest内部完成的,它通常用于测试React和React-like。

所以这取决于这些'微框架'真的是。对于当前的宏观框架,React应该不需要DIC(同样,它不是自以为是,它的开发人员有责任扩展它的功能)。而Angular,Aurelia,Ember,Polymer和Vue 2则采用DIC - 因为它通常有利于应用程序设计。