被 angular17 搞疯了

2023-11-30 14:26:01 +08:00
 wjpauli

这是一个大升级,但是对原来的 16 的项目非常不友好,我尝试 ng update ,遇到了很多奇葩的错误,后来干脆重新 ng new app ,在重新复制代码。然后发现了很多变化:

  1. 我 NAS 上映射的驱动器,无法使用了。比如把 NAS 的路径映射为 W:\,然后在 W:\下创建 app ,现在创建后无法执行,报错,这导致无法多机开发。

  2. 组件多了一个 standalone: true 的概念,这样以前可以直接用的组件,都需要按需 import 一下,其实这样挺好的,防止不必要的加载,但代码改起来累死了,尤其是 material.angular 。。。

  3. 以前的 app.module.ts 不见了,很多都需要自己改地方

  4. and much more....

4130 次点击
所在节点    Angular
20 条回复
abelmakihara
2023-11-30 14:35:06 +08:00
那就非必要不升级(x
orzorzorzorz
2023-11-30 14:44:38 +08:00
这是很久没更过版本了吧,我 16 升 17 就改了版本号跟 tsconfig ,其它也没动。
第一点不知道为啥会跟一个前端库有关,如果是路由问题可以加打包参数解决。第二点没办法。第三点可以加回去的,记得是在 angular.json 里改配置。
newaccount
2023-11-30 15:20:26 +08:00
啊? 16 到 17 基本无感升级的啊。换 standalone 也就跑一下 ng generate 再改改就差不多了
就是切换成新的 application builder 有点烦,weixin-js-sdk 只能 amd ,得手工改改
上周 ng-zorro-antd 17 和 spring boot 3.2 都发布了,整的跟过节似的
cslive
2023-11-30 15:23:53 +08:00
不习惯 new 的时候加参数 standalone=false ,就变成 module 模式了
chf007
2023-11-30 15:28:58 +08:00
这节点也是好久没人来发言了吧
nzbin
2023-11-30 16:23:29 +08:00
你这 16 的代码写的是有多烂。。。还有,升级出问题,git 回退不就行嘛。。。
crysislinux
2023-11-30 16:31:53 +08:00
module 还是可以用的吧?
mknightoy
2023-11-30 16:33:00 +08:00
突然看到这个词楞了一下,都快忘了这个框架了,不知道为什么有点感叹?
rppig42
2023-11-30 17:08:20 +08:00
有没有国内 Angular 讨论群组鸭
credo123
2023-11-30 17:09:45 +08:00
我是 16 升到 17 的啊.已经 OK 了.基本还行啊.
每次升级必备的配置文件全部检查一次,调了不少配置.不过还好.每次升级我都会创建个新项目,对比老项目检查一次.
第 1 点,没这需求.也没太明白这需求.
第 2 点,ngzorro 老早就建议这么搞,我跟着也全改了.
第 3 点,我升级上来的这文件还在,继续用着.

ng zorro 17 和 springboot 3.2 都升了, 测试通过,没啥大问题.跟上面 newaccount 说的一样,集中发布,整的跟过节似得.
credo123
2023-11-30 17:26:00 +08:00
第二点我说错了哈.....
duke807
2023-11-30 17:28:28 +08:00
所以,我现在只用 vanilla js
想当年 angular 1.x 的时候,我就在用 angular ,2.x 也用了一段时间
duke807
2023-11-30 17:30:25 +08:00
当年,N 多老项目由 callback hell 改成 async 操作,再配上 1.x 到 2.x 升级,才是真的要疯掉
heyline
2023-11-30 17:51:31 +08:00
你们都不依赖低版本库的吗,我也想升级
nzbin
2023-11-30 18:46:42 +08:00
@rppig42 我这倒是有个 QQ 群:892182140
wjpauli
2023-12-02 21:25:40 +08:00
你们觉得 16->17 无感升级,是因为你们仅仅在项目中使用了 ng update 。我建议你们直接用 17 创建一个新的项目,会发现项目的结构区别很大。
wjpauli
2023-12-02 21:30:23 +08:00
@credo123 第 1 点,没这需求.也没太明白这需求.
我来解释一下这个需求:就是几台电脑开发同一个项目,比如在台式机开发后,外出用笔记本继续开发,我只需要把项目保存在 NAS 的路径上就可以了,为了防止不理解//192.168.1.x 这样的 ip 地址,我特意把这个 NAS 目录映射成驱动器,给了盘符。但是到了 v17 ,ng new 创建的 project ,直接 ng server 是不可以的。现在只能又用上了 Synology Driver Client ,本机开发,同步 NAS 。
parthenon2007
357 天前
一直没弄明白,standalone 组件的好处是什么?
chnwillliu
343 天前
@parthenon2007 很多动态挂载的 component 就特别适合 standalone component 。

你有个 modal service 可以接受任意 component 弹窗,或是要手动 lazy load 一个组件,你就会发现 component 必须装在 NgModule 里的设定这时候很累赘。

ES6 dynamic import 这个 component 还不行,还要先拿它所在的 ngModule 的 ref , 搞什么 resolve ComponentFactory , 用 factory 再 create component 。
parthenon2007
342 天前
@chnwillliu #19 据说还可以减少最终 bundle 的体积。

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

https://www.v2ex.com/t/996532

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

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

© 2021 V2EX