Sparround

go_router və deep link

Navigator 1.0 imperativdir: "bu ekranı aç", "geri qayıt". Web URL-ləri, deep link və mürəkkəb yönləndirmə (redirect) lazım olanda bu model çətinləşir — çünki tətbiqin vəziyyəti ilə URL arasında əlaqə əl ilə saxlanılır.

Declarative routing (Navigator 2.0 ideyası) bunu tərsinə çevirir: URL həqiqətin mənbəyidir, ekran stack-i ondan hesablanır. Praktikada bunun ən çox istifadə olunan realizasiyası `go_router` paketidir, çünki Navigator 2.0-ın xam API-si çox mürəkkəbdir.

go_router-ın üç əsas faydası:

  • Route iyerarxiyası — uşaq route-lar təyin olunur və deep link gələndə arxadakı ekranlar avtomatik qurulur, yəni geri düyməsi məntiqli işləyir
  • `redirect` — mərkəzi yönləndirmə: istifadəçi giriş etməyibsə, qorunan route-dan login-ə yönləndirmək bir yerdə yazılır, hər ekranda yox
  • Tipli parametrlərpath: '/order/:id'state.pathParameters['id']; kod generasiyası ilə tam tip təhlükəsizliyi də mümkündür

Interview ipucu. "Navigator 1.0 və 2.0 fərqi nədir?" sualına "biri köhnə, biri yenidir" demə. Fərq imperativ vs deklarativ-dir: birincidə sən əmr verirsən, ikincidə vəziyyəti (URL-i) təsvir edirsən və stack ondan hesablanır. Praktik cavabı da əlavə et: xam Navigator 2.0 API-si mürəkkəb olduğu üçün real layihələrdə go_router istifadə olunur.

📚 Mənbələr və sənədlər