当前位置: 首页 > news >正文

Vue3 + Vite项目实战:从零搭建企业级前端架构

前言

Vue3已经正式发布,成为前端开发的主流框架。结合Vite构建工具,开发体验大幅提升。本文从零搭建一个企业级Vue3项目,包含路由、状态管理、API封装、权限控制等核心模块。

一、环境准备

# Node.js >= 16
node -v# 创建项目
npm create vite@latest my-vue3-app -- --template vuecd my-vue3-app
npm install
npm run dev

二、项目目录结构

src/
├── api/           # API接口
├── assets/        # 静态资源
├── components/    # 公共组件
├── composables/    # 组合式函数
├── layouts/       # 布局组件
├── router/        # 路由配置
├── stores/        # Pinia状态管理
├── utils/         # 工具函数
├── views/         # 页面组件
├── App.vue
└── main.js

三、安装必要依赖

npm install vue-router@4 pinia axios element-plus
npm install -D unplugin-auto-import unplugin-vue-components

四、配置路由

// router/index.js
import { createRouter, createWebHistory } from 'vue-router'const routes = [{path: '/',component: () => import('@/layouts/MainLayout.vue'),children: [{ path: '', name: 'Home', component: () => import('@/views/Home.vue') },{ path: '/about', name: 'About', component: () => import('@/views/About.vue') },]},{path: '/login',name: 'Login',component: () => import('@/views/Login.vue')}
]const router = createRouter({history: createWebHistory(),routes
})export default router

五、状态管理(Pinia)

// stores/user.js
import { defineStore } from 'pinia'
import { ref, computed } from 'vue'export const useUserStore = defineStore('user', () => {const token = ref(localStorage.getItem('token') || '')const userInfo = ref(null)const isLoggedIn = computed(() => !!token.value)function login(credentials) {// 登录逻辑token.value = 'mock-token'localStorage.setItem('token', token.value)}function logout() {token.value = ''userInfo.value = nulllocalStorage.removeItem('token')}return { token, userInfo, isLoggedIn, login, logout }
})

六、API封装

// utils/request.js
import axios from 'axios'const service = axios.create({baseURL: import.meta.env.VITE_API_BASE_URL,timeout: 10000
})// 请求拦截器
service.interceptors.request.use(config => {const token = localStorage.getItem('token')if (token) config.headers.Authorization = `Bearer ${token}`return config},error => Promise.reject(error)
)// 响应拦截器
service.interceptors.response.use(response => response.data,error => {if (error.response?.status === 401) {// token过期,跳转登录}return Promise.reject(error)}
)export default service

七、Setup语法糖使用

<script setup>
import { ref, computed, onMounted } from 'vue'
import { useUserStore } from '@/stores/user'const userStore = useUserStore()
const count = ref(0)
const doubled = computed(() => count.value * 2)function increment() {count.value++
}onMounted(() => {console.log('组件挂载完成')
})
</script><template><div><p>Count: {{ count }}, Doubled: {{ doubled }}</p><button @click="increment">增加</button></div>
</template>

八、常用组件示例

<!-- TableList.vue -->
<script setup>
defineProps({data: { type: Array, default: () => [] },loading: { type: Boolean, default: false }
})
defineEmits(['row-click', 'delete'])
</script><template><el-table :data="data" v-loading="loading" @row-click="$emit('row-click', $event)"><slot /></el-table>
</template>

九、性能优化技巧

  • 路由懒加载:使用`() => import()`按需加载
  • 组件懒加载:`defineAsyncComponent`
  • KeepAlive:缓存组件状态
  • 虚拟列表:大数据列表使用vue-virtual-scroller

总结

Vue3 + Vite的组合是现代前端开发的标配。掌握路由、状态管理、API封装等核心技能,就能快速搭建企业级应用。

本文由AI辅助创作。

http://www.jsqmd.com/news/554774/

相关文章:

  • 终极CVAT计算机视觉标注工具完整指南:从零到精通的实战教程
  • 技术深度解析:IOPaint PowerPaint V2条件注意力修复架构揭秘
  • 一键备份QQ空间青春记忆:GetQzonehistory 完全指南
  • 有关数组的学习
  • 2026年高性价比风筒布厂家排名,山东、河北实力定制厂家揭秘 - 工业品网
  • 终极离线绘图解决方案:draw.io桌面版专业指南与高效实践
  • 从零开始:打造你的本地语音转文字系统,让隐私与效率兼得
  • 2026年和利时电机靠谱吗,揭秘其核心产品优势 - 工业设备
  • HsMod:炉石传说体验增强插件技术解析与应用指南
  • nli-distilroberta-base企业实操:用句子推理能力提升FAQ匹配准确率35%
  • 2026年风筒布企业性价比排行,口碑不错的优质厂家有哪些 - 工业品牌热点
  • 15分钟极速配置:OpCore-Simplify黑苹果自动化工具终极指南
  • League-Toolkit:提升英雄联盟游戏体验的本地化工具集解决方案
  • 浦语灵笔2.5-7B可部署:支持私有云/本地服务器/边缘GPU一体部署
  • 大模型遇“知识盲区“?RAG让它秒变“开卷考试“学霸!
  • 2026年南京和利时电机推荐,耐温性能、价格区间、能耗情况知多少 - myqiye
  • 终极指南:如何用AI-Scientist-v2实现全自动化科学发现
  • RK3588 Android12上,如何像侦探一样揪出DMABUF内存泄漏的‘元凶’?
  • HunyuanVideo-Foley生成音效的版权与伦理问题探讨
  • 从‘单点失效’到‘环形守护’:深入拆解EtherCAT冗余环网如何为你的机器‘上保险’
  • PaddlePaddle多卡训练报错?别急着重装,先试试这个NCCL环境变量
  • OpenClaw多模态探索:nanobot接入图片识别技能
  • 图文匹配太麻烦?立知多模态重排序模型帮你一键搞定,省时省力
  • LFM2.5-1.2B-Thinking-GGUF助力Java开发:SpringBoot项目智能代码补全实践
  • Phi-3-Mini-128K高并发服务架构设计:负载均衡与自动扩缩容策略
  • Qwen3-ASR语音识别快速入门:从部署到API调用全流程
  • 终极指南:深度解析Trae Agent架构设计与实战应用
  • 国家中小学智慧教育平台电子课本下载工具:如何3分钟获取所有教材PDF
  • UMAP降维技术:拓扑数据分析驱动的高效可视化方案
  • 深入解析Stm32F103R6的SPI与I2S双模式应用