借着 vue 和 react 的思路,跟着 b 站视频学了三天 angluar11 后,我来吐吐槽。。。

2021-03-09 14:53:02 +08:00
 zhoushushu

才学三天,也不知道说的对不对

将来我我来用 angular 开发的话,估计思路的话,不会像 angular 传统项目那样各种注入,应该还是和 vue 、react 差不多吧,angular 自带的库不用,各种第三方请求库,import 、export,能不注入就不注入了,维护下 module 就好。

16346 次点击
所在节点    Angular
120 条回复
Austaras
2021-03-10 18:35:11 +08:00
@namelosw 我不提供 insight,起码没有拿技术名词(甚至都不是)来误导人,产出起码是正的
Austaras
2021-03-10 18:44:35 +08:00
@namelosw 剩下几条也反驳一下
2. 没人逼你用 push only,实际上只有极为特殊的情况或者像 antd 那样的组件库才需要用到,你给自己找麻烦非要怪 angular ?
3. 结合前一点,估计又是你瞎配置才需要 zone.run
4. 模版的表达能力的确有所欠缺,但是 angular 的模版已经是表达力最强的,而且你说的 slot 这套不是在 webcomponent 和 vue 里也有吗?不要把自己学不会的东西叫迷惑。而且这和 OO 一点关系都没有,我怀疑你都没有自己写过指令
wszgrcy
2021-03-10 18:46:48 +08:00
ng 大本营?
nzbin
2021-03-10 18:55:22 +08:00
@bojue 别被误导,我们几十万代码的项目也没这些事,看看 angular 官网和 react 官网的性能比较一目了然
namelosw
2021-03-10 19:05:30 +08:00
@Austaras
> 开了 ivy 之后也能做到 100k 以内
这不是消灭凭空创造的问题是啥?

> ng 里拆到单独的 service 非常容易
人家 React 和 Vue 上提的都是 reactive, ng service 就是个普通对象, 写个 getter 当 computed 都 loop 的飞起, 最后还得额外找个状态管理方案, 要不满屏幕 Rx 花式 map.

> 没人逼你用 push only
问题就在这, 为啥库和正常代码不能一样? 写代码学一套, 写库又学一套, 厉害厉害.

> 我怀疑你都没有自己写过指令
我连 ng1 的 parser 都写过好几年了, 我不写 directive 不写组件库我能知道 push only?

> slot 这套不是在 webcomponent 和 vue 里也有吗?
就是 webcomponent 和 vue 阿, 而且 React 没有. 你不是没用过 React 吧.
Lemeng
2021-03-10 19:06:44 +08:00
上的少,看来 b 站真是什么都有啊
yuuko
2021-03-10 19:45:14 +08:00
@ccsulzf0627 我不知道你说的离谱是什么意思?还是说你们项目小?我们项目开启 es5 支持+es6 module+ssr,编译内存占用直接超出 nodejs 默认可使用内存大小,必须手动设置 max_old_space_size 可用最大内存,整套编译下来 20 多分钟,编译过程整个电脑都卡了 (Macbook pro 13 16G 内存 17 版),整个项目经历 angular5 一路升级到 9

你可以看看官方 issue 有多少人有这个问题 https://github.com/angular/angular-cli/issues/13734
Solael
2021-03-10 20:07:56 +08:00
@namelosw zone 和状态管理确实是坑。rxjs 的状态管理虽然简洁但是不够用,所以很多项目做到中间要上 redux
Austaras
2021-03-10 20:08:00 +08:00
@namelosw
> 这不是消灭凭空创造的问题是啥
复杂的 svelte 程序也会带上大几十 kb 的 runtime,而且照你这么说带 runtime 的框架都是凭空创造问题?

> 人家 React 和 Vue 上提的都是 reactive,
噗,react 里哪有 reactive 的东西?你梦里

> 要不满屏幕 Rx 花式 map
不然呢,这不就是学不会 rx 喷 angular 么

> 写个 getter 当 computed 都 loop 的飞起
这种不是你自己的问题,这都能 loop 你写 hook 还不是原地爆炸?而且你可以用 ngrx 啊

> 问题就在这, 为啥库和正常代码不能一样? 写代码学一套, 写库又学一套, 厉害厉害.
因为团队哲学不一样。react 团队的确是不鼓励要提供高级 api 解决复杂的问题,angular 团队不一样啊,这也没有哪家一定是对的

> 我连 ng1 的 parser
这和 ng2 有一毛钱关系吗?你报菜名都只会报 angularjs 的?顺带你前面说的为什么没有 reactive form,那是因为 ng 先抽象了一套 NGValueAccessor,别的框架你想想要怎么办

> 你不是没用过 React 吧.
那我一开始就说了,这是模版和 jsx 的区别,两者互有优劣,你单举 jsx 的优势讲有什么意思,我还想说 angular 里随便搞搞指令就可以写复杂的表单验证暴打 jsx 呢,有意思吗?而且事实证明业界选择模版的框架并不少,何况 angular 里你非要搞 HOC 也是做得到的
Austaras
2021-03-10 20:08:47 +08:00
@yuuko 对自己好一点,搞个 CI CD 管线吧
Austaras
2021-03-10 20:18:42 +08:00
算了没什么好争的,现存的流行前端技术都是互有优劣的,强行只看好处和只看坏处都不可取
nzbin
2021-03-10 20:29:13 +08:00
@Austaras 有些人对 Angular 有种天生的偏见,怎么说都没用的
yuuko
2021-03-10 20:41:58 +08:00
@Austaras 我们已经 ci 自动打包了,但是发个版要 20 分钟也是难受,开始向 react 迁移了
yuuko
2021-03-10 20:52:37 +08:00
我再来吐槽下,现在 angular11 都出来了,按理说 angular9 的生态应该很稳定了,于是我们决定从 8 升到 9,结果升级完发现 jit 热更新是炸的,只有 aot 模式的热更新能用,我真的是满头问号,按我们项目的规模,aot 模式热更新最少需要等待十几秒。。。

相关 issue https://github.com/angular/angular/issues/35265
KuroNekoFan
2021-03-10 20:58:54 +08:00
@namelosw #55 虽然现在很多人写 react 都一堆模板代码,但是现在比较推崇的实践难道不是不必 hoist 的就不 hoist ?
WillBC
2021-03-10 21:07:18 +08:00
开炮开炮!
Austaras
2021-03-10 22:08:36 +08:00
@yuuko 我是觉得 20 分钟发版没什么啦...不是正好摸鱼么, 不过你要是觉得时间长可以试着把 build-optimizer 关掉, 能快很多
Austaras
2021-03-10 22:09:26 +08:00
热更新倒是真的很垃圾, 不过这个东西本来就很难做, react 那边也一堆问题, 我最近也在研究这个
namelosw
2021-03-10 22:31:34 +08:00
@KuroNekoFan 对, 不过这个是对 hoisting 党说的. 再往前是从来不 hoisting 党.

考虑历史进程应该是不 hoisting < hoisting < 合理 hoisting.

单向的问题容易是 hoisting 太多, MVVM 的问题是容易 hoisting 太少. hoisting 太多的副作用比 hoisting 太少小一点.
pigspy
2021-03-10 23:01:12 +08:00
react 和 angular 都挺好的,vue 才是学不下去

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/759986

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX