前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >最近开发及 vue3 几个小总结

最近开发及 vue3 几个小总结

作者头像
wade
发布于 2023-03-09 06:50:18
发布于 2023-03-09 06:50:18
72300
代码可运行
举报
文章被收录于专栏:coding个人笔记coding个人笔记
运行总次数:0
代码可运行

只是单纯记录一下最近维护了几个项目之后的感触,也只是在自己现在水平上面的一些感觉。发发牢骚,水水文章。

是否过度封装

可能水平不够吧,在 axios 封装的时候,只是把响应和拦截还有一些全局的配置封装了一下,并没有加很多,也没有单独封装 get、post 这些方法,因为我觉得使用起来已经非常简单了,axios.get(url,param)、axios.get(url,param),我觉得已经非常简便了,维护的旧项目封装了三层到四层吧,用起来在我看来是一样的。

基础配置和规范

很多时候,我们只要加一个 margin-top 或者 font-size 之类的样式,又不想单独写一个 class,写 style 代码又显得不规范。现在有挺多 css 框架可以实现,比如 tailwind css,也可以自己写一些常用的,肯定是写的不完整,完全可以后期有用到再补充。不止样式,其他也是一样,常用函数之类的。这不就是组件化、插件化吗。

项目运行起来,最开始开发工具肯定是没有报错的,后面不知道经过多久,报错了,但是还能运行,慢慢的也就没人管了,就放着吧(这是我第一次见)。真不应该,既然使用了 ts,使用了 eslint,警告和报错,能解决就解决了,肯定是不能出现在都是报错的编辑器进行开发。

代码规范和习惯也挺重要的,console 用多了,也不删除,虽然打包的时候会有插件把 console 去掉,开发的时候要看一些东西,控制台出现一大堆打印,代码出现各种打印的地方。

注释也是,有时候一些东西临时不用,是可以注释,但是简单的东西去掉就去掉了,放着越放越多,复制了别的页面的,没用的就都删了,见过 500 行代码注释 100 行?

如果可以,有个项目文档挺有必要的,介绍一下基础的东西,免得新接手的不知道有这个实现的功能,又自己写一套,当然,多问也是可以的。

好吧,既然无法改变,那就让自己适应。

reactive 声明无法重新赋值整个对象

很多情况下我们会直接重新赋值一个对象,尤其是字段多的时候,vue3 用 reactive 声明的如果重新赋值整个对象,是没法做到响应式的,或者只能一个一个字段去赋值。vue3 没有 this.$forceUpdate(),提供的forceUpdate()是强制该组件重新渲染,没用过,并不清楚具体行不行。所以有几个取巧的方法,在规范上可能会被说:

  • 多一层字段,这样去重新赋值也会是响应式
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const obj = reactive({data: {}});
obj.data = {}
  • Object.assign
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const obj = reactive({})
obj = Object.assign(obj, {})
  • 用 ref ref 一般用于声明基础数据类型和数组,声明对象,内部其实也是被 reactive 处理。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const obj = ref({})
obj.value = {}

上面三种取巧的方法,我比较建议使用 Object.assign,重新赋值整个对象场景不会非常多,大部分是请求数据回来会使用,另外两种增加代码量,而且规范上面比较不符合。

组件使用 v-model 传参

这个跟 vue2 里面的.sync 一样,常见的应该是封装弹窗组件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//父组件
<Children v-model:modelValue="showModelValue"></Chidren>

//子组件
<el-dialog :model-value="props.modelValue" title="title" width="45%" :before-close="handleClose">

</el-dialog>

interface PropsType {
  modelValue?: boolean;
}

const props = withDefaults(defineProps<PropsType>(), {
  modelValue: false,
});

const emits = defineEmits(['update:modelValue']);

const handleClose = () => {
  emits('update:modelValue', false);
};

使用 setup 单文件

这个其实也不是什么小技巧,主要是维护了个项目,结果没用 setup,还是希望可以用起来,毕竟官方也是挺推荐的。

几个插件

  • plugin-vue-setup-extend:增强 setup,可以增加自定义 name
  • unplugin-auto-import:api 自动导入

$ref

ref 声明都要用.value,然后现在提出了响应性语法糖,不需要.value,还在实验阶段,官网给出了警告: 响应性语法糖目前是一个实验性功能,默认是禁用的,需要显式选择使用。具体设计在最终定稿前仍可能发生变化,你可以查看 GitHub 上的提案与讨论来关注和跟进最新进展。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let count = $ref(0)

console.log(count)

function increment() {
  count++
}

环境配置

正常情况下,请求的 baseURL 配置/,访问的域名是什么就用什么,其他服务器 nginx 自己配置。架不住有特殊情况,所以根目录添加.env.dev、.env.prod 文件,里面声明的变量都要 VITE_开头,在其他地方 import.meta.env.去获取:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
VITE_MODE="production"
VITE_BASE_URL="/https://www.test.com/v2"

const service: AxiosInstance = axios.create({
  baseURL: import.meta.env.VITE_BASE_URL,
});

package.json 里面配置 script 的时候加上--mode prod。(这边发现配置 prebuild,执行 build 的时候会自动执行 prebuild 然后再执行 build)

:deep

改变使用 UI 组件的样式,用:deep,可能会出现警告: ::v-deep usage as a combinator has been deprecated. Use :deep() instead.

改成: :deep(.el-input-group__prepend) { background: #e5e5ea; }

不进行展示的不用 ref reactive 声明

既然用了 composition API,如果数据不是要在页面进行展示,就可以不用 ref 和 reactive 进行声明,虽然性能方面没什么非常大的影响,开发可读性和维护起来会更好一些。

如何更好的使用 typescript

现阶段,vue3 肯定是使用 typescript 一起开发,只是到目前为止,还没有看过哪个项目很好的使用 typescript,包括自己,很多情况下用上了 any,开发过程也都是先写开发代码再写一些声明的类型。

希望有大佬可以推荐几个项目长长眼,或者一些好的文章,要如何从先写 JavaScript 再写 typescript,转变到先写 typescript 再写 JavaScript。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-02-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 coding个人笔记 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
来给defineComponent附魔
比如现在要开发一个步进器组件,双向绑定一个数字变量。点击加号的时候绑定值加一,点击减号的时候绑定值减一;大概是长这个样子的:
玖柒的小窝
2021/11/07
3.5K0
来给defineComponent附魔
Vue2到Vue3,重学这5个常用的API
距离Vue3发布已经过去一年多时间了,从Vue2到Vue3是一个不小的升级,包括周边生态等。
玄姐谈AGI
2023/01/10
9180
Vue2到Vue3,重学这5个常用的API
VUE3全家桶精讲
有 <script setup> 之前,如果要定义 props, emits 可以轻而易举地添加一个与 setup 平级的属性。
HelloWorldZ
2024/03/20
3040
VUE3全家桶精讲
【Vuejs】1286- 分享 15 个 Vue3 全家桶开发的避坑经验
最近入门 Vue3 并完成 3 个项目,遇到问题蛮多的,今天就花点时间整理一下,和大家分享 15 个比较常见的问题,基本都贴出对应文档地址,还请多看文档~ 已经完成的 3 个项目基本都是使用 Vue3 (setup-script 模式)全家桶开发,因此主要分几个方面总结:
pingan8787
2022/04/14
6.6K0
【Vuejs】1286- 分享 15 个 Vue3 全家桶开发的避坑经验
再遇vue之vue3新特性
首先说明一下,vue2和vue3是Vue.js的两个主要版本。目前vue3已经更新到3.3.4的版本了
用户6297767
2023/11/21
5680
再遇vue之vue3新特性
Vue3学习笔记
①性能的提升 打包大小减少41%、初次渲染快55%,更新渲染快133%,内存减少54%…… ②源码的升级
玖柒的小窝
2021/09/29
8890
Vue3学习笔记
让你30分钟快速掌握vue 3
经过了漫长的迭代,Vue 3.0终于在上2020-09-18发布了,带了翻天覆地的变化,使用了Typescript 进行了大规模的重构,带来了Composition API RFC版本,类似React Hook 一样的写Vue,可以自定义自己的hook ,让使用者更加的灵活,接下来总结一下vue 3.0 带来的部分新特性。
前端开发博客
2020/11/04
2.4K0
【vue3】详解单向数据流,大家千万不用为了某某而某某了。
vue的版本一直在不断更新,内部实现方式也是不断的优化,官网也在不断更新。 既然一切皆在不停地发展,那么我们呢?等着官网更新还是有自己的思考? 我觉得我们要走在官网的前面,而不是等官网更新后,才知道原来可以这么实现。。。
用户1174620
2024/08/03
2430
【vue3】详解单向数据流,大家千万不用为了某某而某某了。
Vue3 结合 TypeScript 项目开发使用指南及组件封装实操方法
这些方法与Vue3+TypeScript项目结合,可以帮助你高效构建高质量的前端应用。
小焱
2025/05/29
2160
Vue3 结合 TypeScript 项目开发使用指南及组件封装实操方法
升级 Vue3 大幅提升开发运行效率
作者:louiszhai,腾讯 IEG 前端开发工程师 Vue3 性能提升了 1.3~2 倍,SSR 性能提升了 2~3 倍,升级 Vue3 正是当下。 背景 原计划 2019 年发布的 Vue3,又经过一年的再次打磨,终于于去年 9 月正式发布。随后,不少 UI 组件库都积极参与适配,去年 12 月,Element-plus(Element-ui 官方升级版)也发布了 beta 版。 由于项目中用到了 Element-ui 组件,组件库未适配的情况下,不敢贸然升级 Vue3。Element-plus
腾讯技术工程官方号
2021/04/27
2K0
Vue3 食用方法(赶快来学吧)
ref 需要用.value 支持任意格式 reactive 只能绑定数组对象 而且不需要.value
玖柒的小窝
2021/11/08
3250
VUE3集成TS和vue-router
Volar 是个 VS Code 的插件,其最大的作用就是解决了 template 的 TS 提示问题。
码客说
2022/03/07
1.3K0
vue3迁移指南笔记
对于v-model带有参数的绑定,生成的prop名称将为arg + "Modifiers":
刘嘿哈
2022/10/25
4990
前端系列14集-Vue3-setup
页面浏览量(Page View,PV)和访客数(Unique Visitors,UV)
达达前端
2023/10/08
5450
前端系列14集-Vue3-setup
Vue3项目实践总结
在今年的敏捷团队建设中,我通过Suite执行器实现了一键自动化单元测试。Juint除了Suite执行器还有哪些执行器呢?由此我的Runner探索之旅开始了!
京东技术
2023/09/21
5350
Vue3项目实践总结
vue3简易入门剖析
,发音同 “veet”)是一种新型前端构建工具,能够显著提升前端开发体验。它主要由两部分组成:
张哥编程
2024/12/13
4740
Vue3基础
官方文档:https://cli.vuejs.org/zh/guide/creating-a-project.html#vue-create
六个周
2022/10/28
1.1K0
Vue3基础
Vue3 TypeScript 使用教程 - 实战 Vue3 element-plus 开发「待办清单」
本文完整版:《Vue3 TypeScript 使用教程 - 实战 Vue3 element-plus 开发「待办清单」》
蒋川@卡拉云
2022/05/27
2.1K0
Vue3 TypeScript 使用教程 - 实战 Vue3 element-plus 开发「待办清单」
Vue2向Vue3过渡,持续记录
迁移指南:https://v3.cn.vuejs.org/guide/migration/introduction.html
房东的狗丶
2023/02/17
6.3K0
vue2升级vue3:Vue3时jsx组件绑定自定义的事件、v-model、sync修
踩坑笔记:组合式 API之Setup(props,context)—Vue2.x到Vue3注意
周陆军博客
2022/06/24
2.7K0
相关推荐
来给defineComponent附魔
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验