搜尋
首頁web前端Vue.jsvue3項目keepAlive使用方法詳解

這篇文章帶給大家vue專案keepalive使用方法詳解,keepalive是Vue的內建元件,作用是將元件快取在記憶體當中,防止重複渲染DOM,屬於消耗記憶體取得速度。希望對大家有幫助。

vue3項目keepAlive使用方法詳解

常用的用法是將元件或路由緩存,現有的用法vue2.x與vue3.x有部分差異。以下主要將keepaliev在vue3.0中的用法。

通常我們可以配置整個頁面緩存或只讓特定的某個組件保持緩存信息,配置了keepalive的路由或組件,只會在頁面初始化的時候執行created->mounted生命週期,第二次及以後再進入該頁面將不會執行改生命週期,而是會去讀取快取資訊。

1、router設定快取

1)第一步:設定App.vue
vue2.x與vue3.0的App.vue配置有差異,在App.vue配置資訊如下:
vue2.x中,router-view可整個放入keepalive中,如下:

<template>
	<!-- vue2.x配置 -->
   <keep-alive>
    <router-view></router-view>
  </keep-alive>
  <router-view></router-view></template>

vue3.0的App.vue配置方法如下:

<template>
  <!-- vue3.0配置 -->
  <router-view>
    <keep-alive>
      <component></component>
    </keep-alive>
    <component></component>
  </router-view> </template>

這裡component是vue中的特殊元件,:is是用來綁定指定元件,這裡是與路由對應的頁面綁定。

2)第二步:新增meta屬性
在對應的路由上新增meta屬性來設定頁面是否要使用快取,如下:

{
  path: "/keepAliveTest",
   name: "keepAliveTest",
   meta: {
       keepAlive: true //设置页面是否需要使用缓存
   },
   component: () => import("@/views/keepAliveTest/index.vue")
 },

到此即可實現頁面的簡單緩存,但是有些場景需要做複雜處理,比如說頁面部分資訊不需要讀取緩存,每次進入都需要進行處理,這個時候我們就可以使用activated生命週期來解決頁面部分刷新問題。

3)實作頁面部分刷新
先了解vue的生命週期,被keepAlive包裹的元件和頁面,頁面進入時執行的生命週期為:created->mounted->activated;
其中created->mounted是頁面第一次進入才會執行,activated生命週期在頁面每次進入都會執行,特屬於keepAlive的一個生命週期,所以我們把頁面每次進來要進行的操作放入該生命週期即可。
如下程式碼:

activated() {
	// 页面每次进入将手机动态验证码置为空
   this.$refs.mobPwdCode.inputValue = '';},

實作的功能是使用者每次進入將動態驗證碼設為空,實作此功能也可以用其他方式,比如說將該元件放入快取外(請參閱2、 component配置快取)。

4)動態設定路由keepAlive屬性
有些時候我們用完了keepalive快取之後,想讓頁面不再保持緩存,或是設定下一個頁面keepalive,也這個時候我們可以改變meta的keepAlive值來移除頁面緩存,使用beforeRouteEnter、beforeRouteUpdate、beforeRouteLeave,使用方式如下:

// to为即将跳转的路由,from为上一个页面路由beforeRouteLeave(to, from,+ next) {
    // 设置下一个路由的 meta
    to.meta.keepAlive = false;
    next();}

#2、元件配置快取

1)使用場景

通常我們會對vue的一個頁面進行緩存,然而有些時候我們只需要緩存頁面的某一個元件,或者在使用動態元件compnent進行元件切換時需要對元件進行快取。

2)快取頁面指定元件

當用於App.vue時,所有的路由對應的頁面為專案所對應的元件,使用方法如下:
在keep-alive元件上使用include或exclude屬性,如下:使用include
代表將快取name為testKA的元件,

// APP.vue文件,将页面作为组件缓存<router-view>
  <keep-alive>
    <component></component>
  </keep-alive></router-view>

在router對應的頁面中,需要設定name屬性,如下:

export default {
    name:'testKA',// keep-alive中include属性匹配组件name
    data() {return {}},
    activated() {
        // keepalive缓存的页面每次进入都会进行的生命周期
    },}

此外,include用法還有如下:

<!-- 逗号分隔字符串 --><keep-alive>
  <component></component></keep-alive><!-- 正则表达式 (使用 `v-bind`) --><keep-alive>
  <component></component></keep-alive><!-- 数组 (使用 `v-bind`) --><keep-alive>
  <component></component></keep-alive>

exclude用法與include用法相同,代表不被快取的元件。此外,keep-alive還有一個max屬性,代表快取元件最大數量,一旦這個數字達到了,在新實例被建立之前,已快取元件中最久沒有被存取的實例會被銷毀掉。

<keep-alive>
  <component></component></keep-alive>

當用於某個頁面進行元件切換時,用法與快取路由相同,但只是將頁面降級為一個元件,父元件由App.vue降級為對應路由頁面。

3)總結

在實戰過程中,發現keepalive快取元件時,不能跨級使用;,例如在App.vue中使用include屬性進行name= "a"符合時,只能符合快取name為a的子元件(路由頁),而不能快取name為"a"的孫子元件(子頁所引的元件)。

若想快取孫子元件,可以將整個子元件緩存,或是在子元件裡再使用keepalive。關於keepalive使用說明文檔,可到官網學習:https://v3.vuejs.org/guide/component-dynamic-async.html#dynamic-components-with-keep-alive

【相關推薦: 《vue.js教程》】

以上是vue3項目keepAlive使用方法詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:CSDN。如有侵權,請聯絡admin@php.cn刪除
vue.js vs.反應:易於使用和學習曲線vue.js vs.反應:易於使用和學習曲線May 02, 2025 am 12:13 AM

Vue.js更易用且學習曲線較平緩,適合初學者;React學習曲線較陡峭,但靈活性強,適合有經驗的開發者。 1.Vue.js通過簡單的數據綁定和漸進式設計易於上手。 2.React需要理解虛擬DOM和JSX,但提供更高的靈活性和性能優勢。

Vue.js vs. React:哪個框架適合您?Vue.js vs. React:哪個框架適合您?May 01, 2025 am 12:21 AM

Vue.js適合快速開發和小型項目,而React更適合大型和復雜的項目。 1.Vue.js簡單易學,適用於快速開發和小型項目。 2.React功能強大,適合大型和復雜的項目。 3.Vue.js的漸進式特性適合逐步引入功能。 4.React的組件化和虛擬DOM在處理複雜UI和數據密集型應用時表現出色。

VUE.JS與React:JavaScript框架的比較分析VUE.JS與React:JavaScript框架的比較分析Apr 30, 2025 am 12:10 AM

Vue.js和React各有優缺點,選擇時需綜合考慮團隊技能、項目規模和性能需求。 1)Vue.js適合快速開發和小型項目,學習曲線低,但深層嵌套對象可能導致性能問題。 2)React適用於大型和復雜應用,生態系統豐富,但頻繁更新可能導致性能瓶頸。

vue.js vs.反應:用例和應用程序vue.js vs.反應:用例和應用程序Apr 29, 2025 am 12:36 AM

Vue.js適合小型到中型項目,React適合大型項目和復雜應用場景。 1)Vue.js易於上手,適用於快速原型開發和小型應用。 2)React在處理複雜狀態管理和性能優化方面更有優勢,適合大型項目。

VUE.JS與React:比較性能和效率VUE.JS與React:比較性能和效率Apr 28, 2025 am 12:12 AM

Vue.js和React各有優勢:Vue.js適用於小型應用和快速開發,React適合大型應用和復雜狀態管理。 1.Vue.js通過響應式系統實現自動更新,適用於小型應用。 2.React使用虛擬DOM和diff算法,適合大型和復雜應用。選擇框架時需考慮項目需求和團隊技術棧。

vue.js vs.反應:社區,生態系統和支持vue.js vs.反應:社區,生態系統和支持Apr 27, 2025 am 12:24 AM

Vue.js和React各有優勢,選擇應基於項目需求和團隊技術棧。 1.Vue.js社區友好,提供豐富學習資源,生態系統包括VueRouter等官方工具,支持由官方團隊和社區提供。 2.React社區偏向企業應用,生態系統強大,支持由Facebook及其社區提供,更新頻繁。

React和Netflix:探索關係React和Netflix:探索關係Apr 26, 2025 am 12:11 AM

Netflix使用React來提升用戶體驗。 1)React的組件化特性幫助Netflix將復雜UI拆分成可管理模塊。 2)虛擬DOM優化了UI更新,提高了性能。 3)結合Redux和GraphQL,Netflix高效管理應用狀態和數據流動。

vue.js vs.後端框架:澄清區別vue.js vs.後端框架:澄清區別Apr 25, 2025 am 12:05 AM

Vue.js是前端框架,後端框架用於處理服務器端邏輯。 1)Vue.js專注於構建用戶界面,通過組件化和響應式數據綁定簡化開發。 2)後端框架如Express、Django處理HTTP請求、數據庫操作和業務邏輯,運行在服務器上。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。