vue3+ts 开发效率提升

news/2024/10/25 11:42:41/

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
}

 

~~~持续更新~~~


http://www.ppmy.cn/news/34907.html

相关文章

【北大青鸟天府校区的Java专业怎么样?】

北大青鸟天府校区是北大青鸟总部在西南投资兴办的重点校区&#xff0c;拥有极为强大的外部教育资源和就业资源&#xff0c;使咱们的学员能够享受更好、更完善的教学资源。超过23年的办学经验&#xff0c;培养了超过10000位学员&#xff0c;保障就业&#xff0c;学员就业率达到9…

cpp-httplib实现HTTP Server接收带参数的URL

URL中符号意义 / 分隔目录和子目录 &#xff1f;分隔实际的URL和参数 & URL中指定的参数间的分隔符 URL中指定的参数的值 表示空格&#xff08;在URL中不能使用空格&#xff09; # 表示书签 在RESTful风格的API中常见的URL样式&#xff1a; 带时间路径的URL http…

Flutter GetX 实现 ChatGPT 简单聊天界面

Flutter 是一款跨平台的移动应用开发框架&#xff0c;而 GetX 是 Flutter 中一种简单易用的状态管理和路由管理工具。本篇我们将使用 Flutter 和 GetX 实现一个简单的聊天界面&#xff0c;以与 ChatGPT 进行交互。 我们需要在 Flutter 项目中引入 GetX 库。在pubspec.yaml文件…

组件自定义事件

绑定 组件自定义事件跟子传递很像 相同的是无论你使用的是props或者自定义事件&#xff0c;都是要使用到回调函数 子传父 需要亲自是收一下&#xff0c;然后调用一下 而自定义事件是没有给子组件传东西&#xff0c;只是这个当做事件的回调而已 对比一下student并没有数据来接收…

做Vinted要注意什么?详细避坑指南参考

最近有很多人向东哥我咨询vinted这个平台&#xff0c;很多朋友都是想咨询vinted这个平台好做吗&#xff1f;主要卖什么商品好卖一点&#xff0c;有没有什么注意事项。今天东哥就一一给大家解答。 Vinted平台好做吗&#xff1f; Vinted面向的市场主要是欧美市场&#xff0c;那平…

被隐藏的过程——预处理

文章目录0. 前言1. 程序的翻译环境和执行环境2. 被隐藏的过程2.1 翻译环境2.2 编译3.2.1 预编译3.2.2 编译2.2.3 汇编2.3 链接2.4 运行环境3. 预处理3.1 预定义符号3.2 #define3.2.1 #define定义标识符3.2.2 #define定义宏3.2.3 #define替换规则3.2.4 #和##3.2.5 带副作用的宏参…

信息系统项目管理师第四版知识摘编:第6章 项目管理概论

第6章 项目管理概论6.1PMBOK的发展PMBOK项目管理知识体系(Project Management Body Of Knowledge, PMBOK)是由美国项目管理协会(Project Management Institute,PMI)开发的一套描述项目管理专业范围的知识体系&#xff0c;包含了对项目管理所需的知识、技能和工具的描述。编辑切…

Android开发工程师想找工作需要掌握哪些

前言 目前互联网行业越来越好&#xff0c;进入这个行业的人员也是越来越多。从开发的角度来看&#xff0c;开发的职位主要分前端&#xff0c;后端&#xff0c;客户端&#xff08;主要分为ios和android开发&#xff09;以及算法工程师等。 Android开发一直是当前互联网行业中最…