Rumah  >  Artikel  >  hujung hadapan web  >  Penjelasan terperinci tentang prinsip kerja dan penggunaan keep-alive in vue

Penjelasan terperinci tentang prinsip kerja dan penggunaan keep-alive in vue

王林
王林asal
2023-07-21 11:58:532262semak imbas

Vue.js ialah rangka kerja bahagian hadapan yang popular yang menyediakan beberapa fungsi mudah untuk mengoptimumkan prestasi dan meningkatkan kecekapan pembangunan. Salah satu ciri ini ialah keep-alive, yang membantu kami mengekalkan keadaan antara komponen, dengan itu mengurangkan pemaparan dan permintaan yang tidak perlu. Artikel ini akan memperkenalkan secara terperinci cara keep-alive berfungsi dan cara menggunakannya serta memberikan beberapa contoh kod. keep-alive,它可以帮助我们在组件之间保留状态,从而减少不必要的渲染和请求。本文将详细介绍 keep-alive 的工作原理以及使用方法,并提供一些代码示例。

一、keep-alive 的工作原理

在 Vue.js 中,每当我们切换组件时,组件都会被重新创建和渲染。这意味着每次切换组件时,组件的状态都会重置,需要重新加载数据。对于一些状态较为稳定的组件,这种行为会导致不必要的性能浪费。

keep-alive 组件的作用就是将需要保留状态的组件缓存起来,而不是销毁和重新创建。这样,在切换组件时,如果组件已经被缓存,它将直接从缓存中读取状态,而不是重新加载数据和渲染。

keep-alive 的工作原理如下:

  1. 首次加载组件时,会将组件实例缓存起来,同时将组件的 vm.$el(组件实例的根 DOM 元素)从 DOM 树中移除。
  2. 当切换到其他组件后,原始组件的 vm.$el 会放入一个名为 _inactive 的数组中保存起来。
  3. 如果再次切换回原始组件,原始组件的 vm.$el 会从 _inactive 数组中取出,并重新插入到 DOM 树中。

需要注意的是,由于组件被缓存起来,所以组件的生命周期钩子函数(如 createdmounted 等)只在首次加载时触发一次,后续切换时不会再触发。

二、keep-alive 的使用方法

在 Vue.js 中,我们可以使用 7c9485ff8c3cba5ae9343ed63c2dc3f7 组件来包裹需要缓存的组件。下面是一些常见的使用方法:

  1. 缓存单个组件:
<template>
  <div>
    <keep-alive>
      <Component></Component>
    </keep-alive>
  </div>
</template>

在这个示例中,9366e37985177da7839522e36133b6c8 组件将被缓存起来。当切换到其他组件后再切换回来时,9366e37985177da7839522e36133b6c8 组件将从缓存中读取状态,而不是重新创建。

  1. 缓存多个组件:
<template>
  <div>
    <keep-alive>
      <router-view></router-view>
    </keep-alive>
  </div>
</template>

在这个示例中,所有通过路由配置加载的组件都将被缓存起来。当切换路由时,已经加载过的组件将从缓存中读取状态。

  1. 动态缓存组件:
<template>
  <div>
    <keep-alive :include="includeComponents">
      <router-view></router-view>
    </keep-alive>
  </div>
</template>

<script>
export default {
  data() {
    return {
      includeComponents: ['ComponentA', 'ComponentB']
    }
  }
}
</script>

在这个示例中,只有包含在 includeComponents 数组中的组件才会被缓存。其他组件在切换时将会被销毁并重新创建。

  1. 缓存前后状态不同的组件:
<template>
  <div>
    <keep-alive :exclude="excludeComponents">
      <router-view></router-view>
    </keep-alive>
  </div>
</template>

<script>
export default {
  data() {
    return {
      excludeComponents: ['ComponentA']
    }
  }
}
</script>

在这个示例中,将不会缓存在 excludeComponents 数组中的组件。这意味着切换到其他组件后,再切换回来时,被排除的组件将会重新创建。

三、总结

keep-alive 组件是 Vue.js 提供的一个能够帮助我们优化性能的功能。它的工作原理是将需要保留状态的组件缓存起来,并在切换时直接从缓存中加载状态,避免了不必要的重新渲染和请求。使用方法简单,可以缓存单个组件、多个组件,甚至可以动态控制缓存的组件。

通过合理使用 keep-alive 组件,我们可以提升应用的性能,减少不必要的资源消耗。希望本文对你理解 keep-alive

1. Cara keep-alive berfungsi

Dalam Vue.js, apabila kita menukar komponen, komponen akan dicipta semula dan dipaparkan. Ini bermakna setiap kali anda menukar komponen, keadaan komponen ditetapkan semula dan data perlu dimuat semula. Bagi sesetengah komponen yang agak stabil, tingkah laku ini boleh menyebabkan pembaziran prestasi yang tidak perlu. 🎜🎜Peranan komponen keep-alive adalah untuk menyimpan cache komponen yang perlu mengekalkan keadaannya dan bukannya memusnahkan dan menciptanya semula. Dengan cara ini, apabila menukar komponen, jika komponen sudah dicache, ia akan membaca keadaan terus daripada cache dan bukannya memuatkan semula data dan rendering. 🎜🎜keep-alive berfungsi seperti berikut: 🎜
  1. Apabila komponen dimuatkan buat kali pertama, tika komponen akan dicache dan vm.$el komponen (elemen akar DOM bagi contoh komponen) dialih keluar daripada pepohon DOM.
  2. Apabila bertukar kepada komponen lain, vm.$el komponen asal akan dimasukkan ke dalam tatasusunan bernama _inactive dan disimpan.
  3. Jika anda bertukar kembali kepada komponen asal sekali lagi, vm.$el komponen asal akan dikeluarkan daripada tatasusunan _inactive dan dimasukkan semula ke dalam pokok DOM.
🎜Perlu diambil perhatian bahawa memandangkan komponen dicache, fungsi cangkuk kitaran hayat komponen (seperti dibuat, mounted, dsb.) hanya dalam Ia dicetuskan sekali apabila memuatkan buat kali pertama dan tidak akan dicetuskan lagi semasa suis berikutnya. 🎜

2. Cara menggunakan keep-alive

🎜Dalam Vue.js, kita boleh menggunakan komponen 7c9485ff8c3cba5ae9343ed63c2dc3f7 untuk membalut Komponen Cache yang diperlukan. Berikut ialah beberapa penggunaan biasa: 🎜
  1. Cache satu komponen:
rrreee🎜Dalam contoh ini, komponen 9366e37985177da7839522e36133b6c8 akan dicache . Apabila bertukar kepada komponen lain dan kembali semula, komponen 9366e37985177da7839522e36133b6c8 akan membaca keadaan daripada cache dan bukannya menciptanya semula. 🎜
  1. Cache berbilang komponen:
rrreee🎜Dalam contoh ini, semua komponen yang dimuatkan melalui konfigurasi penghalaan akan dicache. Apabila menukar laluan, komponen yang telah dimuatkan akan membaca keadaannya daripada cache. 🎜
  1. Komponen cache dinamik:
rrreee🎜Dalam contoh ini, hanya komponen yang terkandung dalam tatasusunan includeComponents akan dicache . Komponen lain akan dimusnahkan dan dicipta semula apabila bertukar. 🎜
  1. Komponen dengan keadaan berbeza sebelum dan selepas caching:
rrreee🎜Dalam contoh ini, komponen dalam tatasusunan excludeComponents tidak akan menjadi komponen cache. Ini bermakna bahawa selepas bertukar kepada komponen lain, dan kemudian bertukar kembali, komponen yang dikecualikan akan dicipta semula. 🎜

3. Ringkasan

🎜 Komponenkeep-alive ialah fungsi yang disediakan oleh Vue.js yang boleh membantu kami mengoptimumkan prestasi. Ia berfungsi dengan menyimpan komponen yang perlu mengekalkan keadaannya dan memuatkan keadaan terus daripada cache apabila bertukar, mengelakkan rendering semula dan permintaan yang tidak perlu. Kaedah penggunaan adalah mudah, anda boleh cache satu komponen, berbilang komponen, dan juga secara dinamik mengawal komponen cache. 🎜🎜Dengan menggunakan komponen keep-alive secara rasional, kami boleh meningkatkan prestasi aplikasi dan mengurangkan penggunaan sumber yang tidak perlu. Saya harap artikel ini akan membantu anda memahami cara keep-alive berfungsi dan cara menggunakannya. Jika anda mempunyai sebarang pertanyaan, sila tinggalkan mesej untuk berbincang. 🎜

Atas ialah kandungan terperinci Penjelasan terperinci tentang prinsip kerja dan penggunaan keep-alive in vue. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn