PÔhjalik juhend JavaScripti impordikaartidele, keskendudes vÔimsale 'ulatuse' funktsioonile, ulatuse pÀrimisele ja mooduli resolutsioonihierarhiale kaasaegses veebiarenduses.
Uue veebiarenduse ajastu avamine: pÔhjalik sukeldumine JavaScripti impordikaartide ulatuse pÀrimisse
JavaScripti moodulite teekond on olnud pikk ja kÀÀnuline. Alates varajase veebi globaalsest nimeruumi kaosest kuni keerukate mustriteni nagu CommonJS Node.js jaoks ja AMD brauserite jaoks, on arendajad pidevalt otsinud paremaid viise koodi organiseerimiseks ja jagamiseks. Native ES moodulite (ESM) saabumine tĂ€histas monumentaalset nihet, standardiseerides moodulisĂŒsteemi otse JavaScripti keeles ja brauserites.
Kuid see uus standard tÔi kaasa mÀrkimisvÀÀrse takistuse brauseripÔhisele arendusele. Lihtsad, elegantsed impordilaused, millega me Node.js-is harjusime, nagu import _ from 'lodash';
, viskaksid brauseris vea. See on pÔhjusel, et brauseritel, erinevalt Node.js-ist oma `node_modules` algoritmi abil, ei ole sisemist mehhanismi nende "palja mooduli spetsifikaatorite" lahendamiseks kehtivaks URL-iks.
Aastaid oli lahenduseks kohustuslik ehitusetapp. Sellised tööriistad nagu Webpack, Rollup ja Parcel pakiksid meie koodi kokku, muutes need paljad spetsifikaatorid teedeks, mida brauser mÔistaks. Kuigi need tööriistad on vÔimsad, lisasid nad arendusprotsessile keerukust, konfiguratsioonikulusid ja aeglasemaid tagasisideahelaid. Mis siis, kui oleks sisemine, ehitustööriistavaba viis selle lahendamiseks? Sisestage JavaScripti impordikaardid.
Impordikaardid on W3C standard, mis pakub sisemist mehhanismi JavaScripti importide kĂ€itumise kontrollimiseks. Need toimivad otsingutabelina, öeldes brauserile tĂ€pselt, kuidas lahendada moodulispetsifikaatorid konkreetseteks URL-ideks. Kuid nende jĂ”ud ulatub palju kaugemale lihtsast aliaseerimisest. TĂ”eline mĂ€ngu muutja peitub vĂ€hemtuntud, kuid uskumatult vĂ”imas funktsioon: `ulatustes`. Ulatused vĂ”imaldavad kontekstipĂ”hist mooduli resolutsiooni, vĂ”imaldades teie rakenduse erinevatel osadel importida sama spetsifikaatorit, kuid lahendada see erinevateks mooduliteks. See avab uusi arhitektuurilisi vĂ”imalusi mikro-eesliidete, A/B testimise ja keeruka sĂ”ltuvuse halduse jaoks ilma ĂŒhegi rea komplekteerija konfiguratsioonita.
See pĂ”hjalik juhend viib teid sĂŒgavale sukeldumisele impordikaartide maailma, keskendudes eelkĂ”ige `ulatuste` poolt juhitud mooduli resolutsioonihierarhia demĂŒstifitseerimisele. Uurime, kuidas ulatuse pĂ€rimine (vĂ”i Ă”igemini tagastusmehhanism) töötab, analĂŒĂŒsime resolutsiooni algoritmi ja paljastame praktilised mustrid, et muuta oma kaasaegne veebiarenduse töövoog.
Mis on JavaScripti impordikaardid? Alus ĂŒlevaade
PÔhimÔtteliselt on impordikaart JSON-objekt, mis pakub kaardistuse arendaja imporditava mooduli nime ja vastava moodulifaili URL-i vahel. See vÔimaldab teil kasutada oma koodis puhtaid, paljaid moodulispetsifikaatoreid, tÀpselt nagu Node.js keskkonnas, ja laseb brauseril resolutsiooniga tegeleda.
PĂ”hisĂŒntaks
Impordikaardi deklareerite atribuudiga type="importmap"
sildiga <script>
. See silt peab olema HTML-dokumendis enne kÔiki <script type="module">
silte, mis kasutavad kaardistatud impordid.
Siin on lihtne nÀide:
<!DOCTYPE html>
<html>
<head>
<!-- Impordikaart -->
<script type="importmap">
{
"imports": {
"moment": "https://cdn.skypack.dev/moment",
"lodash": "/js/vendor/lodash-4.17.21.min.js",
"app/": "/js/app/"
}
}
</script>
<!-- Teie rakenduse kood -->
<script type="module" src="/js/main.js"></script>
</head>
<body>
<h1>Tere tulemast impordikaartide juurde!</h1>
</body>
</html>
Meie failis /js/main.js
saame nĂŒĂŒd kirjutada sellist koodi:
// See töötab, sest "moment" on impordikaardis kaardistatud.
import moment from 'moment';
// See töötab, sest "lodash" on kaardistatud.
import { debounce } from 'lodash';
// See on teie enda koodi pakett-laadne import.
// See lahendatakse aadressile /js/app/utils.js, kuna on "app/" kaardistus.
import { helper } from 'app/utils.js';
console.log('TĂ€na on:', moment().format('MMMM Do YYYY'));
Jaotame lahti objekti `imports`:
"moment": "https://cdn.skypack.dev/moment"
: see on otsene kaardistus. Kui brauser nÀebimport ... from 'moment'
, toob see mooduli mÀÀratud CDN-i URL-ist."lodash": "/js/vendor/lodash-4.17.21.min.js"
: see kaardistab spetsifikaatori `lodash` kohalikult hostitud failile."app/": "/js/app/"
: see on teepĂ”hine kaardistus. Pange tĂ€hele kaldkriipsu nii vĂ”tmel kui ka vÀÀrtusel. See ĂŒtleb brauserile, et kĂ”ik impordi spetsifikaatorid, mis algavad `app/`, tuleks lahendada suhteliselt aadressile `/js/app/`. NĂ€iteks `import ... from 'app/auth/user.js'` lahendataks aadressile `/js/app/auth/user.js`. See on uskumatult kasulik oma rakenduse koodi struktureerimiseks, kasutamata rĂ€paseid suhtelisi teid nagu `../../`.
PÔhilised eelised
Isegi selle lihtsa kasutusega on eelised selged:
- Ehituseta arendus: Saate kirjutada kaasaegset, modulaarset JavaScripti ja kÀivitada seda otse brauseris ilma komplekteerijata. See viib kiiremate vÀrskenduste ja lihtsama arenduse seadistuseni.
- De-sidustatud sÔltuvused: Teie rakenduse kood viitab abstraktsetele spetsifikaatoritele (`'moment'`) kodeeritud URL-ide asemel. See muudab versioonide, CDN-i pakkujate vahetamise vÔi kohalikust failist CDN-i kolimise triviaaliks, muutes ainult impordikaardi JSON-i.
- Parem vahemĂ€llu salvestamine: Kuna moodulid laaditakse eraldi failidena, saab brauser need eraldi vahemĂ€llu salvestada. Ăhe vĂ€ikese mooduli muutmine ei nĂ”ua massiivse komplekti uuesti allalaadimist.
PÔhitÔdedest kaugemale: tutvustame `ulatusi` tÀpsema kontrolli jaoks
Ălemine tase `imports` pakub globaalset kaardistust teie kogu rakenduse jaoks. Aga mis juhtub, kui teie rakendus kasvab keerukamaks? MĂ”elge stsenaariumile, kus loote suure veebirakenduse, mis integreerib kolmanda osapoole vestluse vidina. PĂ”hirakendus kasutab diagrammide teegi versiooni 5, kuid pĂ€randvestluse vidin ĂŒhildub ainult versiooniga 4.
Ilma `ulatusteta` seisaksite silmitsi keerulise valikuga: proovige vidinat ĂŒmber kujundada, leida erinev vidin vĂ”i leppida sellega, et te ei saa uuemat diagrammide teeki kasutada. Just selle probleemi lahendamiseks `ulatused` loodud.
Impordikaardi vÔti `ulatustes` vÔimaldab teil mÀÀratleda sama spetsifikaatori erinevad kaardistused, mis pÔhinevad sellel, kust import tehakse. See pakub kontekstipÔhist ehk ulatusega mooduli resolutsiooni.
`Ulatuste` struktuur
VÀÀrtus `ulatustes` on objekt, kus iga vÔti on URL-i prefiks, mis esindab "ulatuse teed". Iga ulatuse tee vÀÀrtus on objekt sarnaselt `imports`-iga, mis mÀÀratleb kaardistused, mis kehtivad konkreetselt selles ulatuses.
Lahendame oma diagrammide teegi probleemi nÀitega:
<script type="importmap">
{
"imports": {
"charting-lib": "/libs/charting-lib/v5/main.js",
"api-client": "/js/api/v2/client.js"
},
"scopes": {
"/widgets/chat/": {
"charting-lib": "/libs/charting-lib/v4/legacy.js"
}
}
}
</script>
<script type="module" src="/js/app.js"></script>
<script type="module" src="/widgets/chat/init.js"></script>
Siin on, kuidas brauser seda tÔlgendab:
- Skript aadressil `/js/app.js` soovib importida `charting-lib`. Brauser kontrollib, kas skripti tee (`/js/app.js`) sobib mĂ”ne ulatuse teega. See ei sobi aadressiga `/widgets/chat/`. SeetĂ”ttu kasutab brauser ĂŒlemise taseme `imports` kaardistust ja `charting-lib` lahendatakse aadressile `/libs/charting-lib/v5/main.js`.
- Skript aadressil `/widgets/chat/init.js` soovib samuti importida `charting-lib`. Brauser nÀeb, et selle skripti tee (`/widgets/chat/init.js`) kuulub ulatuse `/widgets/chat/` alla. See vaatab selles ulatuses `charting-lib` kaardistust ja leiab selle. Seega, selle skripti ja kÔigi sellega imporditud moodulite puhul, mis on selles tees, lahendatakse `charting-lib` aadressile `/libs/charting-lib/v4/legacy.js`.
Koos `ulatustega` oleme edukalt lubanud kahel oma rakenduse osal kasutada sama sÔltuvuse erinevaid versioone, eksisteerides rahulikult ilma konfliktideta. See on kontrollitase, mis oli varem saavutatav ainult keerukate komplekteerija konfiguratsioonide vÔi iframe-pÔhise isolatsiooniga.
PÔhikontseptsioon: ulatuse pÀrimise ja mooduli resolutsioonihierarhia mÔistmine
NĂŒĂŒd jĂ”uame asja tuumani. Kuidas otsustab brauser, millist ulatust kasutada, kui mitu ulatust vĂ”ivad potentsiaalselt faili teega kokku sobida? Ja mis juhtub ĂŒlemise taseme `imports` kaardistustega? Seda juhib selge ja prognoositav hierarhia.
Kuldne reegel: kÔige spetsiifilisem ulatus vÔidab
Ulatuse resolutsiooni pÔhiprintsiip on spetsiifilisus. Kui moodul teatud URL-il taotleb teist moodulit, vaatab brauser kÔiki vÔtmeid objektis `ulatustes`. See leiab pikima vÔtme, mis on taotleva mooduli URL-i prefiks. See "kÔige spetsiifilisem" vastav ulatus on ainus, mida kasutatakse impordi lahendamisel. KÔiki teisi ulatuseid ignoreeritakse selle konkreetse resolutsiooni jaoks.
Illustreerime seda keerukama failistruktuuri ja impordikaardiga.
Failistruktuur:
- `/index.html` (sisaldab impordikaarti)
- `/js/main.js`
- `/js/feature-a/index.js`
- `/js/feature-a/core/logic.js`
Impordikaart failis `index.html`:
{
"imports": {
"api": "/js/api/v1/api.js",
"ui-kit": "/js/ui/v2/kit.js"
},
"scopes": {
"/js/feature-a/": {
"api": "/js/api/v2-beta/api.js"
},
"/js/feature-a/core/": {
"api": "/js/api/v3-experimental/api.js",
"ui-kit": "/js/ui/v1/legacy-kit.js"
}
}
}
NĂŒĂŒd jĂ€lgime `import api from 'api';` ja `import ui from 'ui-kit';` resolutsiooni erinevatest failidest:
-
Failis `/js/main.js`:
- Tee `/js/main.js` ei sobi aadressiga `/js/feature-a/` ega `/js/feature-a/core/`.
- Ăkski ulatus ei sobi. Resolutsioon langeb tagasi ĂŒlemise taseme `imports` juurde.
- `api` lahendatakse aadressile `/js/api/v1/api.js`.
- `ui-kit` lahendatakse aadressile `/js/ui/v2/kit.js`.
-
Failis `/js/feature-a/index.js`:
- Tee `/js/feature-a/index.js` on prefiksiga `/js/feature-a/`. See ei ole prefiksiga `/js/feature-a/core/`.
- KÔige spetsiifilisem vastav ulatus on `/js/feature-a/`.
- See ulatus sisaldab kaardistust `api` jaoks. SeetÔttu lahendatakse `api` aadressile `/js/api/v2-beta/api.js`.
- See ulatus ei sisalda kaardistust `ui-kit` jaoks. Selle spetsifikaatori resolutsioon langeb tagasi ĂŒlemise taseme `imports` juurde. `ui-kit` lahendatakse aadressile `/js/ui/v2/kit.js`.
-
Failis `/js/feature-a/core/logic.js`:
- Tee `/js/feature-a/core/logic.js` on prefiksiga nii `/js/feature-a/` kui ka `/js/feature-a/core/`.
- Kuna `/js/feature-a/core/` on pikem ja seetÔttu spetsiifilisem, valitakse see vÔitvaks ulatuseks. Ulatus `/js/feature-a/` ignoreeritakse tÀielikult selle faili puhul.
- See ulatus sisaldab kaardistust `api` jaoks. `api` lahendatakse aadressile `/js/api/v3-experimental/api.js`.
- See ulatus sisaldab ka kaardistust `ui-kit` jaoks. `ui-kit` lahendatakse aadressile `/js/ui/v1/legacy-kit.js`.
TĂ”de "pĂ€rimise" kohta: see on tagastus, mitte ĂŒhendamine
On ĂŒlioluline mĂ”ista tavalist segadust. MĂ”iste "ulatuse pĂ€rimine" vĂ”ib olla eksitav. Spetsiifilisem ulatus ei pĂ€ri ega ĂŒhenda vĂ€hem spetsiifilisega (vanema) ulatusega. Resolutsiooniprotsess on lihtsam ja otsesem:
- Leidke imporditava skripti URL-i jaoks ĂŒks kĂ”ige spetsiifilisem vastav ulatus.
- Kui see ulatus sisaldab kaardistust taotletud spetsifikaatori jaoks, kasutage seda. Protsess lÔpeb siin.
- Kui vĂ”itnud ulatus ei sisalda kaardistust spetsifikaatori jaoks, kontrollib brauser kohe ĂŒlemise taseme objekti `imports` kaardistust. See ei vaata ĂŒhtegi teist, vĂ€hem spetsiifilist ulatust.
- Kui ĂŒlemise taseme `imports` kaardistus leitakse, kasutatakse seda.
- Kui kaardistust ei leita ei vĂ”itnud ulatuses ega ĂŒlemise taseme `imports` objektis, siis visatakse `TypeError`.
Kinnistame seda uuesti oma viimase nĂ€itega. Kui lahendatakse `ui-kit` failist `/js/feature-a/index.js`, oli vĂ”itnud ulatus `/js/feature-a/`. See ulatus ei mÀÀratlenud `ui-kit`, nii et brauser ei kontrollinud ulatust `/` (mida ei ole vĂ”tmena) ega ĂŒhtegi teist vanemat. See lĂ€ks otse globaalsesse `imports` ja leidis sealt kaardistuse. See on tagastusmehhanism, mitte kaskaad- vĂ”i ĂŒhenduspĂ€rimine nagu CSS.
Praktilised rakendused ja tÀiustatud stsenaariumid
Ulatusega impordikaartide jÔud paistab tÔeliselt silma keerukates, reaalse maailma rakendustes. Siin on mÔned arhitektuurimustrid, mida need vÔimaldavad.
Mikro-eesliidesed
See on vaieldamatult impordikaartide ulatuste pĂ”hiline kasutusjuht. Kujutage ette e-kaubanduse saiti, kus tooteotsing, ostukorv ja kassaprotsess on kĂ”ik erinevad rakendused (mikro-eesliidesed), mille on vĂ€lja töötanud erinevad meeskonnad. Need kĂ”ik on integreeritud ĂŒhte hosti lehele.
- Otsingumeeskond saab kasutada Reacti uusimat versiooni.
- KÀrumeeskond vÔib olla vanemal, stabiilsemal Reacti versioonil, kuna on pÀranduv sÔltuvus.
- Hostrakendus vÔib kasutada Preacti oma kesta, et see oleks kerge.
Impordikaart saab seda sujuvalt korraldada:
{
"imports": {
"react": "/libs/preact/v10/preact.js",
"react-dom": "/libs/preact/v10/preact-dom.js",
"shared-state": "/js/state-manager.js"
},
"scopes": {
"/apps/search/": {
"react": "/libs/react/v18/react.js",
"react-dom": "/libs/react/v18/react-dom.js"
},
"/apps/cart/": {
"react": "/libs/react/v17/react.js",
"react-dom": "/libs/react/v17/react-dom.js"
}
}
}
Siin saab iga mikro-eesliides, mis on identifitseeritud oma URL-i teega, oma isoleeritud Reacti versiooni. Nad saavad ikkagi importida mooduli `shared-state` ĂŒlemise taseme `imports`-ist, et omavahel suhelda. See tagab tugeva kapseldamise, vĂ”imaldades samas kontrollitud koostalitlusvĂ”imet, seda kĂ”ike ilma keerukate komplekteerija föderatsiooniseadistusteta.
A/B testimine ja funktsioonide lipud
Kas soovite testida uut kassavoogu oma kasutajate teatud protsendi jaoks? Saate testrĂŒhma teenindada veidi erinevat `index.html` muudetud impordikaardiga.
KontrollrĂŒhma impordikaart:
{
"imports": {
"checkout-flow": "/js/checkout/v1/flow.js"
}
}
TestrĂŒhma impordikaart:
{
"imports": {
"checkout-flow": "/js/checkout/v2-beta/flow.js"
}
}
Teie rakenduse kood jÀÀb samaks: `import start from 'checkout-flow';`. See, milline moodul laaditakse, kĂ€sitletakse tĂ€ielikult impordikaardi tasemel, mida saab serveris dĂŒnaamiliselt genereerida kasutaja kĂŒpsiste vĂ”i muude kriteeriumide pĂ”hjal.
Monoreposide haldamine
Suures monoreposis vĂ”ib teil olla palju sisemisi pakette, mis sĂ”ltuvad ĂŒksteisest. Ulatused vĂ”ivad aidata neid sĂ”ltuvusi puhtalt hallata. Arenduse ajal saate kaardistada iga paketi nime selle lĂ€htekoodiga.
{
"imports": {
"@my-corp/design-system": "/packages/design-system/src/index.js",
"@my-corp/utils": "/packages/utils/src/index.js"
},
"scopes": {
"/packages/design-system/": {
"@my-corp/utils": "/packages/design-system/src/vendor/utils-shim.js"
}
}
}
Selles nÀites saavad enamik pakette peamise `utils` teegi. Kuid `design-system` pakett, vÔib-olla mingil konkreetsel pÔhjusel, saab `utils`-i shimmitud vÔi erineva versiooni, mis on mÀÀratletud oma ulatuse piires.
Brauseri tugi, tööriistad ja juurutuskaalutlused
Brauseri tugi
2023. aasta lĂ”pu seisuga on impordikaartide sisemine tugi saadaval kĂ”igis peamistes kaasaegsetes brauserites, sealhulgas Chrome, Edge, Safari ja Firefox. See tĂ€hendab, et saate neid hakata tootmises kasutama suurel osal oma kasutajabaasist ilma polĂŒfilideta.
Vanemate brauserite tagastused
Rakenduste puhul, mis peavad toetama vanemaid brausereid, millel puudub sisemine impordikaartide tugi, on kogukonnal tugev lahendus: polĂŒfill `es-module-shims.js`. See ĂŒksik skript, kui see on kaasatud enne teie impordikaarti, toetab impordikaarte ja muid kaasaegseid mooduli funktsioone (nagu dĂŒnaamiline `import()`) vanemates keskkondades. See on kerge, lahingus testitud ja soovitatav lĂ€henemine laia ĂŒhilduvuse tagamiseks.
<!-- PolĂŒfill vanematele brauseritele -->
<script async src="https://ga.jspm.io/npm:es-module-shims@1.8.2/dist/es-module-shims.js"></script>
<!-- Teie impordikaart -->
<script type="importmap">
...
</script>
DĂŒnaamilised, serveri genereeritud kaardid
Ăks vĂ”imsamaid juurutusmustreid on mitte omada oma HTML-failis staatilist impordikaarti. Selle asemel saab teie server dĂŒnaamiliselt JSON-i genereerida vastavalt pĂ€ringule. See vĂ”imaldab:
- Keskkonna vahetamine: Serveeri mitte-minifitseeritud, lÀhtekaardistatud mooduleid keskkonnas `development` ja minimeeritud, tootmisvalmis mooduleid keskkonnas `production`.
- KasutajarollipÔhised moodulid: Admin-kasutaja vÔib saada impordikaardi, mis sisaldab ainult admin-tööriistade kaardistusi.
- Lokaliseerimine: Kaardista moodul `translations` erinevatele failidele, mis pÔhinevad kasutaja pÀises `Accept-Language`.
Parimad tavad ja vÔimalikud ohud
Nagu iga vÔimsa tööriistaga, on ka siin hÀid tavasid, mida jÀrgida, ja ohte, mida vÀltida.
- Hoidke see loetavana: Kuigi saate luua vĂ€ga sĂŒgavaid ja keerukaid ulatuse hierarhiaid, vĂ”ib see muutuda raskesti vigade parandatavaks. PĂŒĂŒdke lihtsaima ulatuse struktuuri poole, mis vastab teie vajadustele. Kommenteerige oma impordikaardi JSON-i, kui see muutub keeruliseks.
- Kasutage alati teeradade lÔppu kaldkriipse: Tee prefiksi (nagu kataloogi) kaardistamisel veenduge, et nii impordikaardi vÔti kui ka URL-i vÀÀrtus lÔpevad `/`. See on oluline, et sobitusalgoritm toimiks Ôigesti kÔigi selles kataloogis olevate failide jaoks. Selle unustamine on tavaline vigade allikas.
- Oht: mitte-pĂ€rimise lĂ”ks: Pidage meeles, et spetsiifiline ulatus ei pĂ€ri vĂ€hem spetsiifilisest ulatusest. See langeb tagasi *ainult* globaalsele `imports`-ile. Kui teete resolutsiooniprobleemiga vigu, tuvastage alati kĂ”igepealt ĂŒks vĂ”itnud ulatus.
- Oht: impordikaardi vahemĂ€llu salvestamine: Teie impordikaart on kogu teie mooduli graafi sisenemispunkt. Kui vĂ€rskendate mooduli URL-i kaardil, peate tagama, et kasutajad saaksid uue kaardi. Tavaline strateegia on mitte salvestada pĂ”hist faili `index.html` vĂ€ga palju vahemĂ€llu vĂ”i laadida dĂŒnaamiliselt impordikaart URL-ist, mis sisaldab sisu rĂ€si, kuigi esimene on tavalisem.
- Vigade parandamine on teie sÔber: Kaasaegsed brauseri arendustööriistad sobivad suurepÀraselt mooduliprobleemide silumiseks. VÔrguseadete vahekaardil nÀete tÀpselt, millist URL-i iga mooduli jaoks taotleti. Konsoolis nÀitavad resolutsioonivead selgelt, milline spetsifikaator ei suutnud lahendada, millisest impordiskriptist.
KokkuvÔte: ehitusevaba veebiarenduse tulevik
JavaScripti impordikaardid ja eelkĂ”ige nende funktsioon `ulatustes` esindavad paradigmamuutust esiliidese arendamisel. Nad liigutavad mĂ€rkimisvÀÀrse osa loogikast â mooduli resolutsioonist â eelkompileerimise ehitusetapist otse brauseri sisemisse standardisse. See ei ole ainult mugavus; see on paindlikumate, dĂŒnaamilisemate ja vastupidavamate veebirakenduste loomine.
Oleme nĂ€inud, kuidas mooduli resolutsioonihierarhia töötab: kĂ”ige spetsiifilisem ulatus tee vĂ”idab alati ja see langeb tagasi globaalsele objektile `imports`, mitte vanemlikele ulatustele. See lihtne, kuid vĂ”imas reegel vĂ”imaldab luua keerukaid rakenduste arhitektuure nagu mikro-eesliidesed ja vĂ”imaldab dĂŒnaamilisi kĂ€itumisi nagu A/B testimine ĂŒllatava lihtsusega.
Kuna veebiplatvorm kĂŒpseb edasi, vĂ€heneb sĂ”ltuvus rasketest, keerukatest ehitustööriistadest arenduseks. Impordikaardid on selle "ehitusevaba" tuleviku nurgakivi, pakkudes lihtsamat, kiiremat ja standardiseeritumat viisi sĂ”ltuvuste haldamiseks. Ulatuste ja resolutsioonihierarhia pĂ”himĂ”tete valdamisega ei Ă”pi te mitte ainult uut brauseri API-t; varustate end tööriistadega, et luua jĂ€rgmise pĂ”lvkonna rakendusi globaalseks veebiks.