我是一个长期的后端开发人员,但最近我设法开发了一些中等大小的单页web应用程序。
在服务器端,我使用过许多现代框架,如Spring、Grails、Symfony、Silex、Slim和其他,我真的很喜欢Silex或Slim的微框架概念(在所有情况下都是MVC框架)。
在客户端,由于应用程序的性质不同,我认为MVVM是最好的方法。
快速评估一些微JS框架(riot,backbone),并与我的服务器端背景进行比较,我注意到在JS框架中,依赖注入容器(DIC)并不被认为是框架(至少是微框架)的基本部分。
在每一个服务器端,现代的MVC (微)框架中,DIC是框架的基础,但我没有看到这在Javascript框架上发生(至少在微框架上,我知道它有它)。
根据我的搜索,JS唯一的独立DIC容器是在GitHub上只有672星的bottlejs。与PHP相比,PHP有许多独立的DIC项目,例如Pimple (1570星)或PHP-DI (1040星),您可以看到很大的差距
您是否认为许多js微框架所做的是一个严重的错误或低估?或者,DIC的模块化、可测试性和可管理性可以通过其他方式在JS中实现。
发布于 2017-07-26 20:48:44
单例可以自然地用JS模块生成,所以这不是DI的问题。并且可测试性也可以通过JS模块模拟来实现(proxyquire等)。这就是一些框架(Durandal,类似React)所依赖的。
在测试平台中,ES6模块通常以任何方式在幕后使用require,因此该方法仍然适用。proxyquire和其他缓存损坏库可能有其局限性(深度依赖),但在编写良好的测试中,您通常会模拟更高级别的单元,因此这通常是有效的。这就是在Jest内部实现这一点的方法,Jest通常用于测试React和类似React的代码。
因此,这取决于这些“微框架”到底是什么。对于当前生成的宏框架,React应该不需要DIC (而且,它也不是自以为是的,扩展它的功能是开发人员的责任)。而Angular、Aurelia、Ember、Polymer和Vue 2则采用DIC --因为它通常有利于应用程序设计。
https://stackoverflow.com/questions/45323864
复制相似问题