1. 环境准备从零搭建开发环境刚接触Web开发时环境配置往往是第一个拦路虎。我至今记得第一次安装Node.js时因为没配置环境变量导致命令行报错的尴尬。下面我会用最直白的语言带你避开这些坑。1.1 安装VSCode你的代码编辑器Visual Studio Code简称VSCode是微软推出的免费编辑器就像作家的钢笔一样重要。安装时有个小技巧建议勾选添加到PATH选项这样以后在任意文件夹右键都能直接用VSCode打开。我习惯把安装路径设为D:\DevTools\VSCode避免C盘空间被占用。安装完成后按CtrlShiftX打开扩展市场推荐先安装这几个必备插件Chinese (Simplified) Language Pack中文界面ESLint代码质量检查Prettier自动格式化代码Live Server实时预览网页效果1.2 Node.js安装与配置Node.js相当于后台开发的发动机官网提供了LTS长期支持版和Current最新版两个版本。新手建议选择LTS版就像选择手机系统的稳定版而不是开发者预览版。安装时注意这两个细节不要装在中文路径下比如D:\软件\nodejs可能出问题务必勾选Automatically install the necessary tools选项安装完成后打开终端Windows按WinR输入cmd依次输入node -v # 应该显示类似v18.16.0的版本号 npm -v # 这是Node自带的包管理器版本如果提示不是内部命令说明环境变量没自动配置。这时需要手动添加Node.js安装路径比如C:\Program Files\nodejs到系统环境变量的Path中。2. 项目初始化创建你的第一个后台项目2.1 脚手架工具的选择就像盖房子需要脚手架我们常用vue-cli或vite来快速生成项目骨架。2023年开始我更推荐vite它的启动速度比传统工具快10倍以上。安装命令很简单npm create vitelatest my-admin --template vue这条命令会创建一个名为my-admin的文件夹使用vue模板初始化项目自动生成基础目录结构2.2 目录结构解析生成的目录中这几个文件最关键src/main.js应用入口文件相当于大楼的地基src/App.vue根组件类似建筑的主体框架package.json项目配置文件记录所有依赖项我建议新手先在src/components下创建HelloWorld.vue试试水写个简单的template div{{ message }}/div /template script export default { data() { return { message: 我的第一个Vue组件 } } } /script3. 核心功能开发从登录页面开始3.1 安装UI组件库后台系统离不开美观的界面Element Plus是目前最流行的Vue3组件库。安装只需两步npm install element-plus然后在main.js中添加import ElementPlus from element-plus import element-plus/dist/index.css createApp(App).use(ElementPlus).mount(#app)3.2 实现登录功能一个标准的登录页面需要表单验证防止用户乱输入接口请求与后端通信路由跳转登录成功后跳转这里给出最简实现template el-form :modelform :rulesrules submit.preventlogin el-form-item propusername el-input v-modelform.username placeholder账号 / /el-form-item el-form-item proppassword el-input v-modelform.password typepassword placeholder密码 / /el-form-item el-button typeprimary native-typesubmit登录/el-button /el-form /template script export default { data() { return { form: { username: , password: }, rules: { username: [{ required: true, message: 请输入账号 }], password: [{ required: true, message: 请输入密码 }] } } }, methods: { async login() { try { const res await axios.post(/api/login, this.form) localStorage.setItem(token, res.data.token) this.$router.push(/dashboard) } catch (err) { this.$message.error(err.response.data.message) } } } } /script4. 数据管理Vuex与API封装4.1 状态管理方案当组件间需要共享数据时比如用户信息Vuex是官方推荐的状态管理工具。安装命令npm install vuexnext典型store结构如下// store/index.js import { createStore } from vuex export default createStore({ state: { user: null, permissions: [] }, mutations: { SET_USER(state, user) { state.user user } }, actions: { async fetchUser({ commit }) { const user await axios.get(/api/user) commit(SET_USER, user.data) } } })4.2 接口请求优化直接在每个组件里写axios请求会导致代码重复我习惯在src/utils/request.js封装统一拦截器import axios from axios const service axios.create({ baseURL: process.env.VUE_APP_BASE_API, timeout: 5000 }) // 请求拦截器 service.interceptors.request.use(config { config.headers.Authorization Bearer ${localStorage.getItem(token)} return config }) // 响应拦截器 service.interceptors.response.use( response response.data, error { if (error.response.status 401) { router.push(/login) } return Promise.reject(error) } ) export default service5. 项目优化与部署5.1 性能调优技巧开发完成后可以通过这些命令优化项目npm run build # 生成生产环境代码构建时建议配置vite的以下参数// vite.config.js export default defineConfig({ build: { chunkSizeWarningLimit: 1500, // 增大分块大小阈值 rollupOptions: { output: { manualChunks(id) { if (id.includes(node_modules)) { return vendor } } } } } })5.2 常见问题排查新手常遇到的几个问题端口冲突修改vite配置中的server.port跨域问题配置代理服务器页面空白检查publicPath是否正确代理配置示例// vite.config.js server: { proxy: { /api: { target: http://your-backend.com, changeOrigin: true, rewrite: path path.replace(/^\/api/, ) } } }6. 进阶路线建议掌握基础开发后可以逐步学习这些进阶内容权限控制基于角色的访问控制(RBAC)实现动态路由根据用户权限生成侧边栏菜单微前端使用qiankun集成多个子系统一个典型的权限控制流程后端返回用户权限列表前端过滤路由配置动态注册可用路由// 过滤异步路由 function filterAsyncRoutes(routes, roles) { return routes.filter(route { if (route.meta?.roles) { return roles.some(role route.meta.roles.includes(role)) } return true }) }第一次部署项目到服务器时我建议先用PM2来管理Node进程npm install pm2 -g pm2 start npm --name my-admin -- run start这样即使断开SSH连接服务也不会停止。记得配置nginx反向代理把80端口的请求转发到实际服务端口。