Berbagi teknologi

Mari kita bahas tentang peran pencegat rute di vue secara detail

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Di Vue, pencegat rute terutama digunakan untuk mencegat dan memproses sebelum bernavigasi ke rute tertentu atau ketika meninggalkan rute tertentu. Mekanisme ini memungkinkan pengembang untuk melakukan logika tertentu sebelum atau sesudah navigasi rute terjadi, seperti verifikasi izin, pemuatan data, lompatan halaman, dll.

Di Vue Router, pencegat rute dapat diimplementasikan dengan cara berikut:

  1. Global Sebelum Penjaga:

    • router.beforeEach(to, from, next): Daftarkan pra-penjaga global. Saat navigasi rute dipicu, penjaga akan dipanggil sebelum rute berubah.
    • Tujuan: Cocok untuk verifikasi izin global, kontrol bilah kemajuan pemuatan halaman, dll.
      1. router.beforeEach((to, from, next) => {
      2. // 检查用户权限
      3. if (!userAuthenticated) {
      4. next('/login'); // 未认证跳转到登录页
      5. } else {
      6. next(); // 已认证则放行
      7. }
      8. });

2. Penjaga Tekad Global:

  • router.beforeResolve(to, from, next): Daftarkan penjaga penguraian global, yang dipanggil setelah penjaga depan global dan sebelum navigasi dikonfirmasi.
    1. router.beforeResolve((to, from, next) => {
    2. // 在导航被确认之前,进行数据加载等操作
    3. fetchData().then(() => {
    4. next();
    5. });
    6. });

3. Penjaga Per-Rute:

  • Tambahkan langsung ke objek konfigurasi peruteanbeforeEnterBidang untuk menambahkan logika penjaga ke satu rute.
  1. const route = {
  2. path: '/profile',
  3. component: Profile,
  4. beforeEnter: (to, from, next) => {
  5. // 检查用户是否有权限访问该路由
  6. if (userHasAccess) {
  7. next();
  8. } else {
  9. next('/403'); // 没有权限跳转到403页面
  10. }
  11. }
  12. };

 

4. Penjaga Dalam Komponen:

  • Digunakan di dalam komponenbeforeRouteEnterbeforeRouteUpdate, DanbeforeRouteLeaveFungsi hook, fungsi ini akan dipanggil saat rute bernavigasi ke komponen saat ini, saat komponen saat ini digunakan kembali, dan saat meninggalkan komponen saat ini.
  1. export default {
  2. beforeRouteEnter (to, from, next) {
  3. // 在路由导航进入该组件前执行逻辑
  4. next(vm => {
  5. // 可以访问实例 `vm`
  6. });
  7. },
  8. beforeRouteUpdate (to, from, next) {
  9. // 在当前路由改变,但是该组件被复用时调用
  10. // 可以访问组件实例 `this`
  11. // 通常用于更新组件的数据
  12. next();
  13. },
  14. beforeRouteLeave (to, from, next) {
  15. // 在导航离开该组件的对应路由时调用
  16. // 可以访问组件实例 `this`
  17. next();
  18. }
  19. }

Mekanisme pencegat rute ini dapat membantu pengembang mengontrol proses navigasi aplikasi pada berbagai tingkat dan skenario, dan mengimplementasikan fungsi seperti kontrol izin, pramuat data, dan lompatan halaman, sehingga mengelola dan mengoptimalkan pengalaman interaktif aplikasi front-end dengan lebih baik.