3 步跑通 Vue3 + TypeScript 后台模板 vue-next-admin:布局、权限、国际化都在哪改
【免费下载链接】vue-next-admin🎉🎉🔥基于vue3.x 、Typescript、vite、Element plus等,适配手机、平板、pc 的后台开源免费模板库(vue2.x请切换vue-prev-admin分支)项目地址: https://gitcode.com/GitHub_Trending/vu/vue-next-admin
每次给新项目搭后台,第一件事就是挑模板:布局要能切、按钮权限要能控、国际化要留好口子,挑半天还不一定靠谱。vue-next-admin 是一个基于 Vue3 + TypeScript 的后台模板(Vite 构建、Element Plus 组件库),把上面这些能力都内置好了——下面按"先跑通、再定位、后上线"的顺序,带你把它过一遍。
一、项目速览:一张表看清技术栈
这节解决:判断这个模板能不能接住你的项目,看版本号就够了。
当前仓库版本2.4.33(MIT 协议),核心依赖版本如下:
| 技术 | 版本 | 在模板里的角色 |
|---|---|---|
| Vue | ^3.2.47 | 主体框架,Composition API |
| TypeScript | ^5.0.4 | 全量 TS,含 src/types/ 全局声明 |
| Vite | ^4.2.1 | 开发服务器与构建 |
| Element Plus | ^2.3.3 | 组件库 |
| Pinia | ^2.0.34 | 状态管理(主题、用户、路由表) |
| vue-router | ^4.1.6 | 路由(前端/后端双模式) |
| vue-i18n | ^9.2.2 | 国际化(zh-cn / en / zh-tw 三语言) |
| ECharts | ^5.4.2 | 图表 |
运行环境要求写在 package.json 的engines里:Node >=16.0.0,npm >=7.0.0。
二、上手验证:3 步跑通
这节解决:确认本地环境没问题,且知道每一步该看到什么。
第 1 步,克隆代码:
git clone https://gitcode.com/GitHub_Trending/vu/vue-next-admin你会看到:本地生成vue-next-admin目录,含src/、public/和.env系列配置文件。
第 2 步,安装依赖:
cd vue-next-admin npm install你会看到:node_modules/生成完成,无 peer dependency 报错(Element Plus 与 Vue 版本是匹配的)。
第 3 步,启动开发服务器:
npm run dev你会看到:Vite 启动后按.env中VITE_PORT指定的端口监听,浏览器自动打开登录页(VITE_OPEN控制是否自动开),页面带水印、左侧菜单、顶栏标签页。
验证构建可用npm run build,产物输出到dist/;另有npm run lint-fix做 ESLint 自动修复。
三、模块导航:目录 → 职责
这节解决:以后改任何功能,30 秒内知道去哪个目录找。
| 目录 | 职责 |
|---|---|
| src/api/ | 接口请求封装(登录、菜单) |
| src/components/ | 公共组件:表格、图片裁剪、富文本编辑器、图标选择器、公告栏 |
| src/directive/ | 自定义指令,含权限指令 |
| src/i18n/ | 多语言文案(lang/全局 +pages/页面级) |
| src/layout/ | 布局骨架:侧栏、顶栏、标签页、面包屑、锁屏 |
| src/router/ | 前端/后端两套路由注册逻辑 |
| src/stores/ | Pinia 状态:主题配置、用户信息、路由表、tagsView |
| src/theme/ | 全局 SCSS 主题(含暗黑模式、响应式断点) |
| src/utils/ | 工具函数:请求封装、本地存储、时间处理、水印 |
| src/views/ | 全部页面(登录、系统管理、功能示例页) |
四、场景化能力拆解:每个能力改哪个文件
这节解决:接手项目后最高频的 5 类改动,各自的入口在哪。
布局切换在哪改
场景:产品要求把经典布局换成横向导航,或把分栏菜单改成水平方向。 默认值统一在 src/stores/themeConfig.ts:primary主色、isCollapse折叠、isTagsview标签页、tagsStyle标签页风格、columnsAsideLayout分栏方向等都在这里;四种布局骨架分别对应 src/layout/main/ 下的classic.vue、columns.vue、transverse.vue、defaults.vue。 注意:用户侧配置会存进localStorage并覆盖默认值,改完默认值后需清理浏览器存储,或点布局抽屉底部的"一键恢复默认"才能看到效果。
前端/后端路由怎么切
场景:菜单和页面权限由后端接口下发,而不是写死在前端。 前端路由入口是 src/router/frontEnd.ts;后端路由入口是 src/router/backEnd.ts,核心函数initBackEndControlRoutes的流程是:检查token→ 拉取用户信息 → 请求菜单接口(src/api/menu/index.ts)→ 把接口数据注册成动态路由并写入 Pinia 路由表。两种模式按需选用,页面组件用import.meta.glob统一收集,不用逐个手写 import。
权限指令定位
场景:同一个页面上,"删除"按钮只对某些角色可见。 页面级用 src/directive/authDirective.ts 提供的 3 个指令,不满足条件时直接移除 DOM 节点:
v-auth="xxx":单个权限,命中才显示v-auths="[xxx,xxx]":多个权限,命中其一即显示v-auth-all="[xxx,xxx]":多个权限,全部命中才显示
需要条件渲染而不是移除节点时,用 src/components/auth/ 下的组件;纯 JS 判断用 src/utils/authFunction.ts。权限数据来自登录后的authBtnList。
国际化加语言去哪加
场景:现有中文(简体/繁体)和英文,要再加一门语言。 在 src/i18n/lang/ 下按现有文件(zh-cn.ts、en.ts、zh-tw.ts)的结构新建语言文件,并在 src/i18n/index.ts 注册;部分页面有独立文案包,放在 src/i18n/pages/(如登录页、动态表单页),改动时两处都要检查。
主题定制改哪几个文件
场景:换公司 VI 主色、适配暗黑模式、覆盖 Element Plus 默认样式。 三个文件对应三类改动,都在 src/theme/ 下:
app.scss:全局基础样式dark.scss:暗黑模式element.scss:Element Plus 组件样式覆盖
主色和暗黑开关本身在themeConfig.ts(primary、isIsDark),运行时也能通过右上角设置抽屉切换。
五、生产落地清单:上线前逐项勾选
这节解决:build 完不是就完事,这几项漏一个就可能出线上问题。
npm run build产物落在dist/;确认.env.production中VITE_PUBLIC_PATH与部署路径一致(子目录部署时不配好会 404)- Gzip 压缩:vite.config.ts 已接入
vite-plugin-compression,确认产物里有.gz文件 - CDN 外置:
.env中VITE_OPEN_CDN置true后,依赖会走vite-plugin-cdn-import外部化,可减小打包体积 - 分包策略:
manualChunks已按node_modules里的依赖名拆分 chunk(见vite.config.ts),按需调整拆分粒度 - 同域名部署多套后台时:检查 src/utils/storage.ts 中缓存 key 的前缀(
setKey用项目名拼接),避免两套系统的localStorage数据互相覆盖 - 用户侧缓存的配置(布局、主题)上线后如有变更,提醒先清浏览器缓存
六、排错锦囊:常见现象 → 原因 → 解法
这节解决:踩坑时直接对照查,不用翻 issue。
- 改了 themeConfig 默认值,页面没变化→ 用户侧
localStorage存了旧配置,覆盖了默认值 → 清理window.localStorage,或点布局抽屉底部"一键恢复默认"。 - 页面高度撑不满 100%→ 外层容器没有按弹性布局撑开 → 用 flex 让各级容器依次
flex: 1,保证可视区高度传递到内容区。 - 后端路由刷新后菜单丢失→ 动态路由依赖 token 和菜单接口重新注册,刷新时该链路断了 → 检查 src/router/backEnd.ts 中
initBackEndControlRoutes的 token 判断与菜单接口返回是否为空。 - tagsView 刷新按钮对带动态参数的路由失效→ 刷新时路由参数丢失 → 参考 src/utils/other.ts 中对路由参数与 tagsView 的处理逻辑做对齐。
- 同域部署两套 admin,登录态/主题互相串→
localStorage的 key 前缀相同 → 修改 src/utils/storage.ts 中setKey的前缀,让两套系统命名空间隔离。
写在最后
一个模板的价值不在于截图好看,而在于"布局、路由、权限、国际化、主题"这 5 处你能 10 秒内定位到文件——vue-next-admin 做到了这一点。跑通后有任何问题,欢迎点赞支持,也期待你在 issues 和 PR 里参与共建。
【免费下载链接】vue-next-admin🎉🎉🔥基于vue3.x 、Typescript、vite、Element plus等,适配手机、平板、pc 的后台开源免费模板库(vue2.x请切换vue-prev-admin分支)项目地址: https://gitcode.com/GitHub_Trending/vu/vue-next-admin
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考