当前位置: 首页 > 科技观察

Vue2.7正式发布,代号火影忍者_0

时间:2023-03-15 11:10:13 科技观察

大家好,我叫CUGGZ。今天,Vue正式发布了2.7版本,版本名称为Naturo,火影忍者。即使现在Vue3已经是默认版本,但仍有很多用户因为兼容性依赖、浏览器支持要求,或者升级带宽不足等问题,不得不继续使用Vue2。在Vue2.7中,一些最重要的功能是从Vue3向后移植的,因此Vue2用户也可以从中受益。向后移植的特性CompositionAPISFCSFCCSSv-bind此外,还支持以下API:defineComponent():具有改进的类型推断(与Vue.extend相比)。h()、useSlot()、useAttrs()、useCssModules()。set()、del()和nextTick()也作为ESM构建中的命名导出提供。Vue2.7还支持模板表达式中的ESNext语法。使用构建系统时,编译后的模板渲染函数将通过为纯JavaScript配置的相同加载器/插件。这意味着如果为.js文件配置了Babel,它也将应用于SFC模板中的表达式。注意在ESM构建中,这些API作为命名导出提供(仅限命名导出):importVue,{ref}from'vue'Vue.ref//undefined,usenamedexportsinstead全局Vue对象的属性。与Vue3的行为差异CompositionAPI使用Vue2的基于getter/setter的反应系统向后移植,以确保浏览器兼容性。这意味着与Vue3基于代理的系统存在一些重要的行为差异:所有Vue2更改检测警告仍然适用。reactive()、ref()和shallowReactive()将直接转换原始对象而不是创建代理//在2.7中有效,在3.x中无效reactive(foo)===fooreadonly()确实创建了一个单独的对象,但它不跟踪新添加的属性并且不适用于数组;避免在reactive()中使用数组作为根值,因为没有属性访问就不会跟踪数组更改(这会导致警告);反应性API会忽略带有符号键的属性。此外,以下函数未移植:?createApp()(Vue2没有单独的应用程序范围)。?中的顶层await(Vue2不支持异步组件初始化)。?模板表达式中的TypeScript语法(与Vue2解析器不兼容)。?反应性变换(仍处于试验阶段)。?options组件不支持exposeoptions(但支持defineExpose())。升级指南VueCLI/webpack(1)将本地@vue/cli-xxx依赖升级到主要版本范围内的最新版本(如果适用):Forv4:~4.5.18Forv5:~5.0.6(2)升级Vue到^2.7.0。还要从依赖项中删除vue-template-compiler,因为它在2.7中不再需要。注意:如果使用了@vue/test-utils,可能需要暂时将其保留在依赖项中,但此要求也将在新版本的TestUtils中删除。(3)检查包管理器锁文件,确保以下依赖满足版本要求。它们可能是未在package.json中列出的传递依赖项:vue-loader:^15.10.0vue-demi:^0.13.1如果不是,则需要删除node_modules和lock文件并重新安装以确保它们更新到最新版本。(4)如果您之前使用过@vue/composition-api,请将其导入更新为vue。注意一些插件导出的API,比如createApp,2.7没有移植。(5)如果在使用时遇到未使用变量的lint错误,请更新eslint-plugin-vue到最新版本(9+)。(6)Vue2.7的SFC编译器现在使用PostCSS8。PostCSS8应该向后兼容大多数插件,但是如果您之前使用的是仅适用于PostCSS7的自定义PostCSS插件,升级可能会导致问题。在这种情况下,需要将相关插件升级到PostCSS8兼容版本。ViteVue2.7对Vite的支持是通过一个新的插件提供的:@vitejs/plugin-vue2。这个新插件需要Vue2.7或更高版本,并取代现有的vite-plugin-vue2。请注意,新插件不处理特定于Vue的JSX/TSXtransform,这是故意的。Vue2JSX/TSXtransform应该在一个单独的专用插件中处理,该插件将很快可用。Volar兼容性Vue2.7提供了改进的类型定义,因此不再需要安装@vue/runtime-dom来支持Volar模板类型推断。现在只需要在tsconfig.json中配置如下:{//..."vueCompilerOptions":{"target":2.7}}DevtoolsSupportVueDevtools6.2.0添加了检查2.7CompositionAPI状态的支持,但是扩展了它可能还需要几天才能通过各种发布平台的审稿。2.7版本影响Vue2.7是Vue2.x的最终次要版本。本次发布后,Vue2进入LTS(LongTermSupport),从现在开始持续18个月,不再接收新功能。这意味着Vue2将在2023年底结束其生命周期。这应该为大多数生态系统迁移到Vue3提供充足的时间。其他详细信息在准备此版本时,Vue团队从Flow移植了Vue2代码库到TypeScript,基于核心团队成员@pikax的努力。这使得在Vue3中重用代码变得更加容易,并自动为移植的API生成类型定义。除此之外,单元测试从Karma+Jasmine迁移到Vitest,大大提高了维护DX和CI的稳定性。