搭建你的项目脚手架 —— vue3.x + typescript4.x + vite2.x + pinia2.x(二)

简介: 搭建你的项目脚手架 —— vue3.x + typescript4.x + vite2.x + pinia2.x

环境变量

通常项目会处于很多不同环境,其中包含三个最基本的环境:

  • 开发环境
  • 测试环境
  • 生产环境若你想了解更多关于 vite 具体如何配置环境变量,可点此查看

注意:.env 文件只能放在根目录下,否则 vite 无法读取 .env 文件内容

在本文中作为示例只创建这三种基本的环境:

  • 为不同的环境创建 .env 文件,如下:
    image.png
  • package.json 修改对应的命令,如下:
      image.png
  • 为了支持对 自定义环境编变量 的友好提示,需要在 env.d.ts 文件中添加对应的 ImportMeta 接口
interface ImportMetaEnv {
   readonly VITE_API_ENV: string
 }
 // eslint-disable-next-line no-unused-vars
 interface ImportMeta {
   readonly env: ImportMetaEnv
 }
复制代码

通过在 App.vue 中进行测试,import.meta.env.VITE_API_ENV 进行获取环境变量的值,结果如下:

image.png

集成 vue-router

具体实现请看源码配置,以下是简述:

  • 通过 npm install vue-router@4 安装符合 Vue3 版本的 Vue Router
  • 创建 router 文件夹,其中 index.ts 为统一的入口文件,routes 目录存放不同的模块路由
  • 创建 pages 文件夹,存放页面相关的内容,可引入到 routes 中充当展示组件
  • 定义基本路由,如配置 Home 页的重定向、NotFound 页面

测试效果如下:

image.png

集成 pinia

具体实现请看源码配置,以下是简述:

  • 通过 npm install pinia 安装 pinia
  • src 目录下创建 store 目录用来存放 state、actions、gette 等模块
    image.png
  • 创建一个 pinia(根存储)并将其传递给应用程序,如:
import { createPinia } from 'pinia'
app.use(createPinia())
复制代码

测试效果如下:

image.png

封装 axios

关于 axiosclass 封装已经有很多的文章都讲得很细了,这里使用 函数式 进行二次封装,具体实现请看源码配置,以下是简述:

  • 通过 npm i axios 安装 axios
  • src 目录下创建 utils 目录用于提供自定义工具模块方法,同时在其目录下请求模块创建 request 目录存放二次封装的 axios
    image.png
  • request 目录下封装常用的方法包含 get、post、upload、download
    image.png

如下是使用 apifox 模拟接口,得到的测试结果:

image.png

集成 element-plus

具体实现请看源码配置,以下是简述:

  • 通过 npm install element-plus --save 安装 element-plus
  • 实现 按需加载,通过 npm install -D unplugin-vue-components unplugin-auto-import 对应插件并在 vite.config.ts 中进行配置

如下是使用 element-plus 组件的效果:

image.png

生产构建

在生产构建的过程中,仍然有些你需要注意的内容:

  • 修改 package.json 中的 scripts 脚本命令,添加 vite build 命令进行生产构建,如:
"scripts": {
     ...
    "test": "vue-tsc --noEmit && vite build --mode test",
    "build": "vue-tsc --noEmit && vite build --mode prod"
     ...
   }
复制代码
  • tsconfig.json 中的 isolatedModules 选项默认为 true, 现在需要将其修改为 false,否则在打包过程中会包如下错误:
     image.png
  • tsconfig.json 中的 noImplicitAny 选项默认为 true,现在需要将其修改为 false,否则在你引入自定义文件模块时可能无法通过 ts 编译:
  • image.png
  • 为了将打包后的 jscss 文件生成多个 chunk,需要对 cssCodeSplitrollupOptions 进行配置,具体配置请看源码,否则会被打包成一个文件,如下:
    image.png

从脚本命令来看,当我们执行 npm run build 时,实际执行的是 vue-tsc --noEmit && vite build --mode prod,其中最先执行的就是 vue-tsc 即有关 vuetypescript 的编译,意味着这个阶段我们必须要保证和 ts 相关的内容都不能有异常,否则打包阶段必然无法通过。

最后

从基本项目结构一步步 “添砖加瓦” 到相对完善了项目的内容(虽然还得继续完善),其中有不少的坑得踩,但为了填坑又不得不去找各种文档资料来解决问题,时间上也许开销比较大,但这也能填充自己知识的空白或模糊区域,亦是一种收获知识的方式。


目录
相关文章
|
7天前
|
JavaScript
【第12期】Vue3+TypeScript+Vite中动态引入图片等静态资源
【第12期】Vue3+TypeScript+Vite中动态引入图片等静态资源 c
257 0
|
7天前
|
JavaScript 前端开发
在Vue中使用TypeScript的常见问题有哪些?
在Vue中使用TypeScript的常见问题有哪些?
35 2
|
7天前
|
JavaScript 前端开发
在Vue中使用TypeScript的优缺点是什么?
在Vue中使用TypeScript的优缺点是什么?
20 0
|
7天前
|
JavaScript
在 Vue 中如何使用 TypeScript?
在 Vue 中如何使用 TypeScript?
17 0
|
7天前
|
JavaScript 安全 容器
Vue3 + setup + TypeScript: 构建现代、类型安全的Vue应用的关键技巧总结
当使用 setup 的时候,组件直接引入就可以了,不需要再自己手动注册
|
7天前
|
前端开发 JavaScript 测试技术
Vue3+Vite+TypeScript常用项目模块详解(下)
现在无论gitee还是github,越来越多的前端开源项目采用Vue3+Vite+TypeScript+Pinia+Elementplus+axios+Sass(css预编译语言等),其中还有各种项目配置比如eslint 校验代码工具配置等等,而我们想要进行前端项目的二次开发,就必须了解会使用这些东西,所以作者写了这篇文章进行简单的介绍。
|
7天前
|
JavaScript 前端开发 API
Vue3+Vite+TypeScript常用项目模块详解
现在无论gitee还是github,越来越多的前端开源项目采用Vue3+Vite+TypeScript+Pinia+Elementplus+axios+Sass(css预编译语言等),其中还有各种项目配置比如eslint 校验代码工具配置等等,而我们想要进行前端项目的二次开发,就必须了解会使用这些东西,所以作者写了这篇文章进行简单的介绍。
Vue3+Vite+TypeScript常用项目模块详解
|
7天前
|
JavaScript
Vue3 + Typescript + Node.js 搭建elementUI使用环境
Vue3 + Typescript + Node.js 搭建elementUI使用环境
46 0
|
7天前
|
JavaScript 前端开发 开发者
Vue工具和生态系统: Vue.js和TypeScript可以一起使用吗?
Vue工具和生态系统: Vue.js和TypeScript可以一起使用吗?
71 0
|
7天前
|
JavaScript
Driverjs use in Vue TypeScript Project
Driverjs use in Vue TypeScript Project
Driverjs use in Vue TypeScript Project