Vue2+Vue3前端開發_Day12-Day14_大事件管理系統

參考課程:

黑馬程序員 Vue2+Vue3基礎入門到實戰項目】

[https://www.bilibili.com/video/BV1HV4y1a7n4]

@ZZHow(ZZHow1024)

項目收獲

  • Vue3 composition API
  • Pinia / Pinia 持久化處理
  • Element Plus(表單校驗,表格處理,組件封裝)
  • pnpm 包管理升級
  • Eslint + prettier 更規范的配置
  • husky(Git hooks 工具)代碼提交之前,進行校驗
  • 請求模塊設計
  • VueRouter4 路由設計

創建項目

  • pnpm 包管理器

    • 官網:

    pnpm - 速度快、節省磁盤空間的軟件包管理器 | pnpm中文文檔 | pnpm中文網

    • 優勢:比同類工具快 2 倍左右、節省磁盤空間等。

    • 安裝 pnpm:npm install -g pnpm

    • 創建項目:pnpm create vue

    • npm、yarn 和 pnpm 命令對比:

      npmyarnpnpm
      npm installyarnpnpm install
      npm install axiosyarn add axiospnpm add axios
      npm install axios -Dyarn add axios-Dpnpm add axios -D
      npm uninstall axiosyarn remove axiospnpm remove axios
      npm run devyarn devpnpm dev
  • 使用 pnpm 創建項目

    1. pnpm create vue
    2. 選擇 Add Vue Router for Single Page Application development、Add Pinia for state management、Add ESLint for code quality 和 Add Prettier for code formatting。
    3. 進入項目目錄,安裝依賴,啟動項目。
  • Eslint 配置代碼風格

    • 配置文件:.eslintrc.cjs

      rules: {'prettier/prettier': ['warn',{singleQuote: true, // 單引號semi: false, // 無分號printWidth: 80, // 每行寬度至多80字符trailingComma: 'none', // 不加對象|數組最后逗號endOfLine: 'auto' // 換行符號不限制(win mac 不一致)}],'vue/multi-word-component-names': ['warn',{ignores: ['index'] // vue組件名稱多單詞組成(忽略index.vue)}],'vue/no-setup-props-destructure': ['off'], // 關閉 props 解構的校驗// 💡 添加未定義變量錯誤提示,create-vue@3.6.3 關閉,這里加上是為了支持下一個章節演示。'no-undef': 'error'
      }
      
      • Prettier 風格配置

        • 官網:

        Prettier · Opinionated Code Formatter

        1. 單引號
        2. 不使用分號
        3. 每行寬度至多 80 字符
        4. 不加對象,數組最后逗號
        5. 換行符號不限制(Windows 和 macOS 不一致)
      • Vue 組件名稱多單詞組成(忽略 index.vue)

      • props 解構(關閉)

  • 配置代碼檢查工作流

    • 提交前做代碼檢查
      1. 初始化 Git 倉庫,執行 git init

      2. 初始化 Husky 工具配置。

        • 執行 pnpm dlx husky-init && pnpm install
        • 官網:

        Husky

      3. 修改 .husky/pre-commit 文件。

        • npm test 改為 pnpm lint
      • 問題:默認進行的是全量檢查,有耗時問題和歷史問題
    • 暫存區 ESLint 校驗
      1. 安裝 lint-staged 包,執行 pnpm ilint-staged -D

      2. package.json 配置 lint-staged 命令。

        {// ... 省略 ..."lint-staged": {"*.{js,ts,vue}": ["eslint --fix"]}
        }{"scripts": {// ... 省略 ..."lint-staged": "lint-staged"}
        }
        
      3. 修改 .husky/pre-commit 文件。

        • pnpm lint 改為 pnpm lint-staged
  • 目錄調整

    • 默認生成的目錄結構不滿足我們的開發需求,需要做一些自定義改動。
    • 步驟:
      1. 刪除一些初始化的默認文件。
      2. 修改剩余代碼內容。
      3. 新增調整我們需要的目錄結構。
      4. 拷貝全局樣式和圖片,安裝預處理器支持。

前置知識

  • Vue Router 4

    • 路由初始化
      1. 創建路由實例由 createRouter 實現。
      2. 路由模式:
        1. history 模式使用 createWebHistory()
        2. hash 模式使用 createWebHashHistory()
        3. 參數是基礎路徑,默認 /,import.meta.env.BASE_URL 是 Vite 的環境變量。
  • Vite 環境變量

    • 官方文檔:

    環境變量和模式

  • Element Plus 組件庫

    • 按需引入 Element Plus
      1. 安裝:pnpm add element-plus

      2. 配置按需導入。

        • 官方文檔:

        快速開始 | Element Plus

      3. 直接使用組件。

    • 彩蛋:默認 components 下的文件也會被自動注冊。
  • Pinia 構建倉庫和持久化

    • 狀態管理 - Pinia
      • 用戶倉庫 - User
      • 持久化 - pinia-plugin-persistedstate
    • 統一管理
      • Pinia 獨立維護
      • 倉庫統一導出
  • 請求工具設計

    • Axios 配置
      • 創建 Axios 實例:基準地址,超時時間。
      • 請求攔截器:攜帶 Token。
      • 響應攔截器:業務失敗處理,摘取核心響應數據,401 處理。
  • 整體路由設計

    • 登錄 - 一級路由
    • 架子 - 一級路由
      • 文章分類 - 二級路由
      • 文章管理 - 二級路由
      • 基本資料 - 二級路由
      • 更換頭像 - 二級路由
      • 重置密碼 - 二級路由

項目開發

  • 登錄注冊

    • 需求:
      1. 注冊登錄 靜態結構&基本切換
      2. 注冊功能(校驗 + 注冊)
      3. 登錄功能(校驗 + 登錄 + 存 Token)
    • 普通校驗:
      1. el-form → :model="nuleForm",綁定的整個 form 的數據對象{ xxx, xxx, xxx }。
      2. el-form → :rules="rules",綁定的整個 rules 規則對象 { xxx, xxx, xxx }。
      3. 表單元素 → v-model="ruleForm.xxx",給表單元素,綁定 form 的子屬性。
      4. el-form-item → prop 配置生效的是哪個校驗規則(和 rules 中的字段要對應)。
    • 自定義校驗(校驗函數):
      • validator: (rule, value, callback) => {}
        1. rule:當前校驗規則相關的信息。
        2. value:所校驗的表單元素目前的表單值。
        3. callback:無論成功還是失敗,都需要 callback 回調。
      • callback():校驗成功。
      • callback (new Error (錯誤信息)) 校驗失敗。
    • 預校驗
      • await form.value.validate() ,能等到說明校驗通過。
    • ESLint 全局變量名
      • 打開文件 .eslintrc.cjs

        globals: {ElMessage: 'readonly',ElMessageBox: 'readonly',ElLoading: 'readonly'
        }
        
  • 首頁

    • layout 架子
      • 需求:
        • 基本架子拆解(菜單組件的使用)。
        • 登錄訪問攔截。
        • 用戶基本信息獲取&渲染。
        • 退出功能 [element-plus 確認框]。
      • el-menu 整個菜單組件:
        • :default-active="$route.path":配置默認高亮的菜單項。
        • router 選項開啟,el-menu-ithm 的 index 就是點擊跳轉的路徑。
      • el-menu-item 菜單項:
        • index="/article/channel":配置的是訪問的跳轉路徑。
      • Vue Router 4:
        • 根據返回值決定,是放行還是攔截。
        • 返回值:
          • undefined / true:直接放行。
          • false:攔回 from 的地址頁面。
          • 具體路徑 或 路徑對象:攔截到對應的地址。
    • 文章分類頁面 - [element-plus 表格]
      • 需求:
        • 基本架子 - PageContainer 封裝。
        • 文章分類渲染 & loading 處理。
        • 文章分類添加編輯[element-plus 彈層]。
        • 文章分類刪除。
    • 文章管理頁面 - [element-plus 進階]
      • 需求:
        • 文章列表渲染(帶搜索 & 帶分頁)。
        • 添加文章(糖屜 & 文件上傳 & 富文本)。
        • 編輯文章(共用抽屜)。
        • 刪除文章。
  • 中文國際化處理

    • 使用 <el-config-providen :locale="zh-cn"> 將需要配置的組件包裹起來
    • 導入中文包:import zhCn from 'element-plus/dist/locale/zh-cn.mjs'
  • 富文本編輯器 [Vue-Quill]

    • 官網:

      VueQuill

    • 使用步驟:

      1. 安裝:pnpm add @vueup/vue-quill@latest

      2. 注冊成局部組件

        import { QuillEditor } from '@vueup/vue-quill'
        import '@vueup/vue-quill/dist/vue-quill.snow.css'
        
      3. 頁面中使用綁定

        <div class="editor"><quill-editortheme="snow"v-model:content="formModel.content"contentType="html"></quill-editor>
        </div>
        
      4. 樣式美化

        .editor {width: 100%;:deep(.ql-editor) {min-height: 200px;}
        }
        
  • 個人中心

    • 基本資料。
    • 更換頭像。
    • 重置密碼。

項目演示

  • 在線演示:https://fe-bigevent-web.itheima.net/login
  • 接口文檔:https://apifox.com/apidoc/shared-26c67aee-0233-4d23-aab7-08448fdf95ff/api-93850835
  • 基地址:http://big-event-vue-api-t.itheima.net

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

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

相關文章

[ACTF新生賽2020]明文攻擊

BUUCTF在線評測BUUCTF 是一個 CTF 競賽和訓練平臺&#xff0c;為各位 CTF 選手提供真實賽題在線復現等服務。https://buuoj.cn/challenges#[ACTF%E6%96%B0%E7%94%9F%E8%B5%9B2020]%E6%98%8E%E6%96%87%E6%94%BB%E5%87%BB下載查看&#xff0c;一個壓縮包和一張圖片。壓縮包需要密…

關于日本服務器的三種線路講解

租用日本服務器時&#xff0c;哪種線路選擇更適合?當初次接觸跨境業務的站長們著手租用日本服務器時&#xff0c;會發現不同服務商提供的網絡線路五花八門&#xff0c;從陌生的運營商名稱到復雜的技術參數&#xff0c;常常使其感到眼花繚亂。為了幫助大家理清思路&#xff0c;…

【大白話解析】 OpenZeppelin 的 MerkleProof 庫:Solidity 默克爾證明驗證工具全指南??(附源代碼)

?? 一、Merkle Tree 是什么?為什么要驗證它? 想象你有一個名單,比如: ["Alice", "Bob", "Charlie", "Dave"] 你想讓別人驗證:“我(比如 Alice)是不是在這個名單里?”,但不想把整個名單都放在區塊鏈上(太貴!)。 于是你…

機械學習綜合練習項目

數據集合完整項目文件已經上傳一、項目介紹案例介紹 案例是針對“紅酒.csv”數據集&#xff0c;在紅葡萄酒質量分析的場景 中&#xff0c;利用多元線性回歸來探索紅葡萄酒的不同化學成分如何共同 影響其質量評分。在建立線性回歸模型之后&#xff0c;當給出了紅葡萄酒 的新的一…

第3篇:配置管理的藝術 - 讓框架更靈活

前言 在前一章中&#xff0c;我們設計了強大的注解API。本章將深入探討配置管理系統的設計&#xff0c;學習如何將注解中的聲明式配置轉換為運行時可用的配置對象。 配置管理的核心挑戰 在我們的框架中&#xff0c;配置來源有三個層級&#xff1a;主要挑戰&#xff1a; &#x…

發版混亂怎么規范

你是否經歷過這種場景&#xff1a;臨到發版&#xff0c;一堆功能代碼擠在一起&#xff0c;測試分不清范圍&#xff0c;修復一個Bug可能引發三個新Bug&#xff1f;發布過程像一場豪賭&#xff1f;問題的核心往往在于分支策略和流程的混亂。今天&#xff0c;我們就來建立一套在絕…

【golang長途旅行第30站】channel管道------解決線程競爭的好手

channel 為什么需要channel 使用全局變量加鎖同步來解決goroutine的競爭&#xff0c;可以但不完美難以精確控制等待時間?&#xff08;主線程無法準確知道所有 goroutine 何時完成&#xff09;。全局變量容易引發競態條件?&#xff08;即使加鎖&#xff0c;代碼復雜度也會增加…

蘋果XR芯片介紹

蘋果的 XR 芯片技術主要體現在 A 系列、M 系列處理器以及專為空間計算設計的 R1 協處理器中。以下從技術架構、產品迭代和綜合對比三個維度展開分析&#xff1a;一、技術架構解析1. A 系列芯片&#xff08;以 A12 Bionic 為例&#xff09;制程工藝&#xff1a;7nm&#xff08;臺…

達夢數據庫巡檢常用SQL(三)

達夢數據庫巡檢常用SQL(三) 數據庫SQL運行檢查 數據庫SQL運行檢查 死鎖的事務情況: SELECT TO_CHAR(HAPPEN_TIME,YYYY-MM-DD HH24:MI:SS) HAPPEN_TIME,SQL_TEXT FROM V$DEADLOCK_HISTORY WHERE HAPPEN_TIME >DATEADD(DAY,-30,

基于SpringBoot的校園周邊美食探索及分享平臺

1. 項目簡介 項目名稱&#xff1a;校園周邊美食探索及分享平臺 項目背景&#xff1a;針對校園師生對周邊美食信息的需求&#xff0c;構建一個集美食推薦、鑒賞、評論互動及社交功能于一體的平臺&#xff0c;幫助用戶發現優質美食資源并進行分享交流。 主要目標&#xff1a; 提供…

Go數據結構與算法-常見的排序算法

雖然看過別人寫了很多遍&#xff0c;而且自己也寫過很多遍&#xff08;指的是筆記&#xff09;&#xff0c;但是還是要寫的就是排序算法。畢竟是初學Go語言&#xff0c;雖然之前寫過&#xff0c;但是還是打算再寫一遍。主要包括插入排序、選擇排序、冒泡排序、快速排序、堆排序…

第 6 篇:目標規則與負載均衡 - `DestinationRule` 詳解

系列文章:《Istio 服務網格詳解》 第 6 篇:目標規則與負載均衡 - DestinationRule 詳解 本篇焦點: 深入理解 DestinationRule 的核心作用:定義流量在到達目的地之后的行為。 詳細剖析其三大核心功能:服務子集 (Subsets), 流量策略 (Traffic Policy), TLS 設置。 動手實戰…

一個簡潔的 C++ 日志模塊實現

一個簡潔的 C 日志模塊實現 1. 引言 日志功能在軟件開發中扮演著至關重要的角色&#xff0c;它幫助開發者追蹤程序執行過程、診斷問題以及監控系統運行狀態。本文介紹一個使用 C 實現的輕量級日志模塊&#xff0c;該模塊支持多日志級別、線程安全&#xff0c;并提供了簡潔易用…

C語言---數據類型

文章目錄數據類型分類1. 基本類型 (Basic Types)a. 整數類型 (Integer Types)char (字符型)int (整型)short (短整型)long (長整型)long long (C99標準引入)圖片匯總b. 浮點類型 (Floating-Point Types)float (單精度浮點型)double (雙精度浮點型)long double (長雙精度浮點型)…

本搭建烏云漏洞庫

1.下載鏡像站文件&#xff0c;并拖入虛擬機 2.將bugs.rar解壓至網站根目錄下 /var/www/html 3.配置bugs/conn.php 4.在bugs下創建upload目錄&#xff0c;將10-14、15-a、15-b、16壓縮包文件解壓到該upload目錄 5.把wooyun.rar解壓到 /mysql/data/wooyun目錄下 6.配置hosts文件后…

Vmware虛擬機 處理器配置選項配置介紹

1. 處理器配置選項好&#x1f44c;&#xff0c;我來幫你逐一解讀 VMware 里 虛擬機處理器 這些選項的含義。 你截的圖里&#xff0c;主要有三塊內容&#xff1a; 處理器數量 每個處理器的內核數量 ©虛擬化引擎1?? 處理器數量 這是分配給虛擬機的 邏輯 CPU 插槽數。一般…

day40-tomcat

1.每日復盤與今日內容1.1復盤keepalived高可用配置搶占式與非搶占式腦裂keepalived處理Nginx掛掉1.2今日內容部署、安裝、配置tomcat(systemctl)Tomcat主配置文件部署靜態頁部署zrlog&#x1f35f;&#x1f35f;&#x1f35f;&#x1f35f;&#x1f35f;接入負載均衡掛載到NFS2…

【RA-Eco-RA4E2-64PIN-V1.0 開發板】步進電機的串口控制

【RA-Eco-RA4E2-64PIN-V1.0 開發板】步進電機的串口控制 本文介紹了 RA-Eco-RA4E2-64PIN-V1.0 開發板通過串口指令實現 28BYJ-48 步進電機旋轉角度和速度的精確控制的項目設計。 項目介紹 硬件連接&#xff1a;28BYJ-48 步進電機、ULN2003 驅動板、Jlink 調試器、供電電源等&am…

PiscCode基于 Mediapipe 的人體多模態關鍵點檢測與可視化系統 —— HumanMultiLandmarker 深度解析

一、引言 在計算機視覺領域&#xff0c;人體關鍵點檢測&#xff08;Human Pose Estimation&#xff0c;HPE&#xff09;一直是研究和應用的熱點方向之一。隨著深度學習與實時圖像處理技術的發展&#xff0c;人體姿勢估計已經從傳統的 2D 檢測走向了 3D 空間建模&#xff0c;并…

文獻閱讀筆記【物理信息機器學習】:Physics-informed machine learning

文獻閱讀筆記&#xff1a;Physics-informed machine learningSummaryResearch ObjectiveBackground / Problem Statement問題背景研究現狀需解決的問題問題出現的原因分析問題解決思路Method(s)問題建模作者解決問題的方法/算法1. 觀測偏差&#xff08;Observational Biases&am…