uioc icon indicating copy to clipboard operation
uioc copied to clipboard

IoC Framework for us

Results 7 uioc issues
Sort by recently updated
recently updated
newest added

uioc一直没增加这个接口支持的原因是只要有一个组件模块是异步加载的,那么获取该组件或者有对该组件依赖的组件就会出现非预期情况。 同步接口的初步想法是递归检测该组件以及依赖的组件模块是否已经加载,有任一未加载则抛异常,否则正常返回组件。

help wanted

现在的情况: ```javascript // module.js export default class DefaultClass {}; export class Class1 {} export class Class2 {} // ioc.js ioc.addComponent('component', {module: 'module'}); ``` 以上情况通过配置module关键字获取component时,获取到的仅仅是DefaultClass实例,想要配置获取Class1和Class2目前简单的方式得通过es6 import + creator的方式进行。或者要自己写插件支持,这个场景比较常见,打算内置支持。

我们知道,在Spring中组件是可以声明式注册和注入的 ``` java @Service public class Knife implements Weapon { // ... } public class Character { @Autowired public Knife setWeapon(Weapon weapon) { // ... } } ``` 但是JavaScript在前端环境中,由于并没有类似`ClassLoader`的机制在运行前扫描所有的组件,所以纯粹前端环境是无法做自动注入的(根本不知道有哪些组件存在) 但是如果我们在构建过程或者后端有一定的工作可以扫描所有的文件,显然可以做到声明式的配置,因此后续可以考虑这样的工具,作用是扫描所有的`.js`文件查找所有注册的组件和注入关系...

我们需要让uioc支持ES5通过`Object.defineProperty`定义的setter,一个setter的判断方法比较简单: ``` js var descriptor = Object.getOwnPropertyDescriptor(obj, propertyName); return descriptor && descriptor.set ``` 一个问题是有可能一个对象同时有`foo`这个setter又有`setFoo`这个方法,我的建议是都注入一次 同时要支持auto的分析能把setter也找出来,这个逻辑也不难,配合`Object.getOwnPropertyDescriptor`就行了 我想周一是不是有可能完成这个功能,包括线下沟通的因为ES6 class默认成员不能枚举导致的`for .. in`失效问题 这里是一个已经写完的代替`for .. in`的方法 ``` js Setter.prototype.findAllSetters = function(config, instance) { var...

一个对象不是ioc创建出来的,但需要注入其属性 麻烦在于,不知道对应的module id,没有ioc里的config id,也不知道类名,毕竟js没有元数据

在JAVA等语言中,有这样的方式: ``` java public interface Actable { void setWeapon(Weapon weapon); Weapon getWeapon(); } pubilc class Wizard implements Actable { // ...实现 } public class Amazon impolments Actable { // ...实现...

## 构造函数注入时,有循环依赖 ### 场景demo ``` javascript ioc.create({ A: { creator: function(instanceB) { this.b = instanceB } args: [{ $ref : 'B' }] }, B: { creator: function(instanceA) { this.a =...