Cordova — HTML, CSS va JavaScript yordamida mobil application yaratib, web interfeysni native container ichida ishga tushirishga mo‘ljallangan ochiq kodli platforma. To‘liq nomi ko‘pincha Apache Cordova shaklida ishlatiladi. Application WebView ichida ishlaydi, native qurilma imkoniyatlariga esa pluginlar orqali murojaat qiladi.
Cordova web developerga mavjud frontend bilimlari bilan Android va iOS application yaratish imkonini beradi.
WebView
Applicationning asosiy UI qismi platformadagi WebView componentida render qilinadi.
WebView HTML document, CSS va JavaScriptni bajaradi.
U oddiy browserga o‘xshaydi, ammo native application processi va configurationi ichida ishlaydi.
Browser engine platforma versiyasiga bog‘liq.
Native shell
Cordova project har platforma uchun native wrapper yaratadi.
Wrapper:
- WebView;
- startup;
- lifecycle;
- permission;
- plugin bridge;
- package;
- signing
bilan ishlaydi.
Developer ko‘p UI kodini umumiy www directory’da saqlaydi.
Project tuzilishi
Asosiy qismlar:
Generated platforms directory ko‘pincha tool tomonidan qayta yaratiladi.
Qo‘lda o‘zgartirish keyingi buildda yo‘qolishi mumkin.
config.xml
Application metadata va platforma preference’larini belgilaydi.
Masalan:
- application ID;
- nom;
- version;
- icon;
- splash;
- navigation allowlist;
- platform preference;
- plugin setting.
Build tizimi undan Android va iOS project konfiguratsiyasini yaratadi.
Plugin
Plugin JavaScript API va native implementationni birlashtiradi.
Misollar:
- camera;
- file;
- geolocation;
- notification;
- device info;
- biometric.
Har plugin Android va iOS uchun alohida kodga ega bo‘lishi mumkin.
JavaScript-native bridge
JavaScript method plugin bridge orqali native qismga message yuboradi.
Native kod actionni bajarib callback yoki Promise natijasini qaytaradi.
Ko‘p mayda bridge call performance’ni pasaytiradi.
Katta binary data almashish ehtiyotkor tashkil qilinadi.
Device ready
Cordova APIlari native bridge tayyor bo‘lgandan keyin ishlatiladi.
deviceready event shuni bildiradi.
Oddiy DOM ready bridge tayyorligini kafolatlamaydi.
Plugin call juda erta bajarilsa API mavjud bo‘lmasligi mumkin.
Platform qo‘shish
Projectga Android yoki iOS platforma targeti qo‘shiladi.
Tool tegishli native projectni yaratadi.
Build uchun Android SDK, Gradle yoki Xcode kabi platforma vositalari kerak.
Cordova ularning o‘rnini bosmaydi.
Build
Web asset native projectga nusxalanadi, plugin kod ulanadi va platforma build tooli package yaratadi.
Android APK/AAB, iOS archive yoki IPAga oid artifact olinadi.
Release signing har platforma qoidasi bilan bajariladi.
Single Page Application
Cordova UI ko‘pincha SPA framework bilan yaratiladi.
Routing browser path o‘rniga hash yoki local history bilan ishlashi mumkin.
Application assetlari local file yoki internal web serverdan yuklanadi.
Deep link alohida plugin va native configuration talab qiladi.
Network
WebView Fetch yoki XHR orqali backend APIga murojaat qiladi.
CORS, TLS va certificate behavior WebView va plugin usuliga bog‘liq.
Allowlist faqat kerakli domainlarga navigationni cheklaydi.
Token secure storage pluginida saqlanishi mumkin.
Content Security Policy
CSP injected script va noma’lum resource’larni cheklashga yordam beradi.
Cordova application local content ishlatsa ham XSS xavfi mavjud.
Inline script va evalni keng ruxsat qilish himoyani susaytiradi.
Remote HTMLni ishonchsiz holda application WebView’da ochish xavfli.
XSS xavfi
Oddiy web saytdagi XSS Cordova’da native pluginlarga access olishi mumkin.
Agar JavaScript bridge camera, file yoki token APIlarini ochsa hujum ta’siri kattalashadi.
User input sanitization, CSP va minimal plugin permission muhim.
Plugin sifati
Plugin platforma yangilanishiga mos bo‘lishi kerak.
Eski plugin:
- deprecated API;
- zaif dependency;
- noto‘g‘ri permission;
- build conflict;
- lifecycle xatosi
yaratishi mumkin.
Maintainer faolligi va source code tekshiriladi.
UI performance
WebView DOM va CSS bilan interfeys yaratadi.
Oddiy form va content application uchun yetarli.
Murakkab animation, katta list va grafikada native yoki boshqa rendering toolkit tezroq bo‘lishi mumkin.
Performance real past quvvatli qurilmada tekshiriladi.
Offline
Web assetlar application ichida bo‘lgani sabab UI offline ochilishi mumkin.
API data cache, IndexedDB yoki file storage’da saqlanadi.
Service worker WebView’da platforma va origin configurationiga bog‘liq.
Sync conflict va stale data boshqariladi.
Update
Store orqali yangi native package tarqatiladi.
Faqat remote web contentni almashtirish platforma store siyosati va security talablariga zid bo‘lishi mumkin.
Plugin yoki permission o‘zgarsa baribir yangi native build kerak.
Cordova va PWA
PWA browser orqali o‘rnatiladi va web capabilitylarga tayanadi.
Cordova native package va plugin bridge beradi.
Cordova store distribution va chuqurroq native API uchun, PWA esa URL orqali tarqatish uchun qulay bo‘lishi mumkin.
Cordova va Ionic
Cordova runtime va native bridge qatlamidir.
Ionic esa web UI componentlari va application frameworkini beradi.
Ionic Cordova yoki boshqa native bridge bilan ishlashi mumkin.
Ular bir xil tushuncha emas.
Maintenance
Platforma SDK va store talablarining o‘zgarishi Cordova CLI, platform package va plugin update’ini talab qiladi.
Generated projectni yillar davomida yangilamaslik release buildni buzadi.
Dependency lock va reproducible CI ishlatiladi.
Bog‘liq tushunchalar
Apache Cordova, WebView, Hybrid application, JavaScript bridge, Cordova plugin, HTML, CSS, JavaScript, Ionic, PWA, Cross-platform development