才学三天,也不知道说的对不对
将来我我来用 angular 开发的话,估计思路的话,不会像 angular 传统项目那样各种注入,应该还是和 vue 、react 差不多吧,angular 自带的库不用,各种第三方请求库,import 、export,能不注入就不注入了,维护下 module 就好。
1
erwin985211 2021-03-09 14:55:41 +08:00 1
垃圾前端表示,用 angluar 是我离职的第一原因。我用的是 angluar6
|
2
Perry 2021-03-09 14:58:10 +08:00 via iPhone 18
简单概述一下:我不会用的或者学不会的东西就是难用的东西
|
3
ychost 2021-03-09 15:03:22 +08:00 1
等两年后再看你的代码,看看那种写的还能一眼看懂,好维护,
|
4
zhuweiyou 2021-03-09 15:03:41 +08:00 1
vue react 也有注入功能
|
5
debuggerx 2021-03-09 15:05:19 +08:00 4
个人开发和工程项目开发的区别。个人开发怎么方便怎么快怎么来,但是多人大项目一直迭代,很多“简单”、“减少工作量”的做法直接会导致项目失控,被这样坑过的人才能真正理解“学院派框架”的优点。
如果看一些资深架构设计的或者大公司的 vue/react 项目,其实很多也早已经变成了“麻烦”的样子。 |
6
Oktfolio 2021-03-09 15:09:03 +08:00
rx 和 IOC DI 不就是 Angular 的核心吗?
|
7
tiedan 2021-03-09 15:09:28 +08:00 11
又开始了
|
8
zhoushushu OP @debuggerx 说的对的,公司现在的 vue 、react 项目确实失控了,也需要“学院派框架”来治理一下了。
|
9
Oktfolio 2021-03-09 15:15:26 +08:00
没逼你用 httpclient,用 fetch 应该也可以,axios 就算了吧。Observable 比 Promise 强大多了。
|
10
cslive 2021-03-09 15:21:14 +08:00
angluar 还好吧,适合后端学,特别是搞 java 得,上手特别快
|
11
zjsxwc 2021-03-09 15:22:01 +08:00
虽然我不是前端,但三个都用过的我,从工程性考虑,我站 angular
|
12
zhoushushu OP @Perry 不大容易能找到最近 10 或者 11 的学习资料,官网文档?就一个小练习,没有工程上的案例。
|
13
erwin985211 2021-03-09 15:30:21 +08:00 3
只要 angular 的帖子,必有我是后端,我挺喜欢 angular 的。想听听前端大佬对 angular 的看法,为啥 angular 这么边缘
|
14
ecuplxd 2021-03-09 15:41:19 +08:00
其它不说,但 VS Code 是最适合做 Angular 开发的。
|
15
yaphets666 2021-03-09 15:45:52 +08:00
你这几条无非是开发效率问题.为啥 react 和 ag 在国内干不过 vue,主要是开发效率不行.
react 和 ag 在发达国家是很流行的,我观察了很多加拿大,美国的招聘信息,基本没有用 vue 的. |
16
zzzmh 2021-03-09 15:47:31 +08:00 2
java 出身的 前端小白 表示 ,看的一愣一愣的,学 vue 学了一年,以为自己会写了,后来发现没学 vue cli,就等于不会,又学了 1 年 vue cli 。至今还迷迷糊糊 模棱两可
|
17
Austaras 2021-03-09 15:53:26 +08:00
连 DI 是干什么的都不知道,这就是当代前端吗
|
18
Austaras 2021-03-09 15:54:05 +08:00
不过 module 确实不太有用,似乎官方也在淡化这个东西
|
19
mlxj 2021-03-09 16:09:56 +08:00
路子走偏了啊,B 站是用来学习这个的?
|
20
zhoushushu OP @mlxj 其他地方就没有找到,上面各个都说好,也不知道他们在哪里学的。
|
21
crclz 2021-03-09 16:16:14 +08:00
哈哈哈,除了最后一点,其他的自己去领悟。
某个框架的某些特性看似设计垃圾,当你明白了为什么要这么设计的时候,就证明你代码能力提升了。 |
22
amundsen 2021-03-09 16:17:29 +08:00
三个框架都用过,比较喜欢 angular 。
|
23
Desiree 2021-03-09 16:23:54 +08:00
学了三天...
|
24
wunonglin 2021-03-09 16:29:00 +08:00
官网文档不看去 B 站。。。66666
|
25
zhoushushu OP @wunonglin 官网有项目案例?
|
26
wunonglin 2021-03-09 16:40:40 +08:00
@zhoushushu #25 你要啥案例? github 上大把
|
27
codeMan5495 2021-03-09 16:45:14 +08:00
angular 也许就是过滤这种的
|
28
zhoushushu OP @codeMan5495 哎呀,这话讲的。。。就是一个框架嘛,工作嘛,开心点不好啊。
|
29
kingzeus 2021-03-09 19:01:56 +08:00
我感觉复杂的业务逻辑全靠 rxjs 了。
|
30
April5 2021-03-09 20:35:55 +08:00
先了解下 IOC
|
31
KuroNekoFan 2021-03-09 21:27:49 +08:00 via iPhone
axios 的 interceptor 的理念真的荼毒甚广……
|
32
youngxhui 2021-03-09 21:34:20 +08:00 via Android
@zhoushushu 官网的确有案例
|
33
GiantHard 2021-03-09 22:04:31 +08:00 1
我感觉楼主的疑惑主要在两点:
1. 为什么要“控制反转”?答案很简单,为了避免代码耦合。 2. promise 非常方便,为啥还要 rxjs ? promise 确实方便,但是功能过于简单,没法为 Angular 应用提供状态管理的能力。 |
34
lvsshuttao 2021-03-09 22:15:46 +08:00
分模块可以懒加载,公共的服务 /组件都可以组合成一个模块
rxjs 和 axios 感觉都 OK,rxjs 可以对结果进行二次加工处理,特别是在 后端 /服务商 返回不同的数据格式时特有用 注入这块还有令牌这块,最方便的地方就是随意替换,比如共享模块 A 里面有一个服务 B,注入了 C ; 当 AA1 模块使用到 A 模块时,你可以把 A 模块中的 C 替换为 aa1 ; 当 BB1 模块使用到 B 模块时,你可以把 A 模块中的 C 替换成 bb1; 再配合那个 env... 配置文件,你想切换测试 /生产服务器、切换不同版本的 api 是很简单的 |
35
nzbin 2021-03-09 22:22:43 +08:00
@zhoushushu 不用刻意找 10 或者 11 的资料,2 以上都是一样的。官网就是最好的资料,进阶的话就看 indepth 和 medium 上面的文章,知乎上面也有一些翻译。
|
36
lewinlan 2021-03-09 22:22:49 +08:00 via Android
讲规矩才上得了规模
|
37
hantsy 2021-03-09 22:27:45 +08:00
正常,很多学 Angular 都是止步于 Typescript 和 Rxjs 。
|
38
hantsy 2021-03-09 22:30:05 +08:00
rxjs 和 axios 根本就不是一个类型东西都是能扯到一起比较。
Angular 中有 HttpClient, HttpIntercepter 实现 API 调用,安全不要太简单啊. |
39
hantsy 2021-03-09 22:30:46 +08:00
劝楼主去用 Vue 。我估计你 React 也用不来。
|
40
nzbin 2021-03-09 22:40:52 +08:00
楼主,你这吐槽真的是完全没搞明白啊,简单答一下吧
1. angular 的模板很强大的,循环递归复用非常方便,而且有 language service 的加持,代码提示很友好 2. 模块拆分非常适合大型项目,至于你说的要加很多文件,难道不用 cli 的自动化吗?觉得不够用的话还可以自己扩展 schematics,这一点 react 和 vue 真比不了 3. httpClient 和 axios 不是一个体量的东西,你只是不熟悉而已,至于 RxJS,稍微复杂点的请求处理立马就能感受到它的优势,而且同样可以搭配 aysnc 、await 4. 依赖注入就不说了,多用用自然明白 5. 编译太慢?反正我是从没遇到这个问题,vscode 开发非常舒服 |
41
Adalwin 2021-03-09 23:41:42 +08:00
不看官网看 B 站....
唉... |
43
xiang0818 2021-03-09 23:59:02 +08:00
后端的同学都比较喜欢 ng 哦~
|
45
LokiSharp 2021-03-10 00:00:32 +08:00 via iPhone
Angular Spring .NET 这类真企业级框架麻烦的地方都是大公司开发踩了 10 几年总结的经验,几天跑理解不了的
|
46
laike9m 2021-03-10 00:55:08 +08:00 via Android
angular 就是给 Java 程序员设计的
|
47
yuuko 2021-03-10 01:01:43 +08:00 via Android
等你用 angular 写项目了,真正的问题就来了,编译十几二十分钟,热更新烂的一逼,运存占用巨大,电脑卡顿等等
|
48
kwrush 2021-03-10 08:12:49 +08:00
rxjs 很强大,和 axios 都不是一路东西,刚好自带 ajax 而已
|
49
jun4rui 2021-03-10 08:57:34 +08:00
一个框架就是一个思路,所以任何框架都不能用别的框架思维去套,顶多有点类似的地方。
所以新人学东西有时候比较快就是这个原因,没有任何先入为主的固有思维。 这种思维年纪大了会比较致命。 |
50
hareandlion 2021-03-10 09:25:35 +08:00
同在学 Angular,感觉框架设计代表的是设计模式,额外的声明可以认为是编码规范吧,module 设计与逻辑抽象的实现有关,可能不同框架的实现方式都不同,没看出高下之分
|
51
ReysC 2021-03-10 10:20:16 +08:00
网络库可以用 await/async 使用 toPromise 即可,提供了灵活的方式
|
52
lscexpress 2021-03-10 10:49:10 +08:00
@jun4rui
反正我学新技术,都是先看官方文档,不会想太多 |
53
ahonn 2021-03-10 10:54:59 +08:00
想要简单你就不应该看 Angular
|
54
meshell 2021-03-10 11:09:51 +08:00
https://github.com/akveo/ngx-admin , https://github.com/akveo/nebular 我一直通过这两个项目来学习 ng...不过先要知道 ng 的基本知识概念,官方文档走一遍.
|
55
namelosw 2021-03-10 11:50:51 +08:00 4
React 和 Angular 和 AngularJS 我都用过好多年, 而且 Angular 2 出来之前我就已经很熟 Rx 和 TS 了, 简单结论: 别学别用 Angular.
Angular 扩展性可维护性其实都不如 React/Vue, 而且复杂得一批, 细节还特别坑, 很多互相矛盾的地方. 每个地方技术实现上看都可以, 拼起来就是个渣, 给人一种“没有产品经理”, 想起来啥就做啥的感觉. 说 Angular 好的基本就是几种: 1. 后端不懂前端, 觉得看着熟悉. 2. 熟悉 React 和 Vue, 但不那么熟悉 Angular, 别人家的草更绿. 3. 只熟悉 Angular, 所以互相没比较. 4. 做的东西太简单, 用 Angular 还没撞墙. 总得来说 Angular 给人的感觉就是不咋懂前端的问题: 1. 鼓励 MVVM 把状态分散到组件, 不像 React 那样鼓励 Hoisting. 你必须玩命给同事洗脑要 Hoisting, 要用状态管理, 不然写着写着状态就分散到全世界, 到处都不同步. 2. 更新也是个大坑, 用 push only 满地都是 markForCheck. 导致写库和写业务代码完全不一样, 导致 Angular 用户大部分都不会写库, 有种重新发明了手动挡…吧 JS 改造成 C++的感觉. 3. 不用 push only 的时候还是 AngularJS 那一套, 靠 Zone 排队, 问题是即便这样很多地方还是要手动 runInZone, 这个问题根本无解, 特别容易造成隐性 bug, 跟 React/Vue 比一开始设计思路根本就是错的. 4. 扩展性, 抽象性好嘛? 还不是被高阶组件, hooks, render callback 吊打. OO 在这方面只能说菜得抠脚, 而且<ng-container> <ng-template> <ng-content>不仅迷惑, 而且加起来也被 props.children 吊打. Angular 也不是一无是处, 偶尔有点闪光点: 1. Reactive form, 和 UI 解耦的 form, React 和 Vue 明显也可以做, 但是不知道为啥大家都不用. 2. Async pipe, 既然发明了 template 引擎, 就得好一点… 3. AOT? AOT 也不能算闪光点, 因为前面的屎山堆太多, 编译起来太大了, 只能用这种高级操作挽回一点点. 而且跟 Svelte 比就是弟弟. |
56
Stevearzh 2021-03-10 12:10:39 +08:00
rxjs 怎么成网络请求模块了... 你要比也得和 redux 或者 vuex 比啊
|
57
quan01994 2021-03-10 13:35:37 +08:00
rxjs 很好。
|
58
TomatoYuyuko 2021-03-10 13:45:17 +08:00
工具而已,不喜欢用,那就是不好用的工具
|
59
mxT52CRuqR6o5 2021-03-10 13:58:21 +08:00 via Android
@namelosw
+1,不是 spring 程序员完全没必要学 |
60
Mrxx 2021-03-10 14:01:44 +08:00 1
怀念那个 jQuery 的时代
|
61
ccsulzf0627 2021-03-10 14:07:20 +08:00
@yuuko 换台好电脑吧,离谱,十几分钟都来了
|
62
mxT52CRuqR6o5 2021-03-10 14:07:32 +08:00
https://www.zhihu.com/question/27053548
根据知乎上几个高赞回答,spring 里依赖注入的原因一部分和 java 本身有关,一部分是方便测试 而 js 本身没有 java 那部分的限制,有 vdom 时也已经就可以做单元测试了 |
63
ccsulzf0627 2021-03-10 14:09:09 +08:00
@Mrxx 我现在就在写 jQuery
|
64
Mrxx 2021-03-10 14:13:42 +08:00
以前做个项目,咔咔咔,几个小时上线了
现在做个项目 npm install composer install .... 几天过去了,环境还没搭好 干! |
65
xcstream 2021-03-10 14:36:09 +08:00
开发效率高,快速做完了,老板布置新任务。
开发门槛高,别人难以替代你。 |
66
charlie21 2021-03-10 15:19:14 +08:00
框架复杂有复杂的好处,它可以劝退一批人,剩下的不会被 35 岁淘汰嘛 大家其乐融融
FLUX 模式和 MVVM 模式不过是 2 种设计模式而已(写 GUI 还有很多种设计模式,理解设计模式才能理解模块划分),当然都可以用来写 GUI 啊,FP 和 OO 又是天生的井水不犯河水,我只看到了前端圈的繁荣 前端圈自己就一副很看不起前端圈的样子我也是没想到的 |
67
bojue 2021-03-10 16:15:37 +08:00 via iPhone
先入为主的开发习惯,导致你说的几个点都说不到点上,框架不是为了简单,而是在开发效率,维护和性能做了一个平衡,当年开发 vue 的还喷 ng 的 ts 需要额外投入的,差不多的团队,团队开发中入门级的前端在框架的选择上没有任何话语权,别给自己加戏包括我自己
|
68
Austaras 2021-03-10 16:32:35 +08:00
|
69
namelosw 2021-03-10 16:56:57 +08:00
|
70
bojue 2021-03-10 17:05:31 +08:00
@namelosw 学了这么久这么多还把吊打挂在嘴上,tob 表单类项目为什么不能用 angular,你说的坑具体什么坑,一千多个组件的项目任何框架开发起来都多少出点问题,就看谁先挂
|
72
Austaras 2021-03-10 17:14:59 +08:00
@namelosw 只有有需要 hoist 的才 hoist,没需要的不共享给别人才是对的,你只不过是把别人偶然犯的错误当作框架的缺陷而已。至于什么“凭空创造”“”前端问题”之类的大词,一看就是纯装逼,在知乎之类的地方讲讲么拉倒了,不要以为能在 V2EX 忽悠到人
|
73
hoyixi 2021-03-10 17:16:15 +08:00
其实是风格问题。 以前说过,G 家的工程师脑回路总感觉和大多人是不一样的, 以前用 G 家产品的 API,从 API 设计,以及通过 API 猜测 G 家产品背后的数据库之类字段设计,都感觉脑回路比较奇特~
这也没什么,毕竟每个人每个公司都有自己的风格。 但是,但是,你如果把东西给别人用,那就是另一码事了,虽然开发者这个群体比较特殊,但是也算 G 家的“用户”,总得考虑下用户体验和感受吧~ 这点 Apple 就好多了,API, 工具,文档,都舒服多了。 |
74
namelosw 2021-03-10 17:16:43 +08:00
@bojue
主要的坑就是满屏幕 MarkForCheck 如果不 MarkForCheck 一方面性能不太好, 另外一方面老得提防 runInZone. 即使自己记得住, 同事肯定也老忘. 然后没有 React props.children 和 Vue 的<slot/>好用 |
75
namelosw 2021-03-10 17:19:04 +08:00
@Austaras 一个 hoist 的 codebase 下发比不 hoist 的 codebase 上提容易得多. 后者就是没救.
|
77
namelosw 2021-03-10 17:27:02 +08:00
@Austaras > 至于什么“凭空创造”“”前端问题”之类的大词,一看就是纯装逼
所以人家几十 K 就挺好的框架为啥要几百 K 解决? 不是凭空创造是什么? 我 Ng 和 React 的项目都是同期开发的几十万行项目, 我分享的都是实际经验. 你啥 insight 也不提供直接就说我装逼. 反正谁踩坑谁难受. |
79
Austaras 2021-03-10 18:32:53 +08:00
@namelosw 醒醒,开了 ivy 之后也能做到 100k 以内,何况你这个问题不如去问问 react 为什么体积要膨胀到 100k 以上。你在这里空谈几十万行 code 一点意义都没有,GUI 是最容易堆砌互相之间没有关联的垃圾代码的地方
|
80
Austaras 2021-03-10 18:34:19 +08:00
@namelosw 你不要把你不会上提说成框架的问题,ng 里拆到单独的 service 非常容易,如果只要在组件里分享可以直接写在组件的 providers 里,而且性能要比对应的 react context 好很多
|
82
Austaras 2021-03-10 18:44:35 +08:00
|
83
wszgrcy 2021-03-10 18:46:48 +08:00 via Android
ng 大本营?
|
85
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 吧. |
86
Lemeng 2021-03-10 19:06:44 +08:00
上的少,看来 b 站真是什么都有啊
|
87
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 |
88
Solael 2021-03-10 20:07:56 +08:00
@namelosw zone 和状态管理确实是坑。rxjs 的状态管理虽然简洁但是不够用,所以很多项目做到中间要上 redux
|
89
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 也是做得到的 |
91
Austaras 2021-03-10 20:18:42 +08:00
算了没什么好争的,现存的流行前端技术都是互有优劣的,强行只看好处和只看坏处都不可取
|
93
yuuko 2021-03-10 20:41:58 +08:00 via Android
@Austaras 我们已经 ci 自动打包了,但是发个版要 20 分钟也是难受,开始向 react 迁移了
|
94
yuuko 2021-03-10 20:52:37 +08:00
我再来吐槽下,现在 angular11 都出来了,按理说 angular9 的生态应该很稳定了,于是我们决定从 8 升到 9,结果升级完发现 jit 热更新是炸的,只有 aot 模式的热更新能用,我真的是满头问号,按我们项目的规模,aot 模式热更新最少需要等待十几秒。。。
相关 issue https://github.com/angular/angular/issues/35265 |
95
KuroNekoFan 2021-03-10 20:58:54 +08:00
@namelosw #55 虽然现在很多人写 react 都一堆模板代码,但是现在比较推崇的实践难道不是不必 hoist 的就不 hoist ?
|
96
WillBC 2021-03-10 21:07:18 +08:00
开炮开炮!
|
97
Austaras 2021-03-10 22:08:36 +08:00
@yuuko 我是觉得 20 分钟发版没什么啦...不是正好摸鱼么, 不过你要是觉得时间长可以试着把 build-optimizer 关掉, 能快很多
|
98
Austaras 2021-03-10 22:09:26 +08:00
热更新倒是真的很垃圾, 不过这个东西本来就很难做, react 那边也一堆问题, 我最近也在研究这个
|
99
namelosw 2021-03-10 22:31:34 +08:00
@KuroNekoFan 对, 不过这个是对 hoisting 党说的. 再往前是从来不 hoisting 党.
考虑历史进程应该是不 hoisting < hoisting < 合理 hoisting. 单向的问题容易是 hoisting 太多, MVVM 的问题是容易 hoisting 太少. hoisting 太多的副作用比 hoisting 太少小一点. |
100
pigspy 2021-03-10 23:01:12 +08:00
react 和 angular 都挺好的,vue 才是学不下去
|