AtklÄjiet uzlabotas ielÄdes stratÄÄ£ijas ar React experimental_SuspenseList. Å is visaptveroÅ”ais ceļvedis pÄta secÄ«gus un atklÄtus izkÄrtojumus labÄkai lietotÄja pieredzei.
React experimental_SuspenseList: Suspense ielÄdes modeļa apgūŔana
React experimental_SuspenseList ir jaudÄ«gs (lai arÄ« joprojÄm eksperimentÄls) komponents, kas ļauj jums orÄ·estrÄt vairÄku Suspense komponentu attÄloÅ”anu, nodroÅ”inot smalki noregulÄtu kontroli pÄr ielÄdes stÄvokļiem un galu galÄ uzlabojot jÅ«su lietojumprogrammas uztverto veiktspÄju un lietotÄja pieredzi. Å is ceļvedis pÄta experimental_SuspenseList pamatkoncepcijas, funkcionalitÄti un praktiskos pielietojumus, ļaujot jums ieviest sarežģītus ielÄdes modeļus savÄs React lietojumprogrammÄs.
Izpratne par Suspense un tÄ ierobežojumiem
Pirms iedziļinÄties experimental_SuspenseList, ir bÅ«tiski izprast React Suspense pamatus. Suspense ļauj jums "apturÄt" komponenta renderÄÅ”anu, lÄ«dz tiek izpildÄ«ti noteikti nosacÄ«jumi, parasti datu ielÄde. JÅ«s ietverat komponentu, kas varÄtu tikt apturÄts, Suspense robežÄ, nodroÅ”inot fallback rekvizÄ«tu, kas norÄda, ko renderÄt gaidīŔanas laikÄ. PiemÄram:
import React, { Suspense } from 'react';
const ProfileDetails = React.lazy(() => import('./ProfileDetails'));
const ProfilePosts = React.lazy(() => import('./ProfilePosts'));
function ProfilePage() {
return (
<Suspense fallback={<p>IelÄdÄ profilu...</p>}>
<ProfileDetails />
<Suspense fallback={<p>IelÄdÄ ierakstus...</p>}>
<ProfilePosts />
</Suspense>
</Suspense>
);
}
Lai gan Suspense nodroÅ”ina pamata ielÄdes indikatoru, tam trÅ«kst kontroles pÄr secÄ«bu, kÄdÄ parÄdÄs ielÄdes indikatori, kas dažkÄrt var radÄ«t traucÄjoÅ”u lietotÄja pieredzi. IedomÄjieties, ka ProfileDetails un ProfilePosts komponenti ielÄdÄjas neatkarÄ«gi, un to ielÄdes indikatori mirgo dažÄdos laikos. Å eit noder experimental_SuspenseList.
IepazÄ«stinÄm ar experimental_SuspenseList
experimental_SuspenseList ļauj jums orÄ·estrÄt secÄ«bu, kÄdÄ tiek atklÄtas Suspense robežas. Tas piedÄvÄ divas galvenÄs uzvedÄ«bas, ko kontrolÄ revealOrder rekvizÄ«ts:
forwards: AtklÄjSuspenserobežas tÄdÄ secÄ«bÄ, kÄdÄ tÄs parÄdÄs komponentu kokÄ.backwards: AtklÄjSuspenserobežas apgrieztÄ secÄ«bÄ.together: AtklÄj visasSuspenserobežas vienlaicÄ«gi.
Lai izmantotu experimental_SuspenseList, jums bÅ«s nepiecieÅ”ama React versija, kas atbalsta eksperimentÄlÄs funkcijas. Ir svarÄ«gi iepazÄ«ties ar React dokumentÄciju, lai iegÅ«tu jaunÄko informÄciju par eksperimentÄlo funkciju iespÄjoÅ”anu un ar to saistÄ«tajiem brÄ«dinÄjumiem. Jums tas bÅ«s arÄ« jÄimportÄ tieÅ”i no React pakotnes:
import { unstable_SuspenseList as SuspenseList } from 'react';
PiezÄ«me: KÄ norÄda nosaukums, experimental_SuspenseList ir eksperimentÄla funkcija un var mainÄ«ties. Lietojiet to piesardzÄ«gi produkcijas vidÄs.
SecÄ«gas ielÄdes ievieÅ”ana ar `revealOrder="forwards"`
forwards atklÄÅ”anas secÄ«ba, iespÄjams, ir visbiežÄkais experimental_SuspenseList lietoÅ”anas gadÄ«jums. TÄ Ä¼auj jums parÄdÄ«t ielÄdes indikatorus paredzamÄ, secÄ«gÄ veidÄ, radot plÅ«denÄku lietotÄja pieredzi. Apsveriet Å”Ädu piemÄru:
import React, { Suspense, lazy } from 'react';
import { unstable_SuspenseList as SuspenseList } from 'react';
const ProfileHeader = lazy(() => import('./ProfileHeader'));
const ProfileDetails = lazy(() => import('./ProfileDetails'));
const ProfilePosts = lazy(() => import('./ProfilePosts'));
function ProfilePage() {
return (
<SuspenseList revealOrder="forwards">
<Suspense fallback={<p>IelÄdÄ galveni...</p>}>
<ProfileHeader />
</Suspense>
<Suspense fallback={<p>IelÄdÄ detaļas...</p>}>
<ProfileDetails />
</Suspense>
<Suspense fallback={<p>IelÄdÄ ierakstus...</p>}>
<ProfilePosts />
</Suspense>
</SuspenseList>
);
}
Å ajÄ piemÄrÄ ielÄdes indikatori parÄdÄ«sies Å”ÄdÄ secÄ«bÄ:
- "IelÄdÄ galveni..."
- "IelÄdÄ detaļas..." (parÄdÄs pÄc ProfileHeader ielÄdes)
- "IelÄdÄ ierakstus..." (parÄdÄs pÄc ProfileDetails ielÄdes)
Tas rada organizÄtÄku un mazÄk traucÄjoÅ”u ielÄdes pieredzi, salÄ«dzinot ar Suspense noklusÄjuma uzvedÄ«bu, kur ielÄdes indikatori varÄtu parÄdÄ«ties nejauÅ”i.
ApgrieztÄ secÄ«gÄ ielÄde ar `revealOrder="backwards"`
backwards atklÄÅ”anas secÄ«ba ir noderÄ«ga scenÄrijos, kur jÅ«s vÄlaties prioritizÄt elementu ielÄdi lapas apakÅ”Ä. Tas varÄtu bÅ«t vÄlams, ja vÄlaties Ätri parÄdÄ«t vissvarÄ«gÄko saturu, pat ja tas atrodas tÄlÄk lapÄ. Izmantojot to paÅ”u piemÄru, kas iepriekÅ”, mainot revealOrder uz `backwards`:
<SuspenseList revealOrder="backwards">
<Suspense fallback={<p>IelÄdÄ galveni...</p>}>
<ProfileHeader />
</Suspense>
<Suspense fallback={<p>IelÄdÄ detaļas...</p>}>
<ProfileDetails />
</Suspense>
<Suspense fallback={<p>IelÄdÄ ierakstus...</p>}>
<ProfilePosts />
</Suspense>
</SuspenseList>
Tagad ielÄdes indikatori parÄdÄ«sies Å”ÄdÄ secÄ«bÄ:
- "IelÄdÄ ierakstus..."
- "IelÄdÄ detaļas..." (parÄdÄs pÄc ProfilePosts ielÄdes)
- "IelÄdÄ galveni..." (parÄdÄs pÄc ProfileDetails ielÄdes)
Lietojumprogramma var ÄtrÄk nodroÅ”inÄt minimÄlu, funkcionÄlu pieredzi, prioritizÄjot ierakstu sadaļas ielÄdi, kas ir noderÄ«gi, ja lietotÄji parasti ritina uz leju, lai nekavÄjoties redzÄtu jaunÄkos ierakstus.
VienlaicÄ«ga ielÄde ar `revealOrder="together"`
together atklÄÅ”anas secÄ«ba vienkÄrÅ”i parÄda visus ielÄdes indikatorus vienlaicÄ«gi. Lai gan tas varÄtu Ŕķist pretrunÄ«gi, tas var bÅ«t noderÄ«gs konkrÄtos scenÄrijos. PiemÄram, ja visu komponentu ielÄdes laiks ir salÄ«dzinoÅ”i Ä«ss, visu ielÄdes indikatoru parÄdīŔana vienlaikus varÄtu sniegt vizuÄlu norÄdi, ka tiek ielÄdÄta visa lapa.
<SuspenseList revealOrder="together">
<Suspense fallback={<p>IelÄdÄ galveni...</p>}>
<ProfileHeader />
</Suspense>
<Suspense fallback={<p>IelÄdÄ detaļas...</p>}>
<ProfileDetails />
</Suspense>
<Suspense fallback={<p>IelÄdÄ ierakstus...</p>}>
<ProfilePosts />
</Suspense>
</SuspenseList>
Å ajÄ gadÄ«jumÄ visi trÄ«s ielÄdes ziÅojumi ("IelÄdÄ galveni...", "IelÄdÄ detaļas..." un "IelÄdÄ ierakstus...") parÄdÄ«sies vienlaicÄ«gi.
AtklÄÅ”anas animÄciju kontrole ar `tail`
experimental_SuspenseList nodroÅ”ina vÄl vienu rekvizÄ«tu ar nosaukumu tail, kas kontrolÄ, kÄ jau atklÄtie elementi uzvedas, kamÄr nÄkamie elementi joprojÄm tiek ielÄdÄti. Tas pieÅem divas vÄrtÄ«bas:
suspense: Jau atklÄtie elementi tiks arÄ« ietvertiSuspenserobeÅ¾Ä ar rezerves variantu (fallback). Tas tos faktiski atkal paslÄpj, lÄ«dz tiek ielÄdÄti visi saraksta elementi.collapsed: Jau atklÄtie elementi paliek redzami, kamÄr tiek ielÄdÄti nÄkamie elementi. Å Ä« ir noklusÄjuma uzvedÄ«ba, jatailrekvizÄ«ts nav norÄdÄ«ts.
Opcija tail="suspense" var bÅ«t noderÄ«ga, lai radÄ«tu vizuÄli konsekventÄku ielÄdes pieredzi, Ä«paÅ”i, ja dažÄdu komponentu ielÄdes laiki ievÄrojami atŔķiras. IedomÄjieties scenÄriju, kur ProfileHeader ielÄdÄjas Ätri, bet ProfilePosts aizÅem ilgu laiku. Bez opcijas tail="suspense" lietotÄjs varÄtu redzÄt galveni parÄdamies nekavÄjoties, kam seko ilga pauze pirms ierakstu ielÄdes. Tas var Ŕķist saraustÄ«ti.
Izmantojot tail="suspense", tiks nodroÅ”inÄts, ka galvene paliek slÄpta (vai rÄda rezerves variantu), lÄ«dz ieraksti ir ielÄdÄti, radot plÅ«denÄku pÄreju.
<SuspenseList revealOrder="forwards" tail="suspense">
<Suspense fallback={<p>IelÄdÄ galveni...</p>}>
<ProfileHeader />
</Suspense>
<Suspense fallback={<p>IelÄdÄ detaļas...</p>}>
<ProfileDetails />
</Suspense>
<Suspense fallback={<p>IelÄdÄ ierakstus...</p>}>
<ProfilePosts />
</Suspense>
</SuspenseList>
Iegultie (Nesting) SuspenseLists
experimental_SuspenseList komponentus var iegult vienu otrÄ, lai izveidotu vÄl sarežģītÄkus ielÄdes modeļus. Tas ļauj grupÄt saistÄ«tus komponentus un neatkarÄ«gi kontrolÄt to ielÄdes uzvedÄ«bu. PiemÄram, jums varÄtu bÅ«t galvenais SuspenseList, kas kontrolÄ lapas kopÄjo izkÄrtojumu, un iegulti SuspenseList komponenti katrÄ sadaļÄ, lai kontrolÄtu atseviŔķu elementu ielÄdi Å”ajÄ sadaļÄ.
import React, { Suspense, lazy } from 'react';
import { unstable_SuspenseList as SuspenseList } from 'react';
const ProfileHeader = lazy(() => import('./ProfileHeader'));
const ProfileDetails = lazy(() => import('./ProfileDetails'));
const ProfilePosts = lazy(() => import('./ProfilePosts'));
const AdBanner = lazy(() => import('./AdBanner'));
const RelatedArticles = lazy(() => import('./RelatedArticles'));
function ProfilePage() {
return (
<SuspenseList revealOrder="forwards">
<Suspense fallback={<p>IelÄdÄ galveni...</p>}>
<ProfileHeader />
</Suspense>
<div>
<SuspenseList revealOrder="forwards">
<Suspense fallback={<p>IelÄdÄ detaļas...</p>}>
<ProfileDetails />
</Suspense>
<Suspense fallback={<p>IelÄdÄ ierakstus...</p>}>
<ProfilePosts />
</Suspense>
</SuspenseList>
</div>
<Suspense fallback={<p>IelÄdÄ reklÄmu...</p>}>
<AdBanner />
</Suspense>
<Suspense fallback={<p>IelÄdÄ saistÄ«tos rakstus...</p>}>
<RelatedArticles />
</Suspense>
</SuspenseList>
);
}
Å ajÄ piemÄrÄ vispirms ielÄdÄsies ProfileHeader, kam sekos ProfileDetails un ProfilePosts, un visbeidzot AdBanner un RelatedArticles. IekÅ”Äjais SuspenseList nodroÅ”ina, ka ProfileDetails ielÄdÄjas pirms ProfilePosts. Å Äds kontroles lÄ«menis pÄr ielÄdes secÄ«bu var ievÄrojami uzlabot jÅ«su lietojumprogrammas uztverto veiktspÄju un atsaucÄ«bu.
ReÄlÄs pasaules piemÄri un starptautiskie apsvÄrumi
experimental_SuspenseList priekÅ”rocÄ«bas attiecas uz dažÄdiem lietojumprogrammu veidiem un starptautiskÄm lietotÄju bÄzÄm. Apsveriet Å”os scenÄrijus:
- E-komercijas platformas: GlobÄla e-komercijas vietne var izmantot
experimental_SuspenseList, lai prioritizÄtu produktu attÄlu un aprakstu ielÄdi pirms atsauksmÄm, nodroÅ”inot, ka lietotÄji var Ätri pÄrlÅ«kot pieejamos produktus. Izmantojot `revealOrder="forwards"`, jÅ«s varat nodroÅ”inÄt, ka galvenÄ produkta informÄcija tiek ielÄdÄta pirmÄ, kas ir bÅ«tiski lietotÄjiem visÄ pasaulÄ, pieÅemot lÄmumus par pirkumu. - ZiÅu vietnes: ZiÅu vietne, kas apkalpo lasÄ«tÄjus vairÄkÄs valstÄ«s, var izmantot
experimental_SuspenseList, lai prioritizÄtu jaunÄko ziÅu virsrakstu ielÄdi pirms mazÄk kritiskÄ satura, nodroÅ”inot, ka lietotÄji tiek nekavÄjoties informÄti par svarÄ«giem notikumiem. Var ieviest arÄ« ielÄdes secÄ«bas pielÄgoÅ”anu, pamatojoties uz reÄ£ionam specifiskÄm ziÅÄm. - SociÄlo mediju lietojumprogrammas: SociÄlo mediju platforma var izmantot
experimental_SuspenseList, lai secÄ«gi ielÄdÄtu lietotÄju profilus, sÄkot ar profila attÄlu un lietotÄjvÄrdu, kam seko lietotÄja informÄcija un jaunÄkie ieraksti. Tas uzlabo sÄkotnÄjo uztverto veiktspÄju un lietotÄju iesaisti, kas ir Ä«paÅ”i svarÄ«gi reÄ£ionos ar mainÄ«gu interneta Ätrumu. - MÄrinstrumentu paneļi un analÄ«tika: MÄrinstrumentu paneļiem, kas parÄda datus no dažÄdiem avotiem (piemÄram, Google Analytics, Salesforce, iekÅ”ÄjÄs datu bÄzes),
experimental_SuspenseListvar orÄ·estrÄt dažÄdu datu vizualizÄciju ielÄdi. Tas nodroÅ”ina plÅ«denu ielÄdes pieredzi, Ä«paÅ”i, ja daži datu avoti ir lÄnÄki par citiem. IespÄjams, vispirms parÄdiet galvenos veiktspÄjas rÄdÄ«tÄjus (KPI), kam seko detalizÄtas diagrammas un grafiki.
IzstrÄdÄjot globÄlai auditorijai, ievieÅ”ot experimental_SuspenseList, apsveriet Å”Ädus internacionalizÄcijas (i18n) faktorus:
- TÄ«kla latentums: LietotÄji dažÄdÄs Ä£eogrÄfiskajÄs atraÅ”anÄs vietÄs var saskarties ar dažÄdu tÄ«kla latentumu. Izmantojiet
experimental_SuspenseList, lai prioritizÄtu lietotÄjam vissvarÄ«gÄkÄ satura ielÄdi, nodroÅ”inot saprÄtÄ«gu sÄkotnÄjo pieredzi neatkarÄ«gi no tÄ«kla apstÄkļiem. - IerÄ«Äu iespÄjas: LietotÄji dažÄdÄs valstÄ«s var piekļūt jÅ«su lietojumprogrammai, izmantojot dažÄdas ierÄ«ces ar atŔķirÄ«gu apstrÄdes jaudu un ekrÄna izmÄriem. OptimizÄjiet ielÄdes secÄ«bu, lai prioritizÄtu saturu, kas ir visatbilstoÅ”Äkais izmantotajai ierÄ«cei.
- Valoda un lokalizÄcija: PÄrliecinieties, ka ielÄdes indikatori un rezerves saturs ir pareizi tulkoti un lokalizÄti dažÄdÄm valodÄm un reÄ£ioniem. Apsveriet vietturu izmantoÅ”anu, kas pielÄgojas teksta virzienam (no kreisÄs uz labo vai no labÄs uz kreiso) tÄdÄm valodÄm kÄ arÄbu vai ebreju.
experimental_SuspenseList apvienoŔana ar React Router
experimental_SuspenseList nevainojami darbojas ar React Router, ļaujot jums pÄrvaldÄ«t veselu marÅ”rutu un ar tiem saistÄ«to komponentu ielÄdi. JÅ«s varat ietvert savus marÅ”ruta komponentus Suspense robežÄs un pÄc tam izmantot experimental_SuspenseList, lai kontrolÄtu Å”o marÅ”rutu ielÄdes secÄ«bu.
import React, { Suspense, lazy } from 'react';
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
import { unstable_SuspenseList as SuspenseList } from 'react';
const Home = lazy(() => import('./Home'));
const About = lazy(() => import('./About'));
const Contact = lazy(() => import('./Contact'));
function App() {
return (
<Router>
<SuspenseList revealOrder="forwards">
<Suspense fallback={<p>IelÄdÄ sÄkumlapu...</p>}>
<Route exact path="/" component={Home} />
</Suspense>
<Suspense fallback={<p>IelÄdÄ lapu "Par mums"...</p>}>
<Route path="/about" component={About} />
</Suspense>
<Suspense fallback={<p>IelÄdÄ kontaktu lapu...</p>}>
<Route path="/contact" component={Contact} />
</Suspense>
</SuspenseList>
</Router>
);
}
Å ajÄ piemÄrÄ, kad lietotÄjs naviÄ£Ä uz citu marÅ”rutu, atbilstoÅ”Ä lapa tiks ielÄdÄta Suspense robežÄ. experimental_SuspenseList nodroÅ”ina, ka katra marÅ”ruta ielÄdes indikatori tiek parÄdÄ«ti secÄ«gÄ kÄrtÄ«bÄ.
Kļūdu apstrÄde un rezerves stratÄÄ£ijas
Lai gan Suspense nodroÅ”ina fallback rekvizÄ«tu ielÄdes stÄvokļu apstrÄdei, ir svarÄ«gi apsvÄrt arÄ« kļūdu apstrÄdi. Ja komponents neizdodas ielÄdÄties, Suspense robeža noÄ·ers kļūdu un parÄdÄ«s rezerves variantu. TomÄr jÅ«s varÄtu vÄlÄties sniegt informatÄ«vÄku kļūdas ziÅojumu vai veidu, kÄ lietotÄjs var mÄÄ£inÄt atkÄrtoti ielÄdÄt komponentu.
JÅ«s varat izmantot useErrorBoundary ÄÄ·i (hook) (pieejams dažÄs kļūdu robežu bibliotÄkÄs), lai noÄ·ertu kļūdas Suspense robežÄs un parÄdÄ«tu pielÄgotu kļūdas ziÅojumu. Varat arÄ« ieviest atkÄrtotas mÄÄ£inÄÅ”anas mehÄnismu, lai ļautu lietotÄjam mÄÄ£inÄt ielÄdÄt komponentu vÄlreiz.
import React, { Suspense, lazy } from 'react';
import { useErrorBoundary } from 'react-error-boundary';
const MyComponent = lazy(() => import('./MyComponent'));
function MyComponentWrapper() {
const { showBoundary, reset } = useErrorBoundary();
if (showBoundary) {
return (
<div>
<p>IelÄdÄjot MyComponent, radÄs kļūda.</p>
<button onClick={reset}>MÄÄ£inÄt vÄlreiz</button>
</div>
);
}
return <MyComponent />;
}
function App() {
return (
<Suspense fallback={<p>IelÄdÄ...</p>}>
<MyComponentWrapper />
</Suspense>
);
}
VeiktspÄjas apsvÄrumi un labÄkÄs prakses
Lai gan experimental_SuspenseList var uzlabot jÅ«su lietojumprogrammas uztverto veiktspÄju, ir svarÄ«gi to izmantot apdomÄ«gi un apsvÄrt tÄ iespÄjamo ietekmi uz veiktspÄju.
- Izvairieties no pÄrmÄrÄ«gas iegulÅ”anas (nesting): PÄrmÄrÄ«ga
experimental_SuspenseListkomponentu iegulÅ”ana var radÄ«t veiktspÄjas slogu. Uzturiet iegulÅ”anas lÄ«meni minimÄlu un izmantojietexperimental_SuspenseListtikai tur, kur tas sniedz bÅ«tisku labumu lietotÄja pieredzei. - OptimizÄjiet komponentu ielÄdi: PÄrliecinieties, ka jÅ«su komponenti tiek ielÄdÄti efektÄ«vi, izmantojot tÄdas metodes kÄ koda sadalīŔana un slinkÄ ielÄde (lazy loading). Tas samazinÄs ielÄdes stÄvoklÄ« pavadÄ«to laiku un kopÄjo
experimental_SuspenseListietekmi. - Izmantojiet piemÄrotus rezerves variantus (fallbacks): IzvÄlieties rezerves variantus, kas ir viegli un vizuÄli pievilcÄ«gi. Izvairieties no sarežģītu komponentu izmantoÅ”anas kÄ rezerves variantiem, jo tas var noliegt
experimental_SuspenseListveiktspÄjas priekÅ”rocÄ«bas. Apsveriet vienkÄrÅ”u spinneru, progresa joslu vai vietturu satura izmantoÅ”anu. - PÄrraugiet veiktspÄju: Izmantojiet veiktspÄjas uzraudzÄ«bas rÄ«kus, lai izsekotu
experimental_SuspenseListietekmi uz jÅ«su lietojumprogrammas veiktspÄju. Tas palÄ«dzÄs jums identificÄt jebkÄdus iespÄjamos vÄjos punktus un optimizÄt jÅ«su implementÄciju.
NoslÄgums: Suspense ielÄdes modeļu pieÅemÅ”ana
experimental_SuspenseList ir jaudÄ«gs rÄ«ks sarežģītu ielÄdes modeļu izveidei React lietojumprogrammÄs. Izprotot tÄ iespÄjas un izmantojot to apdomÄ«gi, jÅ«s varat ievÄrojami uzlabot lietotÄja pieredzi, Ä«paÅ”i lietotÄjiem dažÄdÄs Ä£eogrÄfiskajÄs atraÅ”anÄs vietÄs ar mainÄ«giem tÄ«kla apstÄkļiem. StratÄÄ£iski kontrolÄjot komponentu atklÄÅ”anas secÄ«bu un nodroÅ”inot piemÄrotus rezerves variantus, jÅ«s varat radÄ«t plÅ«denÄku, saistoÅ”Äku un galu galÄ apmierinoÅ”Äku lietotÄja pieredzi globÄlai auditorijai.
Atcerieties vienmÄr iepazÄ«ties ar oficiÄlo React dokumentÄciju, lai iegÅ«tu jaunÄko informÄciju par experimental_SuspenseList un citÄm eksperimentÄlajÄm funkcijÄm. Esiet uzmanÄ«gi attiecÄ«bÄ uz iespÄjamiem riskiem un ierobežojumiem, kas saistÄ«ti ar eksperimentÄlo funkciju izmantoÅ”anu produkcijas vidÄs, un vienmÄr rÅ«pÄ«gi pÄrbaudiet savu implementÄciju, pirms to nododat saviem lietotÄjiem.