宽哥—【云原生开发】Vue3、Vite、Pinia、Axios、HTML、JS、CSS入门到项目实战

76 阅读3分钟

云原生全栈开发实战:Vue3+Vite+Pinia+Axios 完整教程

在云原生技术浪潮下,前后端分离架构已成为主流,而 Vue3 生态凭借轻量、高效、灵活的特性,成为全栈开发的优选方案。本文结合实战场景,详解 Vue3+Vite+Pinia+Axios 技术栈的核心用法与整合逻辑,帮助开发者快速搭建高性能云原生前端应用。

一、技术选型核心逻辑

云原生应用强调 “轻量化、可扩展、高性能”,这套技术栈恰好契合这些需求:Vite 作为构建工具,基于 ESModule 实现秒级热更新,解决传统 Webpack 冷启动慢的痛点;Vue3 带来 Composition API、Teleport 等新特性,兼顾代码复用性与灵活性;Pinia 替代 Vuex 成为官方状态管理库,简化 API 设计,天然支持 TypeScript;Axios 则作为成熟的 HTTP 客户端,负责前后端数据交互,适配云原生后端的 RESTful 接口。

二、环境搭建与项目初始化

首先确保安装 Node.js(推荐 16 + 版本),通过 npm 快速初始化项目:

bash

# 初始化Vue3+Vite项目
npm create vite@latest cloud-native-app -- --template vue
cd cloud-native-app
# 安装核心依赖
npm install pinia axios
npm run dev

上述命令将创建基于 Vite 的 Vue3 项目,并安装状态管理和网络请求依赖。Vite 的默认配置已优化开发体验,支持按需编译和热模块替换,启动后访问http://localhost:5173即可看到初始页面。

三、核心技术实战应用

1. Vite 配置优化

Vite 的配置文件vite.config.js可按需调整,例如配置跨域代理(适配云原生后端接口):

javascript

运行

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

export default defineConfig({
  plugins: [vue()],
  server: {
    proxy: {
      '/api': {
        target: 'http://localhost:8080', // 云原生后端接口地址
        changeOrigin: true,
        rewrite: (path) => path.replace(/^/api/, '')
      }
    }
  }
})

2. Pinia 状态管理

Pinia 无需手动注册,创建src/store/user.js定义用户状态:

javascript

运行

import { defineStore } from 'pinia'

export const useUserStore = defineStore('user', {
  state: () => ({
    token: localStorage.getItem('token') || '',
    info: {}
  }),
  actions: {
    // 登录状态更新
    login(token, userInfo) {
      this.token = token
      this.info = userInfo
      localStorage.setItem('token', token)
    },
    // 退出登录
    logout() {
      this.$reset()
      localStorage.removeItem('token')
    }
  }
})

在组件中直接使用,支持响应式状态更新:

vue

<script setup>
import { useUserStore } from '@/store/user'
const userStore = useUserStore()

// 调用actions方法
userStore.login('xxx-token', { name: '云原生用户' })
</script>

3. Axios 封装与请求拦截

创建src/utils/request.js封装 Axios,处理请求拦截、响应拦截和错误统一处理:

javascript

运行

import axios from 'axios'
import { useUserStore } from '@/store/user'

const service = axios.create({
  baseURL: import.meta.env.VITE_API_BASE_URL,
  timeout: 5000
})

// 请求拦截器:添加Token
service.interceptors.request.use(
  (config) => {
    const userStore = useUserStore()
    if (userStore.token) {
      config.headers['Authorization'] = `Bearer ${userStore.token}`
    }
    return config
  },
  (error) => Promise.reject(error)
)

// 响应拦截器:统一处理结果
service.interceptors.response.use(
  (response) => response.data,
  (error) => {
    //  Token过期处理
    if (error.response?.status === 401) {
      const userStore = useUserStore()
      userStore.logout()
      window.location.href = '/login'
    }
    return Promise.reject(error)
  }
)

export default service

4. Vue3 组件开发与 Composition API

利用 Vue3 的 Composition API 实现业务组件,例如用户列表组件src/views/UserList.vue

vue

<template>
  <div class="user-list">
    <el-table :data="userList"></el-table>
  </div>
</template>

<script setup>
import { ref, onMounted } from 'vue'
import request from '@/utils/request'

const userList = ref([])

// 加载用户数据
const fetchUsers = async () => {
  try {
    const res = await request({ url: '/users', method: 'GET' })
    userList.value = res.data
  } catch (err) {
    console.error('加载用户失败', err)
  }
}

onMounted(fetchUsers)
</script>

四、云原生部署适配

云原生应用需支持容器化部署,在项目根目录创建Dockerfile

dockerfile

FROM node:16-alpine as build
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build

# 生产环境使用Nginx部署
FROM nginx:alpine
COPY --from=build /app/dist /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

通过 Docker 打包镜像后,可快速部署至 Kubernetes 等云原生平台,实现弹性伸缩与高可用。

五、实战总结

Vue3+Vite+Pinia+Axios 技术栈完美适配云原生开发需求,Vite 保障构建与开发效率,Vue3 提供灵活的编码体验,Pinia 简化状态管理,Axios 打通数据交互链路。实际开发中,需注重工程化规范,例如统一 API 请求格式、状态管理分层、组件复用设计,同时结合 TypeScript 提升代码健壮性。通过这套技术栈,开发者可快速构建高性能、可扩展的云原生前端应用,适配各类复杂业务场景。