Vue2+Vue3前端開發_Day5

參考課程:

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

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

@ZZHow(ZZHow1024)

自定義指令

  • 基本語法(全局 & 局部注冊)

    • 介紹:自己定義的指令,可以封裝一些 DOM 操作,擴展額外功能。
    • 全局注冊 - 語法
    Vue.directive('指令名', {"inserted" (el) {// 可以對 el 標簽,擴展額外功能el.focus();}
    });
    
    • 局部注冊 - 語法
    directives: {"指令名": {inserted() {// 可以對 el 標簽,擴展額外功能el.focus();}}
    }
    
  • 指令的值

    • 語法:在綁定指令時,可以通過**“等號”**的形式為指令綁定具體的參數值。
    <div v-color="color">我是內容</div>
    
    • 通過 binding.value 可以拿到指令值,指令值修改會觸發 update 函數。
    directives: {color: {inserted (el, binding) {el.style.color = binding.value;},update(el, binding) {el.style.color = binding.value;}}
    }
    
  • v-loading 指令封裝

    • 場景:實際開發過程中,發送請求需要時間,在請求的數據未回來時,頁面會處于空白狀態,用戶體驗不好。
    • 需求:封裝一個 v-loading 指令,實現加載中的效果。
    • 思路:
      1. 本質 loading 效果就是一個蒙層,蓋在了盒子上。
      2. 數據請求中,開啟 loading 狀態,添加蒙層。
      3. 數據請求完畢,關閉 loading 狀態,移除蒙層。
    • 實現:
      1. 準備一個 loading 類,通過偽元素定位,設置寬高,實現蒙層。
      2. 開啟關閉 loading 狀態(添加移除蒙層),本質只需要添加移除類即可。
      3. 結合自定義指令的語法進行封裝復用。
    • inserted 鉤子中,binding.value 判斷指令的值,設置默認狀態。
    • update 鉤子中,binding.value 判斷指令的值,更新類名狀態。

插槽

  • 默認插槽

    • 作用:讓組件內部的一些結構支持自定義

    • 需求:要在頁面中顯示一個對話框,封裝成一個組件。

    • 問題:組件的內容部分,不希望寫死,希望能使用的時候自定義。

    • 基本語法:

      • 組件內需要定制的結構部分,改用 <slot>…</slot> 占位。
      <div class="dialog-content"><slot></slot>
      </div>
      
      • 使用組件時,<MyDialog>…</MyDialog> 標簽內部,傳入結構替換 slot
      <MyDialog>你確認要退出本系統么?
      </MyDialog>
      
  • 后備內容(默認值)

    • 介紹:封裝組件時,可以為預留的 <slot>…</slot> 插槽提供后備內容(默認內容)。
    • 語法:在 <slot>…</slot> 標簽內,放置內容,作為默認顯示內容。
    • 效果:
      • 外部使用組件時,不傳東西,則 <slot>…</slot> 會顯示后備內容。
      • 外部使用組件時,傳東西了,則 <slot>…</slot> 整體會被換掉。
  • 具名插槽

    • 定義:一個組件內有多處結構,需要外部傳入標簽,進行定制。
    • 語法:
      • 多個 <slot>…</slot> 使用 name 屬性區分名字。
      • template 配合 v-slot:名字 來分發對應標簽。
      • v-slot:插槽名 可以簡化成 #插槽名
  • 插槽分類:

    • 默認插槽:組件內定制一處結構。
    • 具名插槽:組件內定制多處結構。
  • 作用域插槽

    • 區分:是插槽的一個傳參語法,不屬于插槽的一類。
    • 介紹:定義 <slot>…</slot> 插槽的同時,是可以傳值的。給插槽上可以 綁定數據,將來 使用組件時可以用。
    • 步驟:
      1. <slot>…</slot> 標簽,以 添加屬性的方式傳值。
      2. 所有添加的屬性,都會被收集到一個對象中。
      3. 在 template 中,通過 #插槽名="obj",默認插槽名為 default。

綜合案例:商品列表

  • 需求:
    • my-tag 標簽組件封裝
      1. 雙擊顯示輸入框,輸入框獲取焦點。
      2. 失去焦點,隱藏輸入框。
      3. 回顯標簽信息。
      4. 內容修改,回車-修改標簽信息。
    • my-table 表格組件封裝
      1. 動態傳遞表格數據渲染。
      2. 表頭支持用戶自定義。
      3. 主體支持用戶自定義。
  • 技術點:
    1. props 父傳子、$emit 子傳父 和 v-model
    2. $nextTick 自定義指令。
    3. 插槽:具名插槽、作用域插槽。
  • 案例演示:product-list

路由入門

  • 單頁應用程序

    • SPA - Single Page Application

    • 單頁面應用(SPA):所有功能在一個 HTML 頁面上實現。

    • 典型案例:網易云音樂

    • 單頁應用程序對比多頁應用程序

      開發分類實現方式頁面性能開發效率用戶體驗學習成本首屏加載速度SEO
      單頁一個 HTML 頁面按需更新
      性能非常好
      多頁多個 HTML 頁面整頁更新
      性能中等一般中等
      • 單頁應用程序常用類型:系統類、內部網站、文檔類網站 和 移動端站點
      • 多頁應用程序常用類型:公司官網 和 電商類網站
  • 路由概念

    • 網絡中的路由器:設備和 IP 的映射關系。
    • Vue 中的路由:路徑組件映射關系。
  • VueRouter 的基本使用

    • 目標:認識插件 VueRouter,掌握 VueRouter 的基本使用步驟。

    • 作用:修改地址欄路徑時,切換顯示匹配的組件。

    • 說明:Vue 官方的一個路由插件,是一個第三方包。

    • 官網:

      Vue Router

    • 版本對應(233,344):

      • Vue2 → VueRouter3.x - Vuex3.x
      • Vue3 → VueRouter4.x - Vuex4.x
    • 使用步驟:

      • 5 個基礎步驟(固定)

        1. 下載:下載 VueRouter 模塊到當前工程,版本3.x。
        npm install vue-router@3
        
        1. 引入。
        import VueRouter from'vue-pouter';
        
        1. 安裝注冊。
        Vue.use(VueRouter);
        
        1. 創建路由對象。
        const router = new VueRouter();
        
        1. 注入,將路由對象注入到 new Vue 實例中,建立關聯。
        new Vue({render: h => h(App),router
        }).$mount('#app')
        
      • 2 個核心步驟(根據項目需要配置)

        1. 創建需要的組件(views 目錄),配置路由規則。

          如:Find.vue、My.vue 和 Friend.vue。

        import Find from './views/Find.vue'
        import My from './views/My.vue'
        import Friend from './views/Friend.vue'const router = new VueRouter({routes: [{ path: '/find', component: Find },{ path: '/my', component: My },{ path: '/friend', component: Friend },]
        })
        
        1. 配置導航,配置路由出口(路徑匹配的組件顯示的位置)。
        <div class="footer_wrap"><a href="#/find">發現音樂</a><a href="#/my">我的音樂</a><a href="#/friend">朋友</a>
        </div>
        <div class="top"><router-view></router-view>
        </div>
        
  • 組件目錄存放問題

    • 注意:.vue 文件放在哪里,文件本身并沒有區別。
    • 分類的目的:便于維護。
    • 組件分類:
      • 頁面組件
        • 使用場景:頁面展示 - 配合路由使用。
        • 路徑:src/views
      • 復用組件
        • 使用場景:展示數據 - 常用于復用。
        • 路徑:src/components

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

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

相關文章

機器學習--決策樹2

目錄 第一代裁判&#xff1a;ID3 與信息增益的 “偏愛” 第二代裁判&#xff1a;C4.5 用 “增益率” 找平衡 第三代裁判&#xff1a;CART 的 “基尼指數” 新思路 遇到連續值&#xff1f;先 “砍幾刀” 再說 給決策樹 “減肥”&#xff1a;剪枝的學問 動手試試&#xff1…

yggjs_react使用教程 v0.1.1

yggjs_react是一個用于快速創建React項目的工具&#xff0c;它集成了Vite、TypeScript、Zustand和React Router等現代前端技術棧&#xff0c;幫助開發者快速搭建高質量的React應用。 快速入門 快速入門部分將指導您如何安裝yggjs_react工具、創建新項目并啟動開發服務器。 安…

vulhub可用的docker源

這一塊不太容易找&#xff0c;我試了好幾個源&#xff0c;下面是20250820測試可用源 編輯方法sudo mkdir -p /etc/docker sudo vim /etc/docker/daemon.json 配置內容 [1] {"registry-mirrors" : ["https://docker.registry.cyou", "https://docker-…

基于YOLOv8-SEAttention與LLMs融合的農作物害蟲智能診斷與防控決策系統

1. 引言 1.1 研究背景與意義 農作物蟲害是制約農業產量與質量的重要因素。據FAO報告&#xff0c;全球每年因病蟲害造成的糧食損失高達 20%–40%。傳統人工巡查與經驗診斷具有時效性差、成本高與專業人才不足等缺陷。近年來&#xff0c;計算機視覺特別是目標檢測技術在農業檢測…

從零開始構建GraphRAG紅樓夢知識圖譜問答項目(三)

文章結尾有CSDN官方提供的學長的聯系方式&#xff01;&#xff01; 歡迎關注B站從零開始構建一個基于GraphRAG的紅樓夢項目 第三集01 搭建后端服務 創建一個python文件server.py 完整源碼放到文章最后了。 1.1 graphrag 相關導入 # GraphRAG 相關導入 from graphrag.query.cont…

S32K328(Arm Cortex-M7)適配CmBacktrace錯誤追蹤

CmBacktrace 相當于重寫了hard_fault函數&#xff0c;在hard_fault函數里面去分析SCB寄存器的信息和堆棧信息&#xff0c;然后把這些信息打印出來(或者寫到flash)&#xff1b;通過使用串口輸出產生hard_fault的堆棧信息&#xff0c;然后利用addr2line工具反推出具體的代碼執行函…

AI研究引擎的簡單技術實現步驟

產品愿景與核心功能 1.1 產品使命 “洞見 Weaver”是一個全棧AI Web應用,旨在將用戶的復雜研究問題,通過AI驅動的動態思維導圖和結構化報告,轉化為一次沉浸式的、可追溯的視覺探索之旅。我們的使命是,將AI復雜的推理過程透明化,將人類的探索直覺與AI的分析能力無縫結合,…

open webui源碼分析5-Tools

本文從最簡單的時間工具入手&#xff0c;分析Tools相關的代碼。一、安裝工具git clone https://github.com/open-webui/openapi-servers cd openapi-servers# 進入時間工具目錄 cd servers/timepip install -r requirements.txt# 啟動服務 uvicorn main:app --host 0.0.0.0 --r…

windows下通過vscode遠程調試linux c/cpp程序配置

windows下通過vscode遠程調試linux c/cpp程序配置vscode插件配置linux依賴工具安裝launch.json配置vscode插件配置 CodeLLDB插件需要提前下載&#xff1a; linux依賴工具安裝 sudo apt update sudo apt install cmake clangdlaunch.json配置 {"version": "0…

IDEA報JDK版本問題

解決思路&#xff1a;1.找到配置jdk的IDEA配置位置settings和project structure2.先配置setting3.再修改項目結構

VirtualBox 安裝 Ubuntu Server 系統及 Ubuntu 初始配置

文章目錄簡介VirtualBoxUbuntu Server 簡介Ubuntu Server 下載安裝 Ubuntu Server首選項配置導入系統鏡像配置系統用戶配置內存 CPU 虛擬硬盤開始安裝 Ubuntu安裝完成登錄系統配置網絡Ubuntu 系統配置安裝常用工具安裝 SSH設置 root 密碼配置 IP 地址&#xff08;推薦自動分配I…

Milvus 可觀測性最佳實踐

Milvus 介紹 Milvus 是一個開源的向量數據庫&#xff0c;專為處理大規模、高維度向量數據而設計&#xff0c;廣泛應用于人工智能、推薦系統、圖像檢索、自然語言處理等場景。它支持億級向量的高效存儲與快速檢索&#xff0c;內置多種相似度搜索算法&#xff08;如 HNSW、IVF、…

arcgis-空間矯正工具(將下發數據A的信息放置原始數據B的原始信息并放置到成果數據C中,主要按下發數據A的范圍)

正常來說&#xff0c;可以直接相交獲取&#xff0c;但是會存在原始數據B將下發數據A進行分割&#xff0c;所以相交功能會導致最終成果會產生稀碎圖斑及圖斑切割&#xff0c;因此&#xff0c;經學習了解&#xff0c;學會此方法進行既保留原始數據B的信息&#xff0c;又按下發數據…

MySQL深分頁慢問題及性能優化

在數據驅動的應用中&#xff0c;分頁是不可或缺的功能。然而&#xff0c;當數據量達到百萬甚至千萬級別時&#xff0c;傳統基于 LIMIT OFFSET 的分頁方式會遭遇嚴重的性能瓶頸&#xff0c;即“深分頁”問題。本文將剖析其根源并提供主流的優化策略。問題根源&#xff1a;LIMIT …

漫談《數字圖像處理》之平滑

在數字圖像處理中&#xff0c;平滑&#xff08;Smoothing&#xff09; 的核心目標是降低圖像噪聲、模糊細節或簡化紋理&#xff0c;本質是通過 “局部鄰域運算” 對像素值進行 “平均化” 或 “規整化”&#xff0c;讓圖像整體更 “平緩”。形態學平滑與高斯平滑、均值平滑等其…

機器學習之數據預處理學習總結

在機器學習中&#xff0c;數據預處理是模型訓練前至關重要的環節&#xff0c;直接影響模型的性能和準確性。通過本次學習&#xff0c;我系統掌握了數據預處理的核心方法與工具&#xff0c;現將主要內容總結如下&#xff1a;一、缺失值處理缺失值是實際數據中常見的問題&#xf…

在完全沒有無線網絡(Wi-Fi)和移動網絡(蜂窩數據)的環境下,使用安卓平板,通過USB數據線(而不是Wi-Fi)來控制電腦(版本2)

在完全沒有無線網絡&#xff08;Wi-Fi&#xff09;和移動網絡&#xff08;蜂窩數據&#xff09;的環境下&#xff0c;要實現用安卓手機通過USB數據線控制電腦&#xff0c;核心思路是&#xff1a;利用USB數據線創建一個純粹的、本地的有線網絡連接。 這不僅是可行的&#xff0c;…

Ubuntu22.04配置網絡上網

前言 安裝Ubuntu系統后&#xff0c;有時會遇到無法聯網、無法使用瀏覽器的問題。然而當宿主機已連接網絡時&#xff0c;虛擬機通常也能聯網&#xff0c;需要進行一些配置&#xff0c;現在就以Ubuntu22.04為例。 VMware配置打開虛擬網絡編輯器 啟動VMWare點擊編輯&#xff0c;并…

網絡協議之TCP和UDP

寫在前面 本文來看下TCP和UDP協議。 我們接觸這兩個協議最多的應該就是在面試中了&#xff0c;經典題目就是“TCP和UDP有什么區別&#xff1f;”&#xff0c;而最常得到的答案就是TCP是面向連接的&#xff0c;而UDP是面向無連接的。 那么這里的連接到底是什么呢&#xff1f;難…

Qt音樂播放器項目實踐:本地持久化與邊角問題處理

本音樂播放器完整項目源碼(包含各個按鈕的圖片文件): ly/Project-Code - Gitee.com 一.本地持久化 請注意&#xff0c;學習此部分之前需要讀者具有一定的Mysql基礎。如果讀者能夠接受無法本地持久化&#xff0c;那么可以跳過這部分內容&#xff0c;直接去看邊角問題處理。我…