【发布时间】:2017-11-20 23:23:06
【问题描述】:
我想按名称注入 lodash,如下所示:
let val = function(lodash){
// lodash will be injected, simply by using require('lodash');
};
但是说我想重命名导入,我想做这样的事情:
let val = function({lodash:_}){
};
或
let val = function(lodash as _){
};
有没有办法使用 ES6/ES7/ES8 或 TypeScript 来做到这一点?
请注意,这个 DI 框架所做的工作不仅仅是 require('x')...它会首先尝试注入其他值,如果不存在其他值,那么它将尝试请求该值。
还要注意,这里的要求是,当您调用 val.toString() 时,“lodash”将被视为参数名称。但是 _ 而不是 lodash 会在运行时在函数体内看到。这是因为为了注入 lodash,我们调用 fn.toString() 来获取参数名称。
【问题讨论】:
-
您想创建一个 DI 库,您可以在其中拥有一个设置了变量的函数并且这些函数是必需的?
-
我想在按名称注入后重命名变量。 Lodash 匹配依赖名称,但我想让他们从函数范围内自动重命名它。
-
好的,它与 webpack 一起使用,还是您希望它是通用的?我的意思是所有包都已经加载了,你只是想让它们在函数 scoop 中重命名?
-
@AlexanderMills
npm init默认为1.0.0。我不知道为什么,但我总是这样做。 -
好吧,考虑到我用 mocha 测试了所有宣传的功能并且它具有 100% 的代码覆盖率,我想说它已经准备好生产了。
标签: javascript node.js typescript dependency-injection ecmascript-next