完成Vue3.2+typescript项目有感

简介: 在vue3.2中,正式支持了<script setup>语法糖,减少了大量的重复模板代码,引入的组件无需再注册后才能使用,只要引入后即可在sfc中使用,直接用代码来展示可能效果更好:

前言
很早之前就看见尤大在说

1.png

前段时间恰好在网上看见了相关的项目,好奇心又被调动了,想着也没什么事,也便在这个暑假跟着视频去尝试做了一下,在使用

话不多说了,直接来说开发项目时感受到的优点和自己在开发过程中遇见的一些问题

优点:
更简洁的代码
在vue3.2中,正式支持了

复制代码

2.png

不仅仅是组件的引入无需单独注册,包括函数与变量的声明也大大减少了代码量。使用

复制代码
3.png

项目接口更加详细
在该项目中,我所使用的是mock.js来写接口,通过import '@/mock/index'让接口跑起来。在实际项目中,我需要调用接口时,需要先用typescript进行接口定义,虽然这会在一定程度上增加代码量,但对于中大型项目来说会更便于维护,在调用接口的时候也会有代码提示,这也是ts的优势了。

代码示例如下:

复制代码

当我们将鼠标放上去时,便会出现提示:
4.png

,这极大的方便了我们对接口的调用和后期的维护,对ts中的详细教程可以看这篇文章,可以更深入的了解interface

5.png

项目开发过程遇见的问题
路由无法跳转
这里犯的错误其实还是因为自己对

翻看vue-router官方文档,其实可以很清楚的看见官方对此的解释:

6.png

由于setup执行时机在beforeCreate之前,故在setup中是不能使用data和methods(因为还没初始化好)。由于不能再setup函数中使用data和methods,所以Vue为了避免我们错误的使用,它直接将setup函数中的this修改成undefined.

但由于本项目中的搜索图标是标签,所以也就没必要使用useRouter函数了,直接在标签上进行添加即可:

7.png

注意,由于我们是默认路由hash,故此处不可以直接添加为/search,否则不会进行页面的跳转,应在前面再添加一个#

无法修改组件样式
无法修改组件样式的情况在之前的项目中也遇见过,element plus组件默认的样式无法修改,在vant3中也遇见了同样的问题,我们自己写的样式被覆盖,这里就直接进行样式穿透即可,使用方法: ::deep 想要修改类名 { 修改样式 }:

CSS module
在我对登录界面进行样式修改的时候出现了问题,我无法将整体的页面背景修改成灰色,我通过对body的样式修改,发现不起作用,如果直接删除vue单文件组件的

这时候便有两个解决方法:

单独再开一个style
通过再开一个

使用全局作用域
CSS Modules 允许使用:global(.className)的语法,声明一个全局规则

关于CSS Moudles的详细情况可以参考阮一峰老师的这篇文章:CSS Modules 用法教程

defineExpose
在使用vant3组件的时候,由于他的文档实例并未像element plus一样直接用的

结果我登录界面的输入框全都不见了.... 一想便知道,估计又是setup语法糖没把握好的锅,连忙去翻看vue官方文档,不出意外的找到了问题的原因:事实上,获取到组件的公开实例的,需要用到definExpose

使用

通过 defineExpose 编译器宏来显式指定在

注意,definExpose是需要手动导入的

总结

目录
打赏
0
0
0
0
191
分享
相关文章
Vue与TypeScript:如何实现更强大的前端开发
Vue.js 以其简洁的语法和灵活的架构在前端开发中广受欢迎,而 TypeScript 作为一种静态类型语言,为 JavaScript 提供了强大的类型系统和编译时检查。将 Vue.js 与 TypeScript 结合使用,不仅可以提升代码的可维护性和可扩展性,还能减少运行时错误,提高开发效率。本文将介绍如何在 Vue.js 项目中使用 TypeScript,并通过一些代码示例展示其强大功能。
132 22
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
204 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
Vue 项目中如何自定义实用的进度条组件
本文介绍了如何使用Vue.js创建一个灵活多样的自定义进度条组件。该组件可接受进度段数据数组作为输入,动态渲染进度段,支持动画效果和内容展示。当进度超出总长时,超出部分将以红色填充。文章详细描述了组件的设计目标、实现步骤(包括props定义、宽度计算、模板渲染、动画处理及超出部分的显示),并提供了使用示例。通过此组件,开发者可根据项目需求灵活展示进度情况,优化用户体验。资源地址:[https://pan.quark.cn/s/35324205c62b](https://pan.quark.cn/s/35324205c62b)。
47 0
Vue Amazing UI 组件库(Vue3+TypeScript+Vite 等最新技术栈开发)
Vue Amazing UI 是一个基于 Vue 3、TypeScript、Vite 等最新技术栈开发构建的现代化组件库,包含丰富的 UI 组件和常用工具函数,并且持续不断维护更新中。另外,组件库全量使用 TypeScript,支持自动按需引入和 Tree Shaking 等,能够显著提升开发效率,降低开发成本。
351 5
Vue Amazing UI 组件库(Vue3+TypeScript+Vite 等最新技术栈开发)
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
177 14
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
273 13
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
210 11
【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
215 13
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
Pinia 如何在 Vue 3 项目中进行安装和配置?
Pinia 如何在 Vue 3 项目中进行安装和配置?
319 4
ry-vue-flowable-xg:震撼来袭!这款基于 Vue 和 Flowable 的企业级工程项目管理项目,你绝不能错过
基于 Vue 和 Flowable 的企业级工程项目管理平台,免费开源且高度定制化。它覆盖投标管理、进度控制、财务核算等全流程需求,提供流程设计、部署、监控和任务管理等功能,适用于企业办公、生产制造、金融服务等多个场景,助力企业提升效率与竞争力。
284 12
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问