2
A
回答
1
模块化是指将代码分解为独立的“包”。
依赖注入是指不对其他模块的引用进行硬编码。
作为一个实际的例子,你可以写一个不使用依赖注入模块:
import { Foo } from 'foo';
export function Bar() {
return Foo.baz();
}
在这里,你有两个模块,但这个模块导入特定的其他硬编码模块。
使用依赖注入编写的同一模块:
export function Bar(foo) {
return foo.baz();
}
然后其他人可以以此为:
import { Foo } from 'foo';
import { Bar } from 'bar';
Bar(Foo());
您注入Foo
依赖的通话时间,而不是硬编码的依赖。
1
您可以参考此article:
模块是实现某些功能和 通过使用特定技术编写的代码片段。 JavaScript语言中没有现成的模块化方案 。即将推出的 ECMAScript 6规范倾向于通过在JavaScript语言本身中引入 模块概念来解决此问题。这是未来。
和Dependency injection in JavaScript
目标
比方说,我们有两个模块。第一个是 发出Ajax请求的服务,第二个是路由器。
var service = function() { return { name: 'Service' }; } var router = function() { return { name: 'Router' }; }
我们有另一个需要这些模块的功能。
var doSomething = function(other) { var s = service(); var r = router(); };
而且使事情变得更有趣 需要接受一个参数的函数。当然,我们可以使用上面的代码, 但这不是很灵活。如果我们想要使用ServiceXML或ServiceJSON,该怎么办?或者如果我们想要模拟一些 测试目的的模块。我们不能只编辑函数的主体。 我们都想出的第一件事就是将依赖关系作为 参数传递给函数。即:
var doSomething = function(service, router, other) { var s = service(); var r = router(); };
通过这样做,我们传递我们想要的模块 的具体实现。然而这带来了一个新问题。想象一下,如果我们有 doSomething遍布我们的代码。如果我们需要第三个 依赖项会发生什么。我们不能编辑所有函数的调用。所以,我们需要一个 仪器,这将为我们做到这一点。这就是依赖注入器 正试图解决。让我们写下我们要 实现几个目标:
- ,我们应该能寄存器相关
- 注射器应该接受一个函数,应该返回一个函数,它以某种方式获得所需的资源
- 我们应该不要写很多,我们需要简短而好语法
- 注入器应该保持传递函数的作用域
- 传递的函数应该能够接受自定义参数,不仅仅是描述的依赖关系
一个不错的清单是不是。让我们潜入。
相关问题
- 1. spring-boot 1.4.1 @Resource和@Autowired之间的依赖注入区别
- 2. 依赖注入模块化依赖注册
- 3. 依赖perl模块之间
- 4. JIRA JQL模块和依赖注入
- 5. 应用依赖和模块依赖/插件有什么区别?
- 6. 加载模块和初始化模块之间的区别?
- 7. 角度2模块和Javascript ES6模块之间的区别
- 8. 模块和封闭之间的区别
- 9. 扩展和模块之间的区别?
- 10. 依赖注入玩框架2.5模块
- 11. 注入依赖成吉斯模块
- 12. 共享类之间的依赖,同时使依赖注入
- 13. 完全非平凡依赖和非平凡依赖之间的区别
- 14. 依赖注入的JavaScript
- 15. Dagger2模块和依赖关系的区别
- 16. “代码注入”和“过程注入”之间的区别?
- 17. “传统contao模块”和(仅)“contao模块”之间的区别
- 18. 依赖属性SetValue()和SetCurrentValue()之间的区别
- 19. 下载SDK和添加依赖项之间的区别?
- 20. 重载和依赖注入有什么区别?
- 21. Javascript $ http依赖注入
- 22. Azure AD模块和MS Online模块之间有什么区别
- 23. Apache Maven:继承,聚合和依赖之间有什么区别?
- 24. Python日期时间和时间模块之间的区别
- 25. 依赖注入:在控制器之间传递模型?
- 26. IoC:依赖注入和程序集之间的整体实例
- 27. 策略模式和依赖注入
- 28. 依赖注入和/或工厂模式
- 29. C#依赖注入和策略模式
- 30. 地标和注释之间的区别
你看过https://en.wikipedia.org/wiki/Module_(disambiguation)#Computing_and_engineering和https://en.wikipedia.org/wiki/Dependency_injection吗? – Bergi