用了快半年的Angular吗,本文主要想谈谈Angular框架的不足。
在JS分析网站StateOfJS上,看到Angular的受欢迎程度在持续走低。
https://2019.stateofjs.com/front-end-frameworks/
1.命名太长了,文件太多
Angular的官方推荐命名,是要在类名后加上.component或者.service来分辨类别。这样的写法会让文件名冗长,占用VSCode的tab空间,引用也要写更长代码。
2.ngModule非常累赘
无论是Vue还是React都是可以通过引用,调用的方式写代码,但是在Angular中除了引用调用,还需要在module上声明一下。
module的引用过多还非常容易造成引用混乱,service,component的重复引用相互引用很容易造成编译错误。
3.体积大
比起React,Vue,Angular编译出来的包体积最大,这会导致用户首次加载速度缓慢。
4.功能过多
Angular提供了太多的功能,虽然Vue在新版本也加入了directive和pipe的功能。Angular是始作俑者,过多的灵活的功能会让开发分不清一个标签属性是一个directive还是属性本身。各类程序员的思路不同的时候就会出错一个大杂汇的东西。
5.rxjs太晦涩了
rxjs学习成本很高,官方推荐的请求处理是使用框架内的httpClient对象也使用的是rxjs。致使请求类封装不容易。无法实现工厂模式或者单例模式。
6.语法糖对打包工具不友好
使用@之类的语法糖语句是Angular的特点,但是webpack打包的时候识别友好度不如代码引用,在正式版和开发版的打包会出现不一致的情况。
7.service 注入写法的缺陷
这种在 constructor 注入服务的写法一点不高明,封装类库变得困难,为了能实现注入还需要一层一层引用service,在module中声明各种麻烦。service还会使测试代码编写困难。