vue-pure-admin頁面引入和功能添加流程解析

vue-pure-admin?(opens new window)是一款開源完全免費且開箱即用的中后臺管理系統模版。完全采用?ECMAScript?模塊(ESM)規范來編寫和組織代碼,使用了最新的?Vue3ViteElement-PlusTypeScriptPiniaTailwindcss?等主流技術開發

以下是vue-pure-admin的目錄結構:

├── .github  # GitHub 配置文件
│   ├── ISSUE_TEMPLATE  # 問題提交參考模板
│   ├── workflows git  # 工作流
├── .husky  # 代碼提交前校驗配置文件
├── .vscode  # IDE 工具推薦配置文件
│   │   ├── extensions.json  # 一鍵安裝平臺推薦的 vscode 插件
│   │   ├── settings.json  # 設置擴展程序或 vscode 編輯器的一些屬性
│   │   ├── vue3.0.code-snippets  # vue3.0 代碼片段
│   │   └── vue3.2.code-snippets  # vue3.2 代碼片段
│   │   └── vue3.3.code-snippets  # vue3.3 代碼片段
├── build  # 構建工具
│   │   ├── cdn.ts  # 打包時采用 cdn 模式
│   │   ├── compress.ts  # 打包時啟用 gzip 壓縮或 brotli 壓縮
│   │   ├── info.ts  # 輸出打包信息(大小、用時)
│   │   ├── optimize.ts  # vite 依賴預構建配置項
│   │   ├── plugins.ts  # vite 相關插件存放處
│   │   ├── utils.ts  # 構建工具常用方法抽離
├── locales  # 國際化文件存放處
│   │   ├── en.yaml  # 英文配置
│   │   ├── zh-CN.yaml  # 中文配置
├── mock  # mock 模擬后臺數據
│   │   ├── asyncRoutes.ts  # 模擬后臺返回動態路由
│   │   ├── ...
├── node_modules  # 模塊依賴
├── public  # 靜態資源
│   │   ├── audio  # 音頻文件
│   │   ├── html  # 靜態 iframe 頁面
│   │   ├── wasm  # wasm 文件以及膠水代碼
│   │   ├── favicon.ico  # favicon
│   │   ├── logo.svg  # logo
│   │   ├── platform-config.json  # 全局配置文件(打包后修改也可生效)
├── src
│   ├── api  # 接口請求統一管理
│   ├── assets  # 字體、圖片等靜態資源
│   ├── components  # 自定義通用組件
│   │   ├── ReAnimateSelector  # [animate.css](https://animate.style/) 選擇器組件
│   │   ├── ReAuth  # 按鈕級別權限組件(根據路由meta中的auths字段進行判斷)
│   │   ├── ReBarcode  # 條形碼組件
│   │   ├── ReCol  # 封裝 element-plus 的 el-col 組件
│   │   ├── ReCountTo  # 數字動畫組件
│   │   ├── ReCropper  # 圖片裁剪組件
│   │   ├── ReCropperPreview  # 圖片裁剪預覽組件
│   │   ├── ReDialog  # 基于 element-plus 中 el-dialog 組件開發的函數式彈框
│   │   ├── ReFlicker  # 圓點、方形閃爍動畫組件
│   │   ├── ReFlop  # 時間翻牌組件
│   │   ├── ReFlowChart  # LogicFlow 流程圖組件
│   │   ├── ReIcon  # 圖標組件
│   │   ├── ReImageVerify  # 圖形驗證碼組件
│   │   ├── ReMap  # 高德地圖組件
│   │   ├── RePerms  # 按鈕級別權限組件(根據登錄接口返回的permissions字段進行判斷)
│   │   ├── RePureTableBar  # 配合 `@pureadmin/table` 實現快速便捷的表格操作 https://github.com/pure-admin/pure-admin-table */
│   │   ├── ReQrcode  # 二維碼組件
│   │   ├── ReSeamlessScroll  # 無縫滾動組件
│   │   ├── ReSegmented  # 分段控制器組件
│   │   ├── ReSelector  # 選擇器組件
│   │   ├── ReSplitPane  # 切割面板組件
│   │   ├── ReText  # 支持 Tooltip 提示的文本省略組件
│   │   ├── ReTreeLine  # 樹形連接線組件(基于element-plus)
│   │   ├── ReTypeit  # 打字機效果組件
│   │   ├── ReVxeTableBar  # 配合 vxe-table 實現快速便捷的表格操作
│   ├── config  # 獲取平臺動態全局配置
│   ├── directives  # 自定義指令
│   │   ├── auth  # 按鈕級別權限指令(根據路由meta中的auths字段進行判斷)
│   │   ├── copy  # 文本復制指令(默認雙擊復制)
│   │   ├── longpress  # 長按指令
│   │   ├── optimize  # 防抖、節流指令
│   │   ├── perms  # 按鈕級別權限指令(根據登錄接口返回的permissions字段進行判斷)
│   │   ├── ripple  # 水波紋效果指令
│   ├── layout  # 主要頁面布局
│   ├── plugins  # 處理一些庫或插件,導出更方便的 api
│   ├── router  # 路由配置
│   ├── store  # pinia 狀態管理
│   ├── style  # 全局樣式
│   │   ├── dark.scss  # 暗黑模式樣式適配文件
│   │   ├── element-plus.scss  # 全局覆蓋 element-plus 樣式文件
│   │   ├── reset.scss  # 全局重置樣式文件
│   │   ├── sidebar.scss  # layout 布局樣式文件
│   │   ├── tailwind.css  # tailwindcss 自定義樣式配置文件
│   │   ├── ...
│   ├── utils  # 全局工具方法
│   │   ├── http  # 封裝 axios 文件
│   │   ├── localforage  # 二次封裝 localforage (https://localforage.docschina.org/) 支持設置過期時間,提供完整的類型提示
│   │   ├── progress  # 封裝 nprogress
│   │   └── auth.ts  # 處理用戶信息和 token 相關
│   │   └── chinaArea.ts  # 漢字轉區域碼
│   │   └── globalPolyfills.ts  # 解決項目可能因為安裝某個依賴出現 `global is not defined` 報錯
│   │   └── message.ts  # 消息提示函數
│   │   ├── mitt.ts  # 觸發公共事件,類似 EventBus
│   │   ├── preventDefault.ts  # 阻止鍵盤F12、瀏覽器默認右鍵菜單、頁面元素選中、圖片默認可拖動的方法
│   │   ├── print.ts  # 打印函數
│   │   ├── propTypes.ts  # 二次封裝 vue 的 propTypes
│   │   ├── responsive.ts  # 全局響應式 storage 配置
│   │   ├── sso.ts  # 前端單點登錄邏輯處理
│   │   ├── tree.ts  # 樹結構相關處理函數
│   ├── views  # 存放編寫業務代碼頁面
│   ├── App.vue  # 入口頁面
│   ├── main.ts  # 入口文件
├── types  # 全局 TS 類型配置
│   │   ├── directives.d.ts  # 全局自定義指令類型聲明
│   │   ├── global-components.d.ts  # 自定義全局組件獲得 Volar 提示(自定義的全局組件需要在這里聲明下才能獲得 Volar 類型提示哦)
│   │   ├── global.d.ts  # 全局類型聲明,無需引入直接在 `.vue` 、`.ts` 、`.tsx` 文件使用即可獲得類型提示
│   │   ├── index.d.ts  # 此文件跟同級目錄的 global.d.ts 文件一樣也是全局類型聲明,只不過這里存放一些零散的全局類型,無需引入直接在 .vue 、.ts 、.tsx 文件使用即可獲得類型提示
│   │   ├── router.d.ts  # 全局路由類型聲明
│   │   ├── shims-tsx.d.ts  # 該文件是為了給 .tsx 文件提供類型支持,在編寫時能正確識別語法
│   │   └── shims-vue.d.ts  # .vue、.scss 文件不是常規的文件類型,typescript 無法識別,所以我們需要通過下圖的代碼告訴 typescript 這些文件的類型,防止類型報錯
├── .browserslistrc  # 配置目標瀏覽器的環境
├── .dockerignore  # 排除不需要上傳到 docker 服務端的文件或目錄
├── .editorconfig  # 編輯器讀取文件格式及樣式定義配置 https://editorconfig.org/
├── .env  # 全局環境變量配置(當 .env 文件與 .env.development、.env.production、.env.staging 這三個文件之一存在相同的配置 key 時,.env 優先級更低)
├── .env.development  # 開發環境變量配置
├── .env.production  # 生產環境變量配置
├── .env.staging  # 預發布環境變量配置
├── .gitattributes  # 自定義指定文件屬性
├── .gitignore  # git 提交忽略文件
├── .gitpod.yml  # gitpod 部署配置
├── .lintstagedrc  # lint-staged 配置
├── .markdownlint.json  # markdown 格式檢查配置
├── .npmrc  # npm 配置文件
├── .nvmrc  # 用于指定在使用 Node Version Manager(NVM)時要使用的特定 Node.js 版本
├── .prettierignore  # prettier 語法檢查忽略文件
├── .prettierrc.js  # prettier 插件配置
├── .stylelintignore  # stylelint 語法檢查忽略文件
├── CHANGELOG.en_US.md  # 版本更新日志(英文版)
├── CHANGELOG.md  # 版本更新日志(英文版)
├── CHANGELOG.zh_CN.md  # 版本更新日志(中文版)
├── Dockerfile  # 用來構建 docker 鏡像
├── LICENSE  # 證書
├── README.en-US.md  # README(英文版)
├── README.md  # README
├── commitlint.config.js  # git 提交前檢查配置
├── eslint.config.js  # eslint 語法檢查配置
├── index.html  # html 主入口
├── package.json  # 依賴包管理以及命令配置
├── pnpm-lock.yaml  # 依賴包版本鎖定文件
├── postcss.config.js  # postcss 插件配置
├── stylelint.config.js  # stylelint 配置
├── tailwind.config.ts  # tailwindcss 配置
├── tsconfig.json  # typescript 配置
└── vite.config.ts  # vite 配置

該項目是一個基于 Vue 3 + Vite + Pinia + Element Plus 的中后臺管理系統,整體采用模塊化和響應式設計。下面詳細分析其運行機制,包括頁面引入和功能添加流程:


1. 項目啟動與主入口

主入口文件為?main.ts,主要流程如下:

  • 創建 Vue 應用實例:createApp(App)
  • 注冊自定義指令、全局組件(如圖標、權限按鈕等)
  • 加載平臺配置:getPlatformConfig(app)
  • 初始化 Pinia 狀態管理:setupStore(app)
  • 注冊路由:app.use(router)
  • 響應式本地存儲注入:injectResponsiveStorage(app, config)
  • 注冊動畫、Element Plus、表格等插件
  • 掛載應用到 DOM:app.mount("#app")

2. 路由機制與頁面引入

路由相關核心文件:

  • index.ts:路由實例創建、路由守衛、路由重置等
  • utils.ts:動態路由、菜單生成、權限處理等

路由注冊流程

  1. 靜態路由:constantRoutes?定義基礎頁面(如登錄、404等)。

  2. 動態路由:通過接口獲取或本地緩存,調用?initRouter?方法動態注冊。

  3. 路由實例創建:createRouter,根據配置選擇 history/hash 模式。

  4. 頁面組件引入:利用 Vite 的?import.meta.glob?實現頁面自動按需加載,如:

    const modulesRoutes = import.meta.glob("/src/views/**/*.{vue,tsx}");

  5. 這樣只需在?views?下新建頁面文件,路由配置即可自動引入。

  6. 菜單渲染:菜單數據由路由結構生成,支持多級菜單、權限控制。


3. 狀態管理與響應式存儲

  • 使用?Pinia?進行全局狀態管理,模塊化拆分(如 app、user、permission、multiTags 等)。
  • 響應式本地存儲通過 responsive-storage 實現,配置項和部分狀態(如側邊欄、主題、標簽頁等)會持久化到 localStorage,頁面刷新后自動恢復。

4. 頁面布局與組件體系

  • 主布局文件:src/layout/index.vue
  • 主要區域:側邊欄(NavVertical/NavHorizontal/NavMix)、頂部導航(LayNavbar)、標簽頁(LayTag)、內容區(LayContent)、設置面板(LaySetting)等。
  • 內容區通過?<router-view>?動態渲染頁面組件,并支持?keep-alive?緩存和自定義過渡動畫。

5. 添加新頁面/功能流程

  1. 新建頁面組件
    在?views?下新建頁面文件,如?src/views/demo/MyPage.vue

  2. 配置路由
    在路由配置文件(如?src/router/modules/xxx.ts?或動態路由接口)添加新頁面路由項,指定?path、component、meta?信息。

  3. 自動引入
    頁面會被?import.meta.glob?自動掃描,無需手動 import。

  4. 菜單顯示
    配置?meta?信息(如?titleiconroles),菜單會自動渲染到側邊欄或頂部導航。

  5. 權限控制
    通過?meta.roles?或 Pinia 權限模塊控制頁面訪問權限。

  6. 功能擴展

    • 新功能建議以組件形式開發,放在?components?或對應業務模塊下。
    • 狀態管理可在?modules?新建 Pinia store。
    • 公共工具/方法可放在?utils。

6. 其他機制

  • 主題與布局切換:通過響應式存儲和 Pinia 狀態,支持多種布局和主題風格切換。
  • 標簽頁與多標簽緩存:標簽頁組件自動記錄訪問頁面,支持緩存和關閉操作。
  • 權限與多角色支持:用戶登錄后根據角色動態生成可訪問菜單和路由。

相關核心文件索引

  • 主入口:src/main.ts
  • 路由注冊與動態路由:src/router/index.ts,?utils.ts
  • 狀態管理:src/store/modules/app.ts 等
  • 響應式存儲:src/utils/responsive.ts
  • 布局與頁面容器:src/layout/index.vue
  • 菜單與標簽頁:src/layout/components/lay-tag/index.vue,?NavVertical.vue

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/919957.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/919957.shtml
英文地址,請注明出處:http://en.pswp.cn/news/919957.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vlc-android: 編譯自己的libvlc

概述 VLC 媒體播放器作為一款由志愿者開發團隊精心維護的自由、開源且跨平臺的多媒體播放器&#xff0c;能輕松駕馭絕大多數多媒體文件&#xff0c;無論是本地磁盤中的視頻、音頻&#xff0c;還是來自網絡的流媒體協議. VLC for Android 支持網絡串流&#xff0c;無論是基于 H…

并聯諧振與串聯諧振

在LC電路中&#xff0c;感抗和容抗相等時對應的頻率值稱為諧振頻率&#xff0c;在接收廣播電視信號或無線通信信號時&#xff0c;使接收電路的頻率與所選擇的發射的信號頻率相同就叫做調諧。并聯諧振LC并聯諧振電路是指將電感器和電容器并聯形成&#xff0c;如圖所示。在并聯諧…

打印機怎么連接電腦?打印機驅動?【圖文詳解】USB連接打印機?wifi連接打印機?

一、問題背景 在日常辦公與生活里&#xff0c;把電腦和打印機連接起來&#xff0c;是實現文檔、照片等打印的基礎操作。但很多人初次嘗試時&#xff0c;會因不熟悉流程而感到無從下手。 無論是辦公場景下急需打印重要文件&#xff0c;還是日常生活中想要打印照片留念&#xff0…

CVPR 2025 | 醫學影像加速進化:深度學習×多模態,精準診斷再升級

關注gongzhonghao【CVPR頂會精選】今天聊一個醫學圖像領域的前沿探索&#xff1a;結合空間感知卷積、擴散模型與視覺語言模型&#xff0c;從圖像配準到合成分割&#xff0c;再到跨模態理解&#xff0c;打造了一個更加智能、魯棒且可泛化的醫學影像工具鏈。無論是SACB-Net帶來的…

[每周一更]-(第157期):深入理解Go語言的垃圾回收機制:調優與監控

Go語言以其簡潔的語法和強大的并發能力而聞名&#xff0c;而它的垃圾回收&#xff08;GC&#xff09;機制則是支撐其高性能的關鍵組件之一。本文將深入探討Go語言的垃圾回收原理&#xff0c;并介紹如何對其進行調優與監控&#xff0c;以提升應用程序的性能。 Go語言垃圾回收機制…

Java 學習筆記(基礎篇9)

1. 綜合練習題目 1 &#xff1a;金額轉換為中文大寫格式請編寫一個 Java 程序&#xff0c;實現將數字金額轉換為中文大寫格式&#xff08;帶單位&#xff09;的功能&#xff0c;具體要求如下&#xff1a;(1) 程序接收用戶輸入的一個整數金額&#xff08;范圍&#xff1a;0-9999…

云原生俱樂部-k8s知識點歸納(5)

寫到這里&#xff0c;k8s的內容已經到一半了&#xff0c;雖然后面的內容我覺得更加玄學一點。控制器真的是個神奇的東西&#xff0c;雖然后面的CRD會帶著大家一起做一個控制器&#xff0c;但是還是覺得很奇妙。控制器大概就是k8s中的精華了&#xff0c;通過控制器去監聽k8s中ap…

C++復習2

C繼承 繼承的概念 繼承&#xff08;inheritance&#xff09;機制是面向對象程序設計使代碼可以復用的重要的手段&#xff0c;它允許程序員在保持原有類特性的基礎上進行擴展&#xff0c;增加功能&#xff0c;這樣產生新的類&#xff0c;稱為派生類。 繼承呈現了面向對象程序設計…

ZKmall模塊商城的跨境電商支付安全方案:加密與權限的雙重防護

跨境電商支付環節面臨雙重挑戰&#xff1a;一方面&#xff0c;不同國家的支付協議、貨幣結算規則差異顯著&#xff0c;需滿足多幣種、多渠道的支付需求&#xff1b;另一方面&#xff0c;跨境數據傳輸的安全性與操作權限的嚴格管控直接關系到資金安全與合規性。ZKmall 模塊商城針…

【數據結構】-5- 順序表 (下)

一、集合框架 這是 Java 集合框架&#xff08;Java Collections Framework&#xff09;的核心繼承關系樹狀圖1. 最頂層&#xff1a;Iterable&#xff08;接口&#xff09;作用&#xff1a;所有 “可迭代” 的集合&#xff08;如 List、Set、Queue&#xff09;都必須實現它&…

最大連續1的個數Ⅲ-滑動窗口

1004. 最大連續1的個數 III - 力扣&#xff08;LeetCode&#xff09; Solution 標準滑動窗口。 class Solution { public:int longestOnes(vector<int>& nums, int k) {int nnums.size();int l0,z_cnt0,ans0;for(int r0;r<n;r){z_cnt1-nums[r];while(z_cnt>k…

實驗二 Cisco IOS Site-to-Site Pre-share Key

一 實驗設備 1、 CISCO 路由器 2 臺 二 實驗拓撲圖 三 實驗配置 1、 R1 路由器上連通性配置 R1(config)#interface e0/0 R1(config-if)#ip address 192.168.1.2 255.255.255.0 R1(config-if)#no shutdown R1(config)#interface e1/0 R1(config-if)#ip address 10.1.20.1 255.25…

深入理解 Rust Axum:兩種依賴注入模式的實踐與對比(二)

前言 我想把使用 Rust 開發Websocket 服務的文章寫成一個系列&#xff0c;前面寫了一遍如何使用 Axum 搭建一個Websocket 服務的文章&#xff0c;我們可以和前端demo頁面進行全雙工的 Websocket 消息傳輸&#xff0c;而且可以啟用 HTTP2 的同時啟用 TLS。 這時候問題來了&…

syn與quote的使用——結構體轉create語句

前言 syn和quote的簡單使用——生成結構體-CSDN博客https://blog.csdn.net/qq_63401240/article/details/150609865?spm1001.2014.3001.5501 前面使用syn和quote&#xff0c;發現挺好玩的&#xff0c;感覺可以干很多事情&#xff0c;不愧是Rust中的宏。 宏分為聲明宏和過程…

集中式負載均衡 vs. 分布式負載均衡

集中式負載均衡 vs. 分布式負載均衡負載均衡&#xff08;Load Balancing&#xff09;是任何可伸縮系統的“交通警察”。 集中式負載均衡&#xff08;Centralized LB&#xff09;與分布式負載均衡&#xff08;Distributed LB&#xff09;代表了兩種截然不同的“指揮哲學”&#…

【機器學習】9 Generalized linear models and the exponential family

本章目錄 9 Generalized linear models and the exponential family 281 9.1 Introduction 281 9.2 The exponential family 281 9.2.1 Definition 282 9.2.2 Examples 282 9.2.3 Log partition function 284 9.2.4 MLE for the exponential family 286 9.2.5 Bayes for the e…

EndNote 2025 Mac 文獻管理工具

原文地址&#xff1a;EndNote 2025 Mac 文獻管理工具 EndNote mac版一款文獻管理工具&#xff0c;支持國際期刊的參考文獻格式有3776種&#xff0c;寫作模板幾百種&#xff0c;涵蓋各個領域的雜志。 EndNote mac不僅僅局限于投稿論文的寫作&#xff0c;對于研究生畢業論文的寫…

openEuler系統中home文件夾下huawei、HwHiAiUser、lost+found 文件夾的區別和作用

在 openEuler 系統的 /home 目錄下出現的 huawei、HwHiAiUser 和 lost+found 文件夾,分別對應不同的功能和用途,具體區別和作用如下: 1. lost+found 文件夾 通用 Linux 系統文件夾:lost+found 是所有 Linux 系統(包括 openEuler)中默認存在的文件夾,并非 openEuler 特有…

Electron 核心 API 全解析:從基礎到實戰場景

Electron 憑借豐富的 API 體系&#xff0c;讓前端開發者能輕松調用系統級能力。本文將系統梳理 Electron 核心 API 的分類、使用場景及實戰示例&#xff0c;幫你快速掌握從窗口管理到進程通信的全場景開發。 一、主進程核心 API&#xff08;Main Process&#xff09; 主進程是…

創建線程的方式有哪些?

1. 創建線程的方式有哪些?繼承Thread類實現runnable接口實現Callable接口線程池創建線程(項目中使用方式)2. runnable 和 callable 有什么區別?Runnable接口run方法沒有返回值Callable接口call方法有返回值,需要FutureTask獲取結果Callable接口的call()方法允許拋出異常;而Ru…