V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wjpauli
V2EX  ›  Angular

被 angular17 搞疯了

  •  
  •   wjpauli · 2023-11-30 14:26:01 +08:00 · 4060 次点击
    这是一个创建于 372 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这是一个大升级,但是对原来的 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....

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

    ng zorro 17 和 springboot 3.2 都升了, 测试通过,没啥大问题.跟上面 newaccount 说的一样,集中发布,整的跟过节似得.
    credo123
        11
    credo123  
       2023-11-30 17:26:00 +08:00
    第二点我说错了哈.....
    duke807
        12
    duke807  
       2023-11-30 17:28:28 +08:00
    所以,我现在只用 vanilla js
    想当年 angular 1.x 的时候,我就在用 angular ,2.x 也用了一段时间
    duke807
        13
    duke807  
       2023-11-30 17:30:25 +08:00
    当年,N 多老项目由 callback hell 改成 async 操作,再配上 1.x 到 2.x 升级,才是真的要疯掉
    heyline
        14
    heyline  
       2023-11-30 17:51:31 +08:00
    你们都不依赖低版本库的吗,我也想升级
    nzbin
        15
    nzbin  
       2023-11-30 18:46:42 +08:00
    @rppig42 我这倒是有个 QQ 群:892182140
    wjpauli
        16
    wjpauli  
    OP
       2023-12-02 21:25:40 +08:00
    你们觉得 16->17 无感升级,是因为你们仅仅在项目中使用了 ng update 。我建议你们直接用 17 创建一个新的项目,会发现项目的结构区别很大。
    wjpauli
        17
    wjpauli  
    OP
       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
        18
    parthenon2007  
       345 天前
    一直没弄明白,standalone 组件的好处是什么?
    chnwillliu
        19
    chnwillliu  
       330 天前 via Android
    @parthenon2007 很多动态挂载的 component 就特别适合 standalone component 。

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

    ES6 dynamic import 这个 component 还不行,还要先拿它所在的 ngModule 的 ref , 搞什么 resolve ComponentFactory , 用 factory 再 create component 。
    parthenon2007
        20
    parthenon2007  
       330 天前
    @chnwillliu #19 据说还可以减少最终 bundle 的体积。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2870 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 13:14 · PVG 21:14 · LAX 05:14 · JFK 08:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.