Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript中是否有指向依赖项注入容器的点?_Javascript_Mvvm_Dependency Injection_Ecmascript 6_Frameworks - Fatal编程技术网

Javascript中是否有指向依赖项注入容器的点?

Javascript中是否有指向依赖项注入容器的点?,javascript,mvvm,dependency-injection,ecmascript-6,frameworks,Javascript,Mvvm,Dependency Injection,Ecmascript 6,Frameworks,我是一个长期的后端开发人员,但最近我成功地开发了一些中型的单页web应用程序 在服务器端,我使用过许多现代框架,如Spring、Grails、Symfony、Slim和其他,我非常喜欢Silex或Slim的微框架概念(在所有情况下都是MVC框架) 在客户端,由于不同的应用程序性质,我认为这是最好的方法 快速评估一些微JS框架(,),并与我的服务器端背景进行比较,我注意到在JS框架中,依赖注入容器(DIC)不被认为是框架的基本部分(至少是微框架) 在每一个服务器端现代(微)框架中,DIC是框架的基

我是一个长期的后端开发人员,但最近我成功地开发了一些中型的单页web应用程序

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

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

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

在每一个服务器端现代(微)框架中,DIC是框架的基础,但我在JavaScript框架上看不到这种情况(至少是微框架,我知道重脂肪的角度有它)。 在我的搜索中,JS的唯一独立DIC容器和一些追随者是 GitHub上只有672颗星星。与PHP相比,PHP有许多独立的DIC项目,例如(1570星)或(1040星),您可以看到巨大的差异

您是否认为这是一个严重的错误或低估了许多js微框架所做的?
或者DIC的模块化、可测试性和可维护性在JS中可以通过其他方式实现。

单例可以通过JS模块自然生成,因此DI不关心这一点。JS模块模拟也可以实现可测试性(proxyquire等)。这就是一些框架(Durandal,React-like)所依赖的

在试验台ES6模块通常以任何方式在发动机罩下使用require,因此该方法仍然适用
proxyquire
和其他缓存损坏库可能有其局限性(深度依赖),但在编写良好的测试中,您通常会将单元模拟到更高的级别,因此这通常是可行的。这是如何在内部进行的,通常用于测试React和React like


所以这取决于这些“微观框架”到底是什么。对于当前的gen宏框架,React应该不需要DIC(而且,它不是固执己见的,扩展它的功能是开发人员的责任)。虽然Angular、Aurelia、Ember、Polymer和Vue 2具有DIC功能,但这通常有利于应用程序设计。

我认为这个问题不适合这样做。也许-我不知道软件工程的存在。事实上,在stack overflow中有一个类似的问题与python@AbhinavGauniyal有关,当提到其他站点时,指出我个人也认为这个问题不适合这样做(可能是基于观点)。然而,有些框架内置了它,例如AngularJs。对于JS是否有必要,我不这么认为,我认为大多数框架都没有内置它,因为缩小了问题。与GH stars相比是没有意义的。PHP DI项目为期5年以上。JS项目不是。单例可以通过JS模块自然生成,因此DI不关心这一点。JS模块模拟也可以实现可测试性(proxyquire等)。这是一些框架(特别是React-like)所依赖的。如果我说得对,React和Vue2是仅视图组件框架,它们不是应用程序框架,因此如果它们是usong DI,则可能仅限于视图管理,而不是整个应用程序。还是不Vue是组件化的,React也是。这取决于什么是框架,什么是库的观点。在提到的这些框架中,主干当然不是“框架”。DI的有用性不依赖于语言(1)。但它可以受益于语言功能(Angular 2+&TS)。