vite+vue3+ts从0到1搭建企业级项目(1)

简介: vite+vue3+ts从0到1搭建企业级项目

一. 初始化项目

  • 使用 NPM
npm create vite@latest
yarn create vite
  • 使用 PNPM:
pnpm create vite

根据提示进行初始化:(这里我们选用yarn进行创建项目)

进入项目目录:

cd vite-project

下载依赖:

yarn

运行项目:

yarn dev

注意:由于vue2的vscode开发插件并不能很好的满足我们vue3开发,所以我们需要更换开发插件。

  1. Volar
    使用 VSCode 开发 Vue2 时, Vetur 插件作为 Vue2 配套的 VSCode 插件,它的主要作用是对 Vue 单文件组件提供高亮、语法支持以及语法检测。
    而随着 Vue3 正式版发布,Vue 团队官方推荐 Volar 插件来代替 Vetur 插件, 不仅支持 Vue3 语言高亮、语法检测,还支持 TypeScript 和基于 vue-tsc 的类型检查功能。
    使用时需要 禁用Vetur

  2. Vue VSCode Snippets
    Vue VSCode Snippets 插件旨在 为开发者提供最简单快速的生成 Vue 代码片段的方法,通过各种快捷键就可以在 .vue文件中快速生成各种代码片段。

    此时我们就可以通过关键字快速生成代码片段 vbase :

二. 配置环境

1. 解决ts找不到模块

我们在项目创建好后可能会遇到如下问题:

解决方案:

  • 在根目录创建 shims.d.ts文件
//shims.d.ts
// 声明模块,处理以 .vue 结尾的文件
declare module "*.vue" {
  // 导入 vue 模块中的 defineComponent 函数
  import { defineComponent } from "vue";
  
  // 定义一个常量 component,类型为 defineComponent 函数的返回类型
  const component: ReturnType<typeof defineComponent>;
  
  // 导出 component 常量,使其在其他文件中可用
  export default component;
}
  • 修改 tsconfig.json文件
{
  // 编译器选项
  "compilerOptions": {
  // 定义类型声明文件的路径
  "typeRoots": [
    "node_modules/@types", // 默认路径,TypeScript 会在这里查找类型声明
    "src/types"       // 自定义路径,你可以在这里放置你的类型声明
  ],
  // 设置输出代码的 ECMAScript 目标版本
  "target": "esnext",
  // 使用 defineProperty 定义类的字段
  "useDefineForClassFields": true,
  // 设置输出模块的类型
  "module": "esnext",
  // 使用 Node.js 的模块解析策略
  "moduleResolution": "node",
  //跳过typescript对第三方依赖的类型检查
   "skipLibCheck": true,
  // 开启所有严格类型检查选项
  "strict": true,
  // 保留 JSX,不进行转换
  "jsx": "preserve",
  // 生成源映射,以便在调试时能找到原始 TypeScript 代码
  "sourceMap": true,
  // 允许从 .json 文件中导入数据
  "resolveJsonModule": true,
  // 启用 CommonJS 和 ES6 之间的模块兼容性
  "esModuleInterop": true,
  // 包括 esnext 和 DOM 库的定义
  "lib": ["esnext", "dom"],
  // 设置基础路径,用于解析模块名
  "baseUrl": "./",
  // 路径别名设置
  "paths": {
    "@": ["src"],    // '@' 指向 'src' 目录
    "@/*": ["src/*"]   // '@/xxx' 会解析到 'src/xxx'
  }
  },
  // 定义哪些文件需要被 TypeScript 编译器处理
  "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"]
}

此时重启vscode,错误消失:

2. 环境配置

保证 node 的使用
yarn add @types/node --save-dev
修改 vite.config.ts
// 导入 Vite 的配置方法和 Vue 插件
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
// 导入 Node.js 的 path 模块,用于处理文件路径
import * as path from 'path';
// 使用 defineConfig 方法定义 Vite 的配置
export default defineConfig({
  resolve: {
    // 设置别名,这样在项目中就可以使用 '@' 代替 'src' 路径
    alias: {
      '@': path.resolve(__dirname, 'src')
    }
  },
  plugins: [
    // 使用 Vue 插件,这样 Vite 就能处理 Vue 文件了
    vue()
  ],
  server: {
    // 设置开发服务器的端口号为 8080
    port: 8080,
    hmr: {
      // 设置 HMR(热模块替换)的主机和端口
      host: '127.0.0.1',
      port: 8080
    },
    // 设置代理,以解决跨域问题
    proxy: {
      // 使用类型断言确保环境变量是一个字符串
      // 这样 TypeScript 就不会报错了
      [process.env.VITE_APP_BASE_API as string]: {
        // 设置代理目标为 localhost:3000
        target: 'http://localhost:3000',
        // 允许改变原始主机头为目标 URL
        changeOrigin: true,
        // 重写路径:移除路径中的环境变量部分
        rewrite: (path) => path.replace(new RegExp('^' + (process.env.VITE_APP_BASE_API as string)), '')
      }
    }
  }
});
配置不同环境的接口地址

在实际开发中,由于在开发、测试、生产环境中的接口地址是不一样的,我们不可能每次在打包到不同环境前都手动去更改接口地址,这样过于麻烦并且很容易出现问题导致环境与接口不对应,此时我们就需要配置不同的环境配置文件来区别不同环境的接口地址,方便我们在后续打包时通过一行命令就打包成为我们想要的环境包。

  • 根目录创建 .env.development 开发环境 配置文件
  • 根目录创建 .env.staging 测试环境 配置文件
  • 根目录创建 .env.production 生产环境 配置文件
# 开发环境配置
VITE_ENV = 'development'
VITE_APP_BASE_API = '接口地址'
# 图片上传
VITE_APP_IMAGE_PATH='图片接口地址'
# 测试环境配置
VITE_ENV = 'staging'
VITE_APP_BASE_API = '接口地址'
VITE_APP_IMAGE_PATH='图片接口地址'
# 生产环境配置
VITE_ENV = 'production'
VITE_APP_BASE_API = '接口地址'
VITE_APP_IMAGE_PATH='图片接口地址'
pakeage.json的scripts中配置不同环境的打包命令
  • 使用 yarn build 打包
"build": "vue-tsc && vite build",
    "build:staging": "tsc --noEmit && vite build --mode staging",
    "build:production": "tsc --noEmit && vite build --mode production",

接下来使用 yarn build:staging打包测试一下,发现报错:

此报错意为 缺失 ‘@babel/types’ 模块,这是一个常见的类型定义文件,被多个库(如 @babel/parser 和 @vue/compiler-core)依赖。可以安装它来解决这个问题:

yarn add @babel/types --dev

接下来还有一个报错:

此报错意为 无法找到 ‘./App.vue’:因为 TypeScript 默认不知道如何处理 .vue 文件。可以在 vite-env.d.ts中添加如下代码:

/// <reference types="vite/client" />
declare module "*.vue" {
    import { defineComponent } from "vue";
    const component: ReturnType<typeof defineComponent>;
    export default component;
}

接下来再使用 yarn build:staging打包测试一下,打包成功:

vite+vue3+ts从0到1搭建企业级项目(2)https://developer.aliyun.com/article/1540138

目录
相关文章
|
1月前
|
缓存 JavaScript PHP
斩获开发者口碑!SnowAdmin:基于 Vue3 的高颜值后台管理系统,3 步极速上手!
SnowAdmin 是一款基于 Vue3/TypeScript/Arco Design 的开源后台管理框架,以“清新优雅、开箱即用”为核心设计理念。提供角色权限精细化管理、多主题与暗黑模式切换、动态路由与页面缓存等功能,支持代码规范自动化校验及丰富组件库。通过模块化设计与前沿技术栈(Vite5/Pinia),显著提升开发效率,适合团队协作与长期维护。项目地址:[GitHub](https://github.com/WANG-Fan0912/SnowAdmin)。
282 5
|
1月前
|
JavaScript API 容器
Vue 3 中的 nextTick 使用详解与实战案例
Vue 3 中的 nextTick 使用详解与实战案例 在 Vue 3 的日常开发中,我们经常需要在数据变化后等待 DOM 更新完成再执行某些操作。此时,nextTick 就成了一个不可或缺的工具。本文将介绍 nextTick 的基本用法,并通过三个实战案例,展示它在表单验证、弹窗动画、自动聚焦等场景中的实际应用。
121 17
|
16天前
|
JavaScript 前端开发 UED
Vue 项目中如何自定义实用的进度条组件
本文介绍了如何使用Vue.js创建一个灵活多样的自定义进度条组件。该组件可接受进度段数据数组作为输入,动态渲染进度段,支持动画效果和内容展示。当进度超出总长时,超出部分将以红色填充。文章详细描述了组件的设计目标、实现步骤(包括props定义、宽度计算、模板渲染、动画处理及超出部分的显示),并提供了使用示例。通过此组件,开发者可根据项目需求灵活展示进度情况,优化用户体验。资源地址:[https://pan.quark.cn/s/35324205c62b](https://pan.quark.cn/s/35324205c62b)。
29 0
|
2月前
|
JavaScript 前端开发 算法
Vue 3 和 Vue 2 的区别及优点
Vue 3 和 Vue 2 的区别及优点
|
2月前
|
存储 JavaScript 前端开发
基于 ant-design-vue 和 Vue 3 封装的功能强大的表格组件
VTable 是一个基于 ant-design-vue 和 Vue 3 的多功能表格组件,支持列自定义、排序、本地化存储、行选择等功能。它继承了 Ant-Design-Vue Table 的所有特性并加以扩展,提供开箱即用的高性能体验。示例包括基础表格、可选择表格和自定义列渲染等。
146 6
|
1月前
|
JavaScript 前端开发 API
Vue 2 与 Vue 3 的区别:深度对比与迁移指南
Vue.js 是一个用于构建用户界面的渐进式 JavaScript 框架,在过去的几年里,Vue 2 一直是前端开发中的重要工具。而 Vue 3 作为其升级版本,带来了许多显著的改进和新特性。在本文中,我们将深入比较 Vue 2 和 Vue 3 的主要区别,帮助开发者更好地理解这两个版本之间的变化,并提供迁移建议。 1. Vue 3 的新特性概述 Vue 3 引入了许多新特性,使得开发体验更加流畅、灵活。以下是 Vue 3 的一些关键改进: 1.1 Composition API Composition API 是 Vue 3 的核心新特性之一。它改变了 Vue 组件的代码结构,使得逻辑组
164 0
|
JavaScript Java 物联网
现有vue项目seo优化
现有vue项目seo优化
|
JavaScript 前端开发
重读vue电商网站45之项目优化上线
重读vue电商网站45之项目优化上线
171 0
重读vue电商网站45之项目优化上线
|
2月前
|
JavaScript
vue实现任务周期cron表达式选择组件
vue实现任务周期cron表达式选择组件
268 4
|
16天前
|
JavaScript 前端开发 开发者
Vue 自定义进度条组件封装及使用方法详解
这是一篇关于自定义进度条组件的使用指南和开发文档。文章详细介绍了如何在Vue项目中引入、注册并使用该组件,包括基础与高级示例。组件支持分段配置(如颜色、文本)、动画效果及超出进度提示等功能。同时提供了完整的代码实现,支持全局注册,并提出了优化建议,如主题支持、响应式设计等,帮助开发者更灵活地集成和定制进度条组件。资源链接已提供,适合前端开发者参考学习。
108 17