最近在搞个前端项目,寻思用Aurelia试试,结果打开文档就傻眼了——这版本号跟我两年前用的完全对不上。我记得上次用还是v1.3.x,现在文档首页赫然写着v2.0.2。赶紧打开命令行敲了个npm view aurelia-framework version,终端果然弹出2.0.2,好家伙直接跨大版本了!
升级踩坑实战
立马把旧项目复制了份当小白鼠,在*里把所有aurelia开头的依赖版本号前加了个^2.0.0。敲完npm install瞬间报错,原来旧插件都不适配了。翻官方迁移指南才明白,v2把三十多个官方插件压缩成七个核心包,原先的aurelia-validation直接合并进@aurelia/validation了。
重跑项目时控制台疯狂报错:"Cannot read properties of undefined",排查发现连组件声明方式都变了。以前装饰器写法:
旧版写法- @customElement('my-component')
- @bindable() title
小编温馨提醒:本站只提供游戏介绍,下载游戏推荐89游戏,89游戏提供真人恋爱/绅士游戏/3A单机游戏大全,点我立即前往》》》绅士游戏下载专区
- import { customElement, bindable } from '@aurelia/runtime-html'
- 直接写类里加decorators属性
真香现场
硬着头皮改完二十几个组件后,突然发现打包速度嗖嗖快。用webpack5实测:v1冷启动要12秒,v2只要3.8秒!官方说彻底重写了模板引擎,连带着组件渲染性能涨了40%。最惊喜的是以前要写整页XML的生命周期钩子,现在直接简化成三行:
新版beforeBind- 直接在class里写beforeBind(){ }
- 连@lifecycleHooks装饰器都省了
不过路由配置把我坑惨了,v2要求必须用注册路由,老项目里上百个route配置都得重写。折腾到凌晨三点总算跑通,抬头一看窗外天都蒙蒙亮了。
现在用下来感觉像换了套框架,API设计明显更现代化。就是升级过程太费头发,建议后来者直接开新项目别折腾迁移。
