Kuo „AngularJS“ skiriasi nuo $ routeProvider ir $ urlRouterProvider?


Atsakymas 1:

„$ routeProvider“ yra pavyzdinė priemonė, įgyvendinanti dabartinę „AngularJS $ route / $ routeProvider“ API, esančią „$ stateProvider“ viršuje, kad žmonėms būtų lengviau pereiti programas į „$ stateProvider“ žingsnis po žingsnio - ji paprasčiausiai įtraukia maršruto apibrėžimą į būsenos apibrėžimą pagal vardo sudarymas ir keletas kitų smulkių dalykų.

Dabartinis „AngularJS $“ maršruto teikėjas taip pat yra monolitinis, nes jis tvarko viską iš vidaus, kuris mūsų kode yra suskaidytas į kelias paslaugas:

  • $ vietos stebėjimas ir ko nors suaktyvinimas, kai ji atitinka modelį / taisyklę -> $ urlRouterProvidernurodo URL modelių ir parametrų rezervavimo sintaksės apibrėžimą -> $ urlMatcherFactoryloadspace šablonų per $ http / $ templateCaache -> $ templateFactorymanaging ir dabartinio maršruto eksponavimas -> $ stateProviderasynynchronous žiūrėjimo priklausomybes ir rezultato pateikimą rodinių direktyvai -> šiuo metu $ stateProvider, gal įsitraukite į atskirą $ peržiūros paslaugą?

Taigi „$ urlRouterProvider“ paprasčiausiai yra atsakingas už „$“ vietos stebėjimą ir, kai ji keičiasi, naudodama taisyklių sąrašą, po vieną, kol sutampa. Kaip tiksliai apibrėžta „atitikimas“ ir kas nutinka, kai taisyklė sutampa, priklauso nuo tos taisyklės; žemiausiame lygyje yra tik funkcija, kuri grąžina tikrąją reikšmę, jei ji tvarko URL. Tačiau čia yra palaikymas taisyklėms, kurios yra „RegExps“, taip pat kelio modeliams su vietos žymikliais (naudojamiems state.url), kurie yra komponuojami į taisykles per $ urlMatcherFactory. $ urlRouterProvider taip pat palaiko peradresavimus.

Šiuo metu $ urlRouterProvider jau turėtų būti greitesnis nei atitinkamas kodas sistemoje $ routeProvider, nes jis nepakartoja kiekvieno URL pakeitimo URL šablonų, o užima ant surinktų UrlMatcher objektų.


Atsakymas 2:

„$ RouteProvider“ modulio pavadinimas yra „ngRoute“, o „$ urlRouterProvider“ - „ui.router“.

„NgRoute“ rūpinasi maršrutų URL, o „ui-maršrutizatorius“ rūpinasi ne tik URL, bet ir kitomis būsenomis. „$ StateParams“ pagalba netgi galima perduoti informaciją tarp valstybių.

„NgRoute“ nuorodas rašote kaip:

Bet „ui-maršrutizatoriuje“ nuorodos paprastai rašomos taip:

Paprastam taikymui naudojame „ngRoute“, o sudėtingesniems UI pagrįstiems įrenginiams - „ui-router“.

Taigi „ui-maršrutizatorius“ teikia visas funkcijas, esančias „ngRoute“, ir daugybę papildomų funkcijų, kurios tinka didelėms programoms.