Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >中杯超大杯中间的新选择——vue2.7+vite+ts实践

中杯超大杯中间的新选择——vue2.7+vite+ts实践

作者头像
用户6256742
发布于 2024-08-13 02:56:42
发布于 2024-08-13 02:56:42
32300
代码可运行
举报
文章被收录于专栏:网络日志网络日志
运行总次数:0
代码可运行

前言

选择vue2,是因为我们的网页需要支持IE11

但是同时,我们又非常向往vue3那种组合式API的开发方式。

我们还希望有vite,用于加快服务器启动和打包的速度。

为了进一步写出规范的代码,减少出错的可能,我们再用上TypeScript,TypeScript的使用,除了更好的类型判断,最最重要的,是更好的面向接口编程。

Vue2和Vue3怎么选择?

对于vue2和vue3的选择,主要需要考虑的点还是在vue3的兼容性上。

vue3兼容性的限制取决于浏览器对Proxy对象的支持。而且这个不兼容无法通过babel抹除

babel不支持proxy:

Unsupported feature Due to the limitations of ES5, Proxies cannot be transpiled or polyfilled. See support in various JavaScript engines.

proxy的兼容性:

中杯超大杯中间的新选择——vue2.7+vite+ts实践
中杯超大杯中间的新选择——vue2.7+vite+ts实践

可以看到,不兼容的浏览器大概占比有3.5%左右。

由此我们的策略是:

  • 可用性要求高的外部的web,用vue2。
  • 其他的,比如工具类、内部的web,大胆用vue3。

vue2使用组合式api的体验如何?

我们的工程一开始就是用vue3写的,技术栈是vue3+vite+ts,用上了组合式api和<script setup>语法糖等新特性。

后面因为兼容性问题改成vue2.6.x,这个修改的过程,需要改的地方,非常少

7月份vue2.7.x也发布release版本,和vue3更加相似,需要改的地方就更少了。

下文实践环节,主要介绍vue2.7的开发流程。

如果对vue2.7+组合式api的开发流程感兴趣,可以参考另一篇文章Vue2+TypeScript+CompositionAPI实践

将会学到什么?

使用如下的技术栈搭建web工程

  • vue2.7
  • vite
  • TypeScript
  • 组合式API+ <script setup>语法糖

开始实践

vue2.7的特性

下面先看看vue2.7向后兼容的特性:

创建vue2.7 的ts项目

vite文档

vite没支持直接创建vue2项目,我们直接用vite创建一个vue3+ts的项目就可以,然后再修改vue的版本为2.7.x。

可以看到.vue文件已经是用上和组合式api<script setup>语法糖,我们不需要再做修改。

需要注意vue对象中没有createApp,如果要用,还是得引入@vue/composition-api

2.6版本:需要引入@vue/composition-api,修改ref@vue/composition-api引入)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script setup lang="ts">
import { ref } from 'vue'

defineProps<{ msg: string }>()

const count = ref(0)
</script>

<template>
  <h1>{{ msg }}</h1>

  <div class="card">
    <button type="button" @click="count++">count is {{ count }}</button>
    <p>
      Edit
      <code>components/HelloWorld.vue</code> to test HMR
    </p>
  </div>

</template>

<style scoped>
.read-the-docs {
  color: #888;
}
</style>

vite支持vue2

vite支持vue2需要用到@vitejs/plugin-vue2插件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//vite.config.ts
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue2';

export default defineConfig({
  plugins: [
    vue(),
  ],
}  

ESLint和TypeScript配置

eslint-plugin-vue需要升级到9.x版本,同时ts配置文件加上下面的代码,否则<template>标签中的变量会报未定义的错误。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//tsconfig.json
"vueCompilerOptions": {
	"target": 2.7
}

vue2.7的限制

以下功能已明确不会进行移植:

  • createApp()(Vue 2 没有独立的 app scope)
  • Top-level await in <script setup>(Vue 2 不支持异步组件初始化)
  • 在模板表达式中支持 TypeScript 语法(不兼容 w/ Vue 2 解析器)
  • 响应式转换 Reactivity transform(仍处于实验性阶段)
  • expose 选项不支持 options 组件(但 <script setup> 支持 defineExpose() )

兼容更多的浏览器版本

npm run build查看构建产生的文件,我们可以发现其js文件是作为module模块引入的,这是因为vite默认支持的浏览器基线是支持ESM的现代浏览器。

ESM兼容性

中杯超大杯中间的新选择——vue2.7+vite+ts实践
中杯超大杯中间的新选择——vue2.7+vite+ts实践

所以像IE 11这种传统浏览器是不支持的。

兼容传统浏览器

测试兼容性可以用下面这个在线工具:测试浏览器兼容性的在线工具](app.lambdatest.com/console/rea…)

为了兼容IE11,我们需要用到@vitejs/plugin-legacy这个插件,我们先按官网的方式引入。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// vite.config.ts
import legacy from '@vitejs/plugin-legacy'

export default {
  plugins: [
    legacy({
      targets: ['defaults']
    })
  ]
}

兼容停止维护的浏览器

target值的知识,参考browserslist

发现在IE 11依旧白屏,我们看看defaults的值是什么:> 0.5%, last 2 versions, Firefox ESR, not dead

IE 11已经停止维护,已经被排除在not dead之外。

稍微修改一下target的值targets: ['> 0.01%, last 10 versions, Firefox ESR']

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-11-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Vue2.7正式发布,终于可以在Vue2项目中使用Vue3的特性了,真香~
尽管现在 Vue3 是默认版本,但还有许多用户、相关库、周边生态使用的是 Vue2,且由于依赖兼容性、浏览器支持要求或没有足够的带宽升级,导致不得不继续使用 Vue2。难道 Vue3 发布了这么多“真香”的特性,我们 Vue2 的用户与项目就只能眼巴巴地看着?当然不是!有一个好消息是,前两天 Vue2.7 正式发布了。在此版本中,从 Vue3 向后移植了一些最重要的功能,以便 Vue2 用户也可以从中受益。
JEECG
2022/10/25
3.5K0
Vite+Vue2+Composition-api+<script setup>+TypeScript搭配如何开发项目?
Vite相信大家都用过,它是一种新型前端开发与构建工具,能够显著提升前端开发体验。我们在搭建Vite项目,选择Vue模板之后,默认会下载Vue3模板。如果你的公司现在还没有准备使用Vue3,而在使用Vue2,那么这篇文章值得你继续看下去。下面,我将带大家如何搭建一个 Vite+Vue2+Composition-api+<script setup>+TypeScript 搭配使用的项目。这篇文章很干,请大家点点赞哦!
Vam的金豆之路
2021/12/01
1.8K0
Vite+Vue2+Composition-api+<script setup>+TypeScript搭配如何开发项目?
Vue 2.7 + Vite项目搭建
Vue 2.7 + Vite vue2.7 + vue-router3 + pinia 示例代码: https://github.com/klren0312/vite_vue2.7 示例页面: https://klren0312.github.io/vite_vue2.7/ 用到的vite插件 @vitejs/plugin-vue2 vite的vue2.7插件 @vitejs/plugin-legacy 打包支持IE unplugin-vue-components 按需引入插件 相关配置 1. v
治电小白菜
2022/07/08
1.8K0
Vue 2.7 + Vite项目搭建
Vue 2.7 “Naruto”发布,新特性介绍
2.7 是 Vue 2.x 的最终版本。在这个版本之后,Vue 2 进入了 LTS(长期支持),从现在开始持续 18 个月,并且将不再接收新功能。这意味着Vue 2 将在 2023 年底结束生命周期。
房东的狗丶
2023/02/17
1.4K0
Vue2.x中使用composition API,平滑过渡Vue3
Vue2.x已发布(vue2.7)最后一个版本的beta版本,原生支持composition API。
房东的狗丶
2023/02/17
1.1K0
Vue Demi是如何让你的库同时支持Vue2和Vue3的
这两种方式都有缺点,第一种很麻烦,第二种无法使用Vue3新增的组合式 API,其实现在Vue2.7+版本已经内置支持组合式API,Vue2.6及之前的版本也可以使用@vue/composition-api插件来支持,所以完全可以只写一套代码同时支持Vue2和3。虽然如此,但是实际开发中,同一个API在不同的版本中可能导入的来源不一样,比如ref方法,在Vue2.7+中直接从vue中导入,但是在Vue2.6-中只能从@vue/composition-api中导入,那么必然会涉及到版本判断,Vue Demi就是用来解决这个问题,使用很简单,只要从Vue Demi中导出你需要的内容即可:
街角小林
2023/03/01
2K0
Vue Demi是如何让你的库同时支持Vue2和Vue3的
Vue2+TypeScript+CompositionAPI实践
本文介绍用vue2.6x+TypeScript+CompositionAPI开发web页面。
luciozhang
2023/04/22
7790
Vite该如何使用?Vite学习笔记,持续记录
配置文档:https://cn.vitejs.dev/config/,基于ESM;
房东的狗丶
2023/02/17
4.4K0
一个基于vite构建的vue3+pinia+ts+elementUI plus的初始化开箱即用的项目模版
Vite 需要 Node.js 版本 >= 12.0.0。然而,有些模板需要依赖更高的 Node 版本才能正常运行,当你的包管理器发出警告时,请注意升级你的 Node 版本。
用户6297767
2023/11/21
9380
一个基于vite构建的vue3+pinia+ts+elementUI plus的初始化开箱即用的项目模版
当Vue2遇到Composition API,它们之前到底能擦出怎样的火花?
Composition API是什么?也称为组合式 API。如果你第一次听到这个词,请认真读完这篇文章。
Vam的金豆之路
2021/12/01
1.3K0
Vite2+Vue3+TypeScript:搭建企业级轻量框架实践
随着Vue3为广大开发者所接受和自身生态逐渐完善,更多同学往vue3的工程化方向完善,本文恰好给大家介绍下如何更好使用vue3及其周边插件,以及让他们组合到整个工程中去。
南山种子外卖跑手
2022/02/21
3K4
Vite2+Vue3+TypeScript:搭建企业级轻量框架实践
VUE3集成TS和vue-router
Volar 是个 VS Code 的插件,其最大的作用就是解决了 template 的 TS 提示问题。
码客说
2022/03/07
1.3K0
最全的 Vue 官方生态整理,看看你是不是都知道?
按照尤雨溪之前的官宣,Vue 3 已经在 「2022 年 2 月 7 日」成为新的默认版本
Leecason
2022/07/13
1K0
Vue3 + Vite2 项目实战复盘总结(干货!)
•背景•vue3 项目开发 get 到的知识•让我惊讶的 vite•项目中遇到的困难•总结•项目技术栈•资料推荐
Nealyang
2021/09/03
1.4K0
大数据开发自学vue3踩坑实录:努力成为vue高高手
2023再学vue,几年时间已从vue2变成了vue3。这次通过解构实现开源项目BuildAdmin,完成了vue系列的系统化学习,并且在学习过程中输出了近20篇关于前端的文章。
叫我阿柒啊
2024/02/22
6280
大数据开发自学vue3踩坑实录:努力成为vue高高手
Vue3--学习记录
https://blog.csdn.net/iku_n/article/details/140136183
用户4515745
2025/02/24
1950
Vue 开发团队的战斗力到底有多强,让我们看看这个 PR
事情起源于 4 月 7 号晚上,尤雨溪在推特说,Vue2 收到了一个将整个代码库迁移到 TypeScript 的 PR。
用户3806669
2021/04/15
1.6K0
Vue 开发团队的战斗力到底有多强,让我们看看这个 PR
Vue篇(011)-vue3带来的新特性/亮点
2. Tree shaking support: 按需编译,体积比vue2.x更小;
齐丶先丶森
2022/05/12
1.2K0
Vue篇(011)-vue3带来的新特性/亮点
5个知识点,让 Vue3 开发更加丝滑
最近鼓捣了一下 Vue3 + Vite2,遇到了不少问题,整理了5个可以提高开发效率的小知识,让你在 Vue3 的项目开发中更加丝滑、顺畅。
用户6256742
2022/07/06
5500
使用Vite重构Vue3项目
截止发文时间,vite正式版已经发布快2年时间了,vue3也发布到3.2版本了,它的周边设施基本上已经齐活了。也是时候再次重构下我那个vue3.0的开源项目了。
神奇的程序员
2022/10/30
2.1K0
使用Vite重构Vue3项目
推荐阅读
相关推荐
Vue2.7正式发布,终于可以在Vue2项目中使用Vue3的特性了,真香~
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验