Angular生态丰富,功能强大,支撑了许多大型项目的开发。而且一直在前方等待着其他框架跟上。但是不得不直面的一个问题就是:“在等待其他框架跟上的这三年”,Angular在陆陆续续抛弃之前引以为豪的设计。又由于大量的历史包袱,这些设计变更又做得扭扭捏捏,做不到轻装上阵。比如NgModule之于Standalone,zone.js之于Singals,Rxjs更是一言难尽
Angular虽然有许多超前的架构设计和工程化能力,但是就目前而言,仍有以下不足:
而Cabloy-Front就很好的解决了angular的这些短板。Cabloy-Front是一款支持ioc容器的Vue3框架,有以下特点:
口说无凭,我们简单看一下cabloy-front的代码风格是怎样的:
在组件中定义一个响应式变量count,并且添加两个方法修改变量
export class MotherPageCounter {
count: number = 0;
inrement() {
this.count++;
}
decrement() {
this.count--;
}
}
采用tsx语法使用count
export class RenderPageCounter {
render() {
return (
<div>
<div>count(ref): {this.count}</div>
<button onClick={() => this.inrement()}>Inrement</button>
<button onClick={() => this.decrement()}>Decrement</button>
</div>
);
}
}
将count逻辑抽离出来,创建一个Counter Bean
@Local()
export class Counter {
count: number = 0;
inrement() {
this.count++;
}
decrement() {
this.count--;
}
}
使用装饰器函数@Use注入bean
export class MotherPageCounter {
@Use()
$$counter: Counter;
}
采用tsx语法使用已注入的bean实例
export class RenderPageCounter {
render() {
return (
<div>
<div>count(ref): {this.$$counter.count}</div>
<button onClick={() => this.$$counter.inrement()}>Inrement</button>
<button onClick={() => this.$$counter.decrement()}>Decrement</button>
</div>
);
}
}
Cabloy-Front框架已开源:https://github.com/cabloy/cabloy-front