用vite快速搭建vue3项目及初始化(pinia、router、封装、element-plus的自动导入)

前言

很多是之前跟着黑马的Vue3教程配置的,但是后面husky风格啊eslint啊这些被我删了,em有点烦人。

和上一篇react一样,发现自己写项目的时候记不住需要做什么,所以现在写一篇来给自己总结一下。(后面忘了也不用翻视频了,直接照着抄答案)

只写流程,没有理论。

这是我写的习惯,只具备一定通用性,有需要可参考。

创建项目

npm create vue
npm install
npm run dev

这个选项是比较多的,可以参考一下(后面eslint和prettier没去用)上来还是一样,src里面一通删除,只留下这样。

App.vue里面只留下

<script setup></script>

<template>
  <router-view></router-view>
</template>

<style scoped></style>

 main.js里面引入css的那一句去掉。

路由

这里由于自动导入了router了,所以很方便。

还是一样用login来测试。

加了一个导航守卫对‘/’进行跳转。如果有需要对token校验的话可以再加一项,我放在下面注释。

import { createRouter, createWebHistory } from 'vue-router'

const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL),
  routes: [
    {
      path: '/login',
      component: () => import('@/views/Login/LoginPage.vue')
    }
  ]
})

router.beforeEach((to, from, next) => {
    // 如果路径是根路径,重定向到 /login
    if (to.path === '/') {
        next('/login')
    } else {
        // 否则正常放行
        next()
    }
})


// router.beforeEach((to, from, next) => {
//     // 获取token
//     const token = localStorage.getItem('token')

//     // 如果路径是根路径,重定向到 /login
//     if (to.path === '/') {
//         next('/login')
//     } else if (!token && to.path !== '/login') {
//         // 如果没有token, 且访问的不是登录页,拦截到登录
//         next('/login')
//     } else {
//         // 否则正常放行
//         next()
//     }
// })


export default router

 这里的路由前缀如果有需要的话再去vite.config.js里面设置base。像我这里设置的就是/home。

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),
  ],
  base:'/home',
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  }
})

仓库

这里很方便也是因为已经建好了pinia,所以不需要去太多的配置,主要加上一个自动保存到本地的工具。

npm i pinia-plugin-persistedstate

新建文件夹和文件到这样

因为大多数项目都有token,所以这里就用token为例子了。

在user.js中

import { defineStore } from 'pinia'
import { ref } from 'vue'

//  token setToken removeToken
export const useTokenStore = defineStore(
  'token',
  () => {
    const accessToken = ref('')
    const setAccessToken = (newToken) => {
      accessToken.value = newToken
    }
    const removeAccessToken = () => {
      accessToken.value = ''
    }

    const refreshToken = ref('')
    const setRefreshToken = (newToken) => {
      refreshToken.value = newToken
    }
    const removeRefreshToken = () => {
      refreshToken.value = ''
    }

    return {
      accessToken,
      refreshToken,
      setAccessToken,
      removeAccessToken,
      setRefreshToken,
      removeRefreshToken
    }
  },
  {
    persist: true
  }
)

记住下面这个persist要设置为true才能自动保存。这里的双token是为了无感刷新,如果有兴趣可以看我之前的文章,在axios的运用那一篇。

然后在index.js中

import { createPinia } from 'pinia'
import persist from 'pinia-plugin-persistedstate'

const pinia = createPinia()
pinia.use(persist)

export default pinia
export * from './modules/user'

如何使用pinia里的呢?

这里举个例子。

import { useTokenStore } from '@/stores'
const tokenStore = useTokenStore()

const token=tokenStore.accessToken

tokenStore.removeAccessToken()

请求

又是老生常谈的请求了,直接cv吧。

npm install axios

新建一个api文件夹和api.js、utils.js

在util.js下


//utils.js
import axios from "axios"
axios.defaults.baseURL='http://127.0.0.1'
const axiosInstance = axios.create({
    timeout: 5 * 1000, // 请求超时时间(5秒)
    retry: 0, //全局重试次数
    retryDelay: 1000 //全局重试间隔
})
 
export const request = (options) => {
    return new Promise((resolve, reject) => {
        axiosInstance(options)
            .then((response) => resolve(response.data))
            .catch((error) => reject(error))
    })
}

然后在api.js下引入就好


//api.js
import { request } from "./utils";
export const login = (data) => {
    return request({
        url: '/login',
        params: data,
        method:'GET'
    })
}

然后就只剩下建杂七杂八的文件夹,搞完就这样。

自动导入element-plus

这个看情况,但是我挺多用element-plus的。

npm install element-plus --save
npm install -D unplugin-vue-components unplugin-auto-import

然后在vite.config.js里面加上这些。自己看着办就行咯。

import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'


export default defineConfig({
  // ...
  plugins: [
    // ...
    AutoImport({
      resolvers: [ElementPlusResolver()],
    }),
    Components({
      resolvers: [ElementPlusResolver()],
    }),
  ],
})
Vite是一个用于快速构建现代化的Web项目的构建工具,它专注于开发阶段的快速热重载,并使用ES模块作为原生的开发模式。Vue3是Vue.js的最新版本,它在性能、开发体验和可维护性上都有所提升。 针对你提到的具体的库和框架: - Vue RouterVue.js官方的路由管理器,用于实现页面之间的导航和路由控制。你可以通过npm安装vue-router,并在项目中进行配置和使用。 - Pinia是Vue.js的状态管理库,它提供了一种简单而强大的方式来管理应用程序的状态。你可以集成Pinia到你的Vue项目中,以便更好地组织和共享你的应用程序状态。 - Axios是一个基于Promise的HTTP客户端,用于通过网络发送异步请求。你可以使用Axios来处理与服务器的通信,并获取数据来更新你的Vue应用程序。 - Element Plus是一套基于Vue3的组件库,包含了丰富的UI组件,可以帮助你快速搭建漂亮的用户界面。你可以在项目中安装和使用Element Plus来实现各种交互效果和用户界面。 如果你想使用ViteVue3和以上提到的库和框架来创建一个项目,你可以按照以下步骤进行: 1. 安装Vite:通过npm全局安装Vite,然后使用Vite命令初始化一个新的项目。 2. 配置Vite:根据你的项目需求,在Vite的配置文件中添加Vue Router、Pinia、Axios和Element Plus的相关配置。 3. 安装和配置Vue Router:通过npm安装Vue Router,并在项目中配置和使用Vue Router来管理应用程序的路由。 4. 集成Pinia:通过npm安装Pinia,并在项目引入和配置Pinia,以便在应用程序中使用Pinia来管理状态。 5. 使用Axios:通过npm安装Axios,并在项目引入和配置Axios,以便进行网络请求和数据获取。 6. 引入Element Plus:通过npm安装Element Plus,并在项目中按需引入和使用Element Plus的组件,以搭建漂亮的用户界面。 希望以上信息对你有帮助,祝你在使用ViteVue3和这些库和框架时取得成功!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [vite-vue-ts精简模版集成pinia+svg+router+@src](https://download.csdn.net/download/ldy889/85018930)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [vite+vue3+ts+vue-router+pinia+axios+element-plus](https://blog.csdn.net/zy_080400/article/details/127125359)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值