gpt4 book ai didi

javascript - Javascript中是否有依赖注入(inject)容器的意义?

转载 作者:行者123 更新时间:2023-12-03 10:19:19 26 4
gpt4 key购买 nike

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

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

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

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

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

根据我的搜索,带有一些追随者的 JS 的唯一独立 DIC 容器是 bottlejs
GitHub 上只有 672 颗星。将此与有许多独立 DIC 项目的 PHP 进行比较,例如 Pimple (1570 颗星)或 PHP-DI (1040 颗星) 你可以看到很大的差距

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

最佳答案

单例可以用 JS 模块自然生成,所以这不是 DI 关心的问题。 JS 模块模拟也可以实现可测试性(代理查询等)。这是一些框架(Durandal,React-like)所依赖的。

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

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

关于javascript - Javascript中是否有依赖注入(inject)容器的意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45323864/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com