被 angular17 搞疯了

353 天前
 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....

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

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

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

ES6 dynamic import 这个 component 还不行,还要先拿它所在的 ngModule 的 ref , 搞什么 resolve ComponentFactory , 用 factory 再 create component 。
parthenon2007
311 天前
@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