这是一个大升级,但是对原来的 16 的项目非常不友好,我尝试 ng update ,遇到了很多奇葩的错误,后来干脆重新 ng new app ,在重新复制代码。然后发现了很多变化:
我 NAS 上映射的驱动器,无法使用了。比如把 NAS 的路径映射为 W:\,然后在 W:\下创建 app ,现在创建后无法执行,报错,这导致无法多机开发。
组件多了一个 standalone: true 的概念,这样以前可以直接用的组件,都需要按需 import 一下,其实这样挺好的,防止不必要的加载,但代码改起来累死了,尤其是 material.angular 。。。
以前的 app.module.ts 不见了,很多都需要自己改地方
and much more....
1
abelmakihara 363 天前
那就非必要不升级(x
|
2
orzorzorzorz 363 天前 1
这是很久没更过版本了吧,我 16 升 17 就改了版本号跟 tsconfig ,其它也没动。
第一点不知道为啥会跟一个前端库有关,如果是路由问题可以加打包参数解决。第二点没办法。第三点可以加回去的,记得是在 angular.json 里改配置。 |
3
newaccount 363 天前 1
啊? 16 到 17 基本无感升级的啊。换 standalone 也就跑一下 ng generate 再改改就差不多了
就是切换成新的 application builder 有点烦,weixin-js-sdk 只能 amd ,得手工改改 上周 ng-zorro-antd 17 和 spring boot 3.2 都发布了,整的跟过节似的 |
4
cslive 363 天前
不习惯 new 的时候加参数 standalone=false ,就变成 module 模式了
|
5
chf007 363 天前 1
这节点也是好久没人来发言了吧
|
6
nzbin 363 天前
你这 16 的代码写的是有多烂。。。还有,升级出问题,git 回退不就行嘛。。。
|
7
crysislinux 363 天前 via Android
module 还是可以用的吧?
|
8
mknightoy 363 天前
突然看到这个词楞了一下,都快忘了这个框架了,不知道为什么有点感叹?
|
9
rppig42 363 天前
有没有国内 Angular 讨论群组鸭
|
10
credo123 363 天前
我是 16 升到 17 的啊.已经 OK 了.基本还行啊.
每次升级必备的配置文件全部检查一次,调了不少配置.不过还好.每次升级我都会创建个新项目,对比老项目检查一次. 第 1 点,没这需求.也没太明白这需求. 第 2 点,ngzorro 老早就建议这么搞,我跟着也全改了. 第 3 点,我升级上来的这文件还在,继续用着. ng zorro 17 和 springboot 3.2 都升了, 测试通过,没啥大问题.跟上面 newaccount 说的一样,集中发布,整的跟过节似得. |
11
credo123 363 天前
第二点我说错了哈.....
|
12
duke807 363 天前
所以,我现在只用 vanilla js
想当年 angular 1.x 的时候,我就在用 angular ,2.x 也用了一段时间 |
13
duke807 363 天前
当年,N 多老项目由 callback hell 改成 async 操作,再配上 1.x 到 2.x 升级,才是真的要疯掉
|
14
heyline 363 天前
你们都不依赖低版本库的吗,我也想升级
|
16
wjpauli OP 你们觉得 16->17 无感升级,是因为你们仅仅在项目中使用了 ng update 。我建议你们直接用 17 创建一个新的项目,会发现项目的结构区别很大。
|
17
wjpauli OP @credo123 第 1 点,没这需求.也没太明白这需求.
我来解释一下这个需求:就是几台电脑开发同一个项目,比如在台式机开发后,外出用笔记本继续开发,我只需要把项目保存在 NAS 的路径上就可以了,为了防止不理解//192.168.1.x 这样的 ip 地址,我特意把这个 NAS 目录映射成驱动器,给了盘符。但是到了 v17 ,ng new 创建的 project ,直接 ng server 是不可以的。现在只能又用上了 Synology Driver Client ,本机开发,同步 NAS 。 |
18
parthenon2007 336 天前
一直没弄明白,standalone 组件的好处是什么?
|
19
chnwillliu 322 天前 via Android
@parthenon2007 很多动态挂载的 component 就特别适合 standalone component 。
你有个 modal service 可以接受任意 component 弹窗,或是要手动 lazy load 一个组件,你就会发现 component 必须装在 NgModule 里的设定这时候很累赘。 ES6 dynamic import 这个 component 还不行,还要先拿它所在的 ngModule 的 ref , 搞什么 resolve ComponentFactory , 用 factory 再 create component 。 |
20
parthenon2007 321 天前
@chnwillliu #19 据说还可以减少最终 bundle 的体积。
|