当前位置: 首页 > news >正文

vue3+ts 开发效率提升

1、vite + pnpm项目初始化

        pnpm: 比npm或yarn快10倍

        pnpm与其他包管理器(如npm和Yarn)的不同之处在于它使用一种称为“硬链接”的独特安装方法。当你使用PNPM安装一个包时,它并不会将包的文件复制到每个项目的node_modules目录中,而是在一个中心存储位置创建硬链接。这意味着多个项目可以共享同一个包文件,从而节省磁盘空间并减少安装时间。

        pnpm还支持一种称为“虚拟包”的特性,它允许你为包创建别名。虚拟包可用于同时安装多个版本的包,或者在不改变其他包的依赖关系的情况下替换一个包。

pnpm旨在快速高效,它的开发者声称在某些情况下可以比npm或yarn快10倍。它还支持广泛的包锁定文件格式,包括npm、yarn使用的格式。

        vite: 比vue-cli快

        Vite 不需要提前将所有的代码打包成一个或多个静态文件。相反,Vite 会在浏览器请求资源时动态地编译和提供所需的模块,并在内存中生成对应的静态文件。这种方式可以提高开发体验和构建速度。它还支持热更新和代码分割等功能,使得开发者能够更快地进行开发、调试和部署。

        使用:

 

2、setup语法糖

(1)不用写setup函数,以及默认导出export default{}

(2)组件只需要引入不需要注册

(3)属性和方法也不需要再返回,可以直接在template模板中使用

   

                未使用setup语法糖,App.vue文件

<template><div @click="changeTitle">{{ title }}</div><HelloWorld msg="Vite + Vue" />
</template>
<script lang="ts">
import { ref } from 'vue'
import HelloWorld from './components/HelloWorld.vue'
export default {components: {HelloWorld},setup() {let title = ref('123456')const changeTitle = () => {title.value = '哈哈哈'}return {title,changeTitle}}
}
</script>

                使用setup语法糖,App.vue文件

<template><div @click="changeTitle">{{ title }}</div><HelloWorld msg="Vite + Vue" />
</template>
<script lang="ts" setup>import { ref } from 'vue'import HelloWorld from './components/HelloWorld.vue'let title = ref('123456')const changeTitle = () => {title.value = '哈哈哈'}
</script>

3、自动导入

        可以自动导入component、vue等第三方插件库,不用手动import,需要如下配置:

  // 安装自动导入插件

  pnpm add unplugin-auto-import unplugin-vue-components -D

        vite.config.ts配置

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'// https://vitejs.dev/config/
export default defineConfig({plugins: [vue(),AutoImport({// 配置需要自动导入的库imports: ['vue'],// 生成到的地址dts: 'types/auto-imports.d.ts',// 配置本地需要自动导入的库dirs: [],}),Components({// 生成组件的地址dts: 'types/components.d.ts',}),],
})

        types/auto-imports.d.ts:系统自动生成,显示按需导入的第三方库

        types/components.d.ts:系统自动生成,显示导入了哪些组件 

        

        把import全去掉,ref标红,且不能提示已导入的B组件

 

        原因:我们看到types/components.d.ts的目录中发现,插件使用的是@vue/runtime-core来实现的类型,以及ts配置不能识别types文件夹下的包

         解决上述问题:

pnpm add @vue/runtime-core -D

        打开tsconfig.json ,添加如下代码

 

4、配置路径前缀

        配置:

pnpm add @types/node -D

        vite.config.ts配置如下

import { fileURLToPath } from 'url'
import { defineConfig } from 'vite'const baseSrc = fileURLToPath(new URL('./src', import.meta.url))// https://vitejs.dev/config/
export default defineConfig({resolve: {alias: {'~': baseSrc,'~@': baseSrc,},}
})

        tsconfig.json:配置 baseUrl 和 paths

{"compilerOptions": {"target": "ESNext","useDefineForClassFields": true,"module": "ESNext","moduleResolution": "Node","strict": true,"jsx": "preserve","resolveJsonModule": true,"isolatedModules": true,"esModuleInterop": true,"lib": ["ESNext","DOM"],"skipLibCheck": true,"noEmit": true,// 路径配置"baseUrl": ".","paths": {"~/*": ["src/*"],"~@/*": ["src/*"]},},"include": ["src/**/*.ts","src/**/*.d.ts","src/**/*.tsx","src/**/*.vue","types/env.d.ts","types/**/*.d.ts",],"references": [{"path": "./tsconfig.node.json"}]
}

        配置之后 

5、环境变量提示

        默认情况下,vite会使用dotenv来读取一下的文件,作为我们的环境变量。默认情况下,为了防止意外地将一些环境变量泄露到客户端,只有以VITE_为前缀的变量才会暴露给vite处理的代码

.env                # 所有情况下都会加载
.env.local          # 所有情况下都会加载,但会被 git 忽略
.env.[mode]         # 只在指定模式下加载
.env.[mode].local   # 只在指定模式下加载,但会被 git 忽略

未配置前不会有代码提示   

        将src/vite-env.d.ts移动到types文件夹中,改名为env.d.ts ,并在env.d.ts 添加如下代码:

/// <reference types="vite/client" />
declare module '*.vue' {import type { DefineComponent } from 'vue'const component: DefineComponent<{}, {}, any>export default component
}interface ImportMetaEnv {readonly VITE_BASE: string
}interface ImportMeta {readonly env: ImportMetaEnv
}

 

~~~持续更新~~~

相关文章:

vue3+ts 开发效率提升

1、vite pnpm项目初始化 pnpm&#xff1a; 比npm或yarn快10倍 pnpm与其他包管理器&#xff08;如npm和Yarn&#xff09;的不同之处在于它使用一种称为“硬链接”的独特安装方法。当你使用PNPM安装一个包时&#xff0c;它并不会将包的文件复制到每个项目的node_modules目录中&a…...

【数据结构与算法】队列和栈的相互实现以及循环队列

目录&#x1f314;一.用队列实现栈&#x1f319;1.题目描述&#x1f319;2.思路分析&#x1f319;3.代码实现⛈二.用栈实现队列☔1.题目描述☔2.思路分析☔3.代码实现&#x1f308;三.实现循环队列&#x1f314;一.用队列实现栈 &#x1f319;1.题目描述 我们先看一下题目链接…...

mysql连接不上问题解决

公司新搭内网测试环境&#xff0c;mysql远程登录问题解决 远程登录: 1 修改host, mysql> select user,host,plugin from user; ---------------------------------------------------- | user | host | plugin | ------------------------…...

利用nginx实现动静分离的负载均衡集群实战

前言 大家好&#xff0c;我是沐风晓月&#xff0c;今天我们利用nginx来作为负载&#xff0c;实现两台apache服务器的动静分离集群实战&#xff1b; 本文收录于沐风晓月的专栏《linux基本功-系统服务实战》&#xff0c;更多内容可以关注我的博客&#xff1a; https://blog.csd…...

与chatGPT神聊,引领你深入浅出系统调用

在操作系统的教学中&#xff0c;系统调用的作用不言而喻&#xff0c;但是&#xff0c;对系统调用常常是雾里看花&#xff0c;似乎明白&#xff0c;又难以真正的触及&#xff0c;即使在代码中调用了系统调用&#xff0c;比如调用fork&#xff08;&#xff09;创建进程&#xff0…...

自学大数据第十天~Hbase

随着数据量的增多,数据的类型也不像原来那样都是结构化数据,还有非结构化数据; Hbase时google 的bigtable的开源实现, BigtableHbase文件存储系统GFSHDFS海量数据处理MRMR协同管理服务chubbyzookeeper虽然有了HDFS和MR,但是对于数据的实时处理是比较困难的,没有办法应对数据的…...

vue更高效的工具-vite

目录 1.webpack 2.vite是什么 3.使用vite创建项目 4.最后总结 &#x1f43c;webpack 简单来说&#xff0c;Webpack是一个打包工具。 站在2018年的角度&#xff0c;成为一个优秀的前端工程师&#xff0c;除了要会写页面样式和动态效果之外&#xff0c;还需要会用主流的单页…...

HFish蜜罐的介绍和简单测试(一)

目录 0、什么是蜜罐 0.1、蜜罐的定义 0.2、蜜罐的优势 0.3、蜜罐与情报 1、HFish介绍 1.1、设计理念 1.2、HFish架构 1.3、HFish特点 1.4、常见蜜罐场景 2、快速部署 2.1、环境要求 2.2、联网环境&#xff0c;一键安装 2.3、安装效果 3、错误排查 3.1、管理端问题…...

2023面试题汇总二

一、CSS面试题 1. 清除浮动的方式有哪些&#xff1f; 为什么要清除浮动&#xff1f;因为浮动的盒子脱离标准流&#xff0c;如果父盒子没有设置高度的话&#xff0c;下面的盒子就会撑上来。 额外标签法(在最后一个浮动标签后&#xff0c;新加一个标签&#xff0c;给其设置cle…...

C# 支付宝接口在线收款退款

收款 在C#中使用支付宝在线支付功能&#xff0c;需要使用支付宝开放平台提供的SDK&#xff08;软件开发工具包&#xff09;&#xff0c;通过SDK中提供的API&#xff08;应用程序接口&#xff09;实现在线支付功能。 以下是使用C#实现支付宝在线支付的大致步骤&#xff1a; 获…...

python例程:《企业编码生成系统》程序

目录《企业编码生成系统》程序使用说明主要代码演示源码及说明文档下载路径《企业编码生成系统》程序使用说明 在PyCharm中运行《企业编码生成系统》即可进入如图1所示的系统主界面。在该界面中可以选择要使用功能对应的菜单进行不同的操作。在选择功能菜单时&#xff0c;只需…...

基于EB工具的TC3xx_MCAL配置开发04_ADC模块软件触发Demo配置

目录 1.概述2. EB配置2.1 添加HwUnit2.2 AdcPrescale配置2.3 添加ADC通道2.4 添加Adc Group2.5 Adc Group配置2.5.1 AdcGroup->General2.5.2 AdcGroup->AdcNotification2.5.3 AdcGroup->AdcGroupDefinition2.5.4 AdcGroup->AdcResRegDefinition2.6 中断配置1.概述 …...

内存操作函数

前言 &#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏: &#x1f354;&#x1f35f;&#x1f32f; c语言进阶 &#x1f511;个人信条: &#x1f335;知行合一 &#x1f349;本篇简介:>:介绍c语言中有关指针更深层的知识. 金句分享: ✨未来…...

免费搭建个人博客

免费搭建个人博客,并发布到公网 利用hexo搭建个人博客&#xff0c;通过gitee的pages发布到公网 1 前置准备 安装git、安装node.js&#xff08;尽量选择长期支持的版本) node.js官网&#xff1a;https://nodejs.org/en/ git官网&#xff1a;https://git-scm.com/book/zh/v2 安装…...

【Vue全家桶】详解Vue Router(一)

【Vue全家桶】Vue Router详解&#xff08;一&#xff09; Vue系列文章目录&#xff1a; 内容参考链接Vue&#xff08;一&#xff09;【Vue全家桶】邂逅Vue、Vue的多种引入方式Vue&#xff08;二&#xff09;【Vue全家桶】声明式编程、MVVMVue&#xff08;三&#xff09;【Vue…...

9大 HIVE SQL 最频繁被问到的面试题

SQL是用于数据分析和数据处理的最重要的编程语言之一&#xff0c;因此与数据科学相关的工作&#xff08;例如数据分析师、数据科学家和数据工程师&#xff09;在面试时总会问到关于 SQL 的问题。 SQL面试问题旨在评估应聘者的技术和解决问题的能力。因此对于应聘者来说&#x…...

学大数据算跟风吗?

随着互联网、物联网和人工智能等技术的不断发展&#xff0c;大数据技术逐渐进入人们的视野&#xff0c;成为一个备受关注的热点话题。那么&#xff0c;大数据专业好学吗&#xff1f;前景如何&#xff1f;下面我们来一起探讨一下。 一、大数据专业的学习难度 大数据技术是一种综…...

[C#]关于ListBox的坑

在用C#写个Demo程序的时候&#xff0c;使用ListBox保存读取到的每行内容。然后在重复读取的时候需要清除ListBox中的内容&#xff0c;我看到ListBox有清除的函数&#xff1a;lsbFiles.Items.Clear();以为这个函数就可以解决所有的问题&#xff0c;但是....于是想了个方法准备一…...

Apache POI 入门·第一话

文章目录1 摘要2 Apache POI2.1 介绍2.2 应用场景2.3 入门案例2.3.1 将数据写入Excel文件2.3.1.1 导入POI maven坐标2.3.1.2 代码开发2.3.1.3 实现效果2.3.2 读取Excel文件中的数据2.3.3 实现效果2.4 开发案例——导出运营数据Excel报表2.4.1 产品原型2.4.2 接口设计2.4.3 代码…...

8个python自动化脚本提高打工人幸福感~比心~

人生苦短&#xff0c;我用Python 最近有许多打工人都找我说打工好难 每天都是执行许多重复的任务&#xff0c; 例如阅读新闻、发邮件、查看天气、打开书签、清理文件夹等等&#xff0c; 使用自动化脚本&#xff0c;就无需手动一次又一次地完成这些任务&#xff0c; 非常方便…...

【嵌入式烧录/刷写文件】-1-详解Motorola S-record(S19/SREC/mot/SX)格式文件

目录 1 什么是Motorola S-record 2 Motorola S-record的格式 2.1 Motorola S-record的结构 2.1.1 “Record type记录类型”的说明 2.1.2 “Record length记录长度”的说明 2.1.3 如何计算“Checksum校验和” 2.2 Record order记录顺序 2.3 Text line terminator文本行终…...

图形视图界面 图形效果

Qt的标准图形效果类&#xff1a; QGraphicsBlurEffect提供模糊效果QGraphicsColorizeEffect提供染色效果QGraphicsDropShadowEffect提供阴影效果QGraphicsOpacityEffect提供透明效果 QGraphicsBlurEffect&#xff08;模糊效果&#xff09; 模糊效果会模糊源。此效果对于减少细…...

ElementUI学习笔记

目录 一、简单介绍 二、安装 1、下载 2、引入 三、布局 1、简介 2、使用 3、好处 四、布局容器 1、常见排布 2、调整样式 五、按钮 1、简单引用 2、改变样式 3、加载中效果 六、表格 1、简单使用 2、样式修改 七、对话框 1、简单使用 2、添加自定义内容 3、…...

安装KVM并创建虚拟机及基本使用

#环境说明&#xff1a;Centos7 环境准备&#xff1a; CPU开启虚拟化&#xff0c;给宿主机的CPU和内存分配足够多的配置 安装KVM 1.安装相关软件包 yum -y install qemu-kvm libvirt virt-manager virt-install virt-viewer 软件包简介&#xff1a; qemu-kvm: 为kvm提供…...

一种LCD屏闪问题的调试

背景 项目使用ESP32-S3 RGB接口驱动的LCD, 框架 idf-v5.0, LVGL-v7.11 显示画面正常, 但肉眼可见的像是背光在闪烁, 背光电路是应用很久的经典电路, 且排查背光驱动无错, 但开机一段时间后, 闪烁会明显减轻 记录 这块屏的显示驱动芯片为ST7701S, 查看芯片手册有说明特定的上…...

Java程序运行在Docker等容器环境有哪些新问题?

第30讲 | Java程序运行在Docker等容器环境有哪些新问题&#xff1f; 如今&#xff0c;Docker 等容器早已不是新生事物&#xff0c;正在逐步成为日常开发、部署环境的一部分。Java 能否无缝地运行在容器环境&#xff0c;是否符合微服务、Serverless 等新的软件架构和场景&#x…...

C语言面试最常问的三个关键字

文章目录前言一&#xff0c;static关键字的作用二&#xff0c;const 关键字的作用2.1&#xff0c; 修饰局部变量2.2&#xff0c;修饰指针2.3&#xff0c; 修饰函数形参2.4&#xff0c;修饰函数的返回值三&#xff0c;volatile关键字的作用前言 面试的时候&#xff0c;C语言最常…...

【Linux】-初识Linux

作者&#xff1a;学Java的冬瓜 博客主页&#xff1a;☀冬瓜的主页&#x1f319; 专栏&#xff1a;【Linux】 分享&#xff1a;逆着光行走&#xff0c;任风吹雨打。 ——《起风了》 主要内容&#xff1a;Linux的一些最基本指令&#xff0c;Linux的小程序&#xff0c;Linux关于连…...

精选7个 Python 学习资源库,助你成为优秀的开发者

当你在学习编程时&#xff0c;很容易被大量的资源所吓到&#xff0c;不知道该从何开始。 GitHub 仓库是一个很好的起点&#xff0c;因为它们提供了一种非常实用的方式来了解实际的编程应用。你可以查看其他人的代码&#xff0c;并将其与自己的代码进行比较和学习。 当涉及到 …...

【大数据处理与可视化】三 、Pandas库的运用

【大数据处理与可视化】三 、Pandas库的运用实验目的实验内容实验步骤一、使用pandas库分别创建Series对象和DataFrame对象&#xff0c;并对创建的对象使用索引、排序等相关操作&#xff1b;练习DataFrame对象的统计计算和统计描述的功能。1&#xff06;2、创建一个DataFrame(d…...

做个网站多少钱/百度关键词统计

更好的阅读体验点击原文链接 大家好&#xff0c;计算机视觉life经过几个月打磨&#xff0c;推出了激光SLAM逐行源码解析课程《Cartographer从入门到精通: 原理深剖源码逐行详解》&#xff0c;已经购买过我们的课程学员及知识星球用户均有优惠券&#xff08;见文末&#xff09;…...

wordpress沐风/win7优化设置

240 程序检查 有一种编程语言&#xff0c;只有以下五种命令&#xff0c;每种命令最多有两个参数&#xff0c;请检查给定的程序是否 可能 无限循环。 这些命令分别是&#xff1a; label <string>&#xff1a;声明一个标签&#xff0c;参数是一个字符串&#xff0c;且每…...

php可以做网站app吗/十大软件培训机构

出现这种错误的原因就是&#xff1a;你入参的数值超过了数据库中定义的类型长度&#xff0c;这时候需要修改数据库中的类型了。...

wordpress搭建门户/百度图片搜索网页版

登陆网页的简单功能的实现输入用户名和密码与数据库当中的用户名和密码匹配上&#xff0c;则登陆成功。首先我们要先配置好web制作所需要的软件&#xff0c;在mysql数据库当中建立表&#xff0c;建立用户名和密码在java ee上编写连接mysql数据库的代码String num request.getP…...

测试 百度屏蔽wordpress/成都电脑培训班零基础

PowerMock是一个Mock Server的实现&#xff0c;它同时支持HTTP与gRPC协议接口的Mock&#xff0c;并提供了灵活的插件功能。 这个工具面向于前后端、测试等对有接口Mock需求的开发人员&#xff0c;也可以作为一个通用的Mock服务&#xff0c;部署在网关架构或API管理平台中&#…...

国际企业网站建设/合肥优化营商环境

2019独角兽企业重金招聘Python工程师标准>>> Maven 系列 五 &#xff1a;使用Nexus搭建Maven私服 博客分类&#xff1a; maven 私服是架设在局域网的一种特殊的远程仓库&#xff0c;目的是代理远程仓库及部署第三方构件。有了私服之后&#xff0c;当 Maven 需要下载…...