模板 vue-next-admin:布局、權(quán)限、國(guó)際化都在哪改)
3 步跑通 Vue3 TypeScript 后臺(tái)模板 vue-next-admin布局、權(quán)限、國(guó)際化都在哪改【免費(fèi)下載鏈接】vue-next-admin基于vue3.x 、Typescript、vite、Element plus等適配手機(jī)、平板、pc 的后臺(tái)開(kāi)源免費(fèi)模板庫(kù)vue2.x請(qǐng)切換vue-prev-admin分支項(xiàng)目地址: https://gitcode.com/GitHub_Trending/vu/vue-next-admin每次給新項(xiàng)目搭后臺(tái)第一件事就是挑模板布局要能切、按鈕權(quán)限要能控、國(guó)際化要留好口子挑半天還不一定靠譜。vue-next-admin 是一個(gè)基于 Vue3 TypeScript 的后臺(tái)模板Vite 構(gòu)建、Element Plus 組件庫(kù)把上面這些能力都內(nèi)置好了——下面按先跑通、再定位、后上線的順序帶你把它過(guò)一遍。一、項(xiàng)目速覽一張表看清技術(shù)棧這節(jié)解決判斷這個(gè)模板能不能接住你的項(xiàng)目看版本號(hào)就夠了。當(dāng)前倉(cāng)庫(kù)版本2.4.33MIT 協(xié)議核心依賴版本如下技術(shù)版本在模板里的角色Vue^3.2.47主體框架Composition APITypeScript^5.0.4全量 TS含 src/types/ 全局聲明Vite^4.2.1開(kāi)發(fā)服務(wù)器與構(gòu)建Element Plus^2.3.3組件庫(kù)Pinia^2.0.34狀態(tài)管理主題、用戶、路由表vue-router^4.1.6路由前端/后端雙模式vue-i18n^9.2.2國(guó)際化zh-cn / en / zh-tw 三語(yǔ)言ECharts^5.4.2圖表運(yùn)行環(huán)境要求寫(xiě)在 package.json 的engines里Node 16.0.0npm 7.0.0。二、上手驗(yàn)證3 步跑通這節(jié)解決確認(rèn)本地環(huán)境沒(méi)問(wèn)題且知道每一步該看到什么。第 1 步克隆代碼git clone https://gitcode.com/GitHub_Trending/vu/vue-next-admin你會(huì)看到本地生成vue-next-admin目錄含src/、public/和.env系列配置文件。第 2 步安裝依賴cd vue-next-admin npm install你會(huì)看到node_modules/生成完成無(wú) peer dependency 報(bào)錯(cuò)Element Plus 與 Vue 版本是匹配的。第 3 步啟動(dòng)開(kāi)發(fā)服務(wù)器npm run dev你會(huì)看到Vite 啟動(dòng)后按.env中VITE_PORT指定的端口監(jiān)聽(tīng)瀏覽器自動(dòng)打開(kāi)登錄頁(yè)VITE_OPEN控制是否自動(dòng)開(kāi)頁(yè)面帶水印、左側(cè)菜單、頂欄標(biāo)簽頁(yè)。驗(yàn)證構(gòu)建可用npm run build產(chǎn)物輸出到dist/另有npm run lint-fix做 ESLint 自動(dòng)修復(fù)。三、模塊導(dǎo)航目錄 → 職責(zé)這節(jié)解決以后改任何功能30 秒內(nèi)知道去哪個(gè)目錄找。目錄職責(zé)src/api/接口請(qǐng)求封裝登錄、菜單src/components/公共組件表格、圖片裁剪、富文本編輯器、圖標(biāo)選擇器、公告欄src/directive/自定義指令含權(quán)限指令src/i18n/多語(yǔ)言文案lang/全局 pages/頁(yè)面級(jí)src/layout/布局骨架側(cè)欄、頂欄、標(biāo)簽頁(yè)、面包屑、鎖屏src/router/前端/后端兩套路由注冊(cè)邏輯src/stores/Pinia 狀態(tài)主題配置、用戶信息、路由表、tagsViewsrc/theme/全局 SCSS 主題含暗黑模式、響應(yīng)式斷點(diǎn)src/utils/工具函數(shù)請(qǐng)求封裝、本地存儲(chǔ)、時(shí)間處理、水印src/views/全部頁(yè)面登錄、系統(tǒng)管理、功能示例頁(yè)四、場(chǎng)景化能力拆解每個(gè)能力改哪個(gè)文件這節(jié)解決接手項(xiàng)目后最高頻的 5 類改動(dòng)各自的入口在哪。布局切換在哪改場(chǎng)景產(chǎn)品要求把經(jīng)典布局換成橫向?qū)Ш交虬逊謾诓藛胃某伤椒较颉?默認(rèn)值統(tǒng)一在 src/stores/themeConfig.tsprimary主色、isCollapse折疊、isTagsview標(biāo)簽頁(yè)、tagsStyle標(biāo)簽頁(yè)風(fēng)格、columnsAsideLayout分欄方向等都在這里四種布局骨架分別對(duì)應(yīng) src/layout/main/ 下的classic.vue、columns.vue、transverse.vue、defaults.vue。 注意用戶側(cè)配置會(huì)存進(jìn)localStorage并覆蓋默認(rèn)值改完默認(rèn)值后需清理瀏覽器存儲(chǔ)或點(diǎn)布局抽屜底部的一鍵恢復(fù)默認(rèn)才能看到效果。前端/后端路由怎么切場(chǎng)景菜單和頁(yè)面權(quán)限由后端接口下發(fā)而不是寫(xiě)死在前端。 前端路由入口是 src/router/frontEnd.ts后端路由入口是 src/router/backEnd.ts核心函數(shù)initBackEndControlRoutes的流程是檢查token→ 拉取用戶信息 → 請(qǐng)求菜單接口src/api/menu/index.ts→ 把接口數(shù)據(jù)注冊(cè)成動(dòng)態(tài)路由并寫(xiě)入 Pinia 路由表。兩種模式按需選用頁(yè)面組件用import.meta.glob統(tǒng)一收集不用逐個(gè)手寫(xiě) import。權(quán)限指令定位場(chǎng)景同一個(gè)頁(yè)面上刪除按鈕只對(duì)某些角色可見(jiàn)。 頁(yè)面級(jí)用 src/directive/authDirective.ts 提供的 3 個(gè)指令不滿足條件時(shí)直接移除 DOM 節(jié)點(diǎn)v-authxxx單個(gè)權(quán)限命中才顯示v-auths[xxx,xxx]多個(gè)權(quán)限命中其一即顯示v-auth-all[xxx,xxx]多個(gè)權(quán)限全部命中才顯示需要條件渲染而不是移除節(jié)點(diǎn)時(shí)用 src/components/auth/ 下的組件純 JS 判斷用 src/utils/authFunction.ts。權(quán)限數(shù)據(jù)來(lái)自登錄后的authBtnList。國(guó)際化加語(yǔ)言去哪加場(chǎng)景現(xiàn)有中文簡(jiǎn)體/繁體和英文要再加一門(mén)語(yǔ)言。 在 src/i18n/lang/ 下按現(xiàn)有文件zh-cn.ts、en.ts、zh-tw.ts的結(jié)構(gòu)新建語(yǔ)言文件并在 src/i18n/index.ts 注冊(cè)部分頁(yè)面有獨(dú)立文案包放在 src/i18n/pages/如登錄頁(yè)、動(dòng)態(tài)表單頁(yè)改動(dòng)時(shí)兩處都要檢查。主題定制改哪幾個(gè)文件場(chǎng)景換公司 VI 主色、適配暗黑模式、覆蓋 Element Plus 默認(rèn)樣式。 三個(gè)文件對(duì)應(yīng)三類改動(dòng)都在 src/theme/ 下app.scss全局基礎(chǔ)樣式dark.scss暗黑模式element.scssElement Plus 組件樣式覆蓋主色和暗黑開(kāi)關(guān)本身在themeConfig.tsprimary、isIsDark運(yùn)行時(shí)也能通過(guò)右上角設(shè)置抽屜切換。五、生產(chǎn)落地清單上線前逐項(xiàng)勾選這節(jié)解決build 完不是就完事這幾項(xiàng)漏一個(gè)就可能出線上問(wèn)題。npm run build產(chǎn)物落在dist/確認(rèn).env.production中VITE_PUBLIC_PATH與部署路徑一致子目錄部署時(shí)不配好會(huì) 404Gzip 壓縮vite.config.ts 已接入vite-plugin-compression確認(rèn)產(chǎn)物里有.gz文件CDN 外置.env中VITE_OPEN_CDN置true后依賴會(huì)走vite-plugin-cdn-import外部化可減小打包體積分包策略manualChunks已按node_modules里的依賴名拆分 chunk見(jiàn)vite.config.ts按需調(diào)整拆分粒度同域名部署多套后臺(tái)時(shí)檢查 src/utils/storage.ts 中緩存 key 的前綴setKey用項(xiàng)目名拼接避免兩套系統(tǒng)的localStorage數(shù)據(jù)互相覆蓋用戶側(cè)緩存的配置布局、主題上線后如有變更提醒先清瀏覽器緩存六、排錯(cuò)錦囊常見(jiàn)現(xiàn)象 → 原因 → 解法這節(jié)解決踩坑時(shí)直接對(duì)照查不用翻 issue。改了 themeConfig 默認(rèn)值頁(yè)面沒(méi)變化→ 用戶側(cè)localStorage存了舊配置覆蓋了默認(rèn)值 → 清理window.localStorage或點(diǎn)布局抽屜底部一鍵恢復(fù)默認(rèn)。頁(yè)面高度撐不滿 100%→ 外層容器沒(méi)有按彈性布局撐開(kāi) → 用 flex 讓各級(jí)容器依次flex: 1保證可視區(qū)高度傳遞到內(nèi)容區(qū)。后端路由刷新后菜單丟失→ 動(dòng)態(tài)路由依賴 token 和菜單接口重新注冊(cè)刷新時(shí)該鏈路斷了 → 檢查 src/router/backEnd.ts 中initBackEndControlRoutes的 token 判斷與菜單接口返回是否為空。tagsView 刷新按鈕對(duì)帶動(dòng)態(tài)參數(shù)的路由失效→ 刷新時(shí)路由參數(shù)丟失 → 參考 src/utils/other.ts 中對(duì)路由參數(shù)與 tagsView 的處理邏輯做對(duì)齊。同域部署兩套 admin登錄態(tài)/主題互相串→localStorage的 key 前綴相同 → 修改 src/utils/storage.ts 中setKey的前綴讓兩套系統(tǒng)命名空間隔離。寫(xiě)在最后一個(gè)模板的價(jià)值不在于截圖好看而在于布局、路由、權(quán)限、國(guó)際化、主題這 5 處你能 10 秒內(nèi)定位到文件——vue-next-admin 做到了這一點(diǎn)。跑通后有任何問(wèn)題歡迎點(diǎn)贊支持也期待你在 issues 和 PR 里參與共建?!久赓M(fèi)下載鏈接】vue-next-admin基于vue3.x 、Typescript、vite、Element plus等適配手機(jī)、平板、pc 的后臺(tái)開(kāi)源免費(fèi)模板庫(kù)vue2.x請(qǐng)切換vue-prev-admin分支項(xiàng)目地址: https://gitcode.com/GitHub_Trending/vu/vue-next-admin創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考