Zamonaviy Vebni Shakllantirgan G'alati API-lar (Va Texnik Qarorlar Haqida Nima O'rgatadi)
Brauzer API-larining siri: nega "titles" parameteri ishlamaydi?
Keling, bir o'yin o'ynaylik: siz bilgan eng g'alati brauzer API-sini ayting.
Frontend dasturchi bo'lsangiz, ehtimol canPlayType() darhol esga tushdi. Bu metod uch xil qiymat qaytaradi: bo'sh string (yo'q), "probably" (ehtimol), yoki "maybe" ( balki). Bu noaniq javob, rostini aytganda, qiynoq.
Lekin yana bir API bor — u haqiqatan ham vebning "eski kodni hech qachon buzmayman" qoidasini namoyish etadi. Bu History.pushState().
pushState() chaqirilganda, uchta parametr uzatiladi: state, title va url. State obyekti mantiqiy — foydalanuvchi orqaga tugmasini bosganda, ilovangiz ma'lumotlarni tiklay oladi. URL parametri sahifani qayta yuklamasdan brauzer adres satrini yangilashga imkon beradi.
Ammo title parametri? U butunlay e'tiborsiz qoldiriladi. Barcha asosiy brauzerlar uni tashlab yuboradi.
Nega u mavjud?
2008-yilda History API birinchi marta ishlab chiqilganda, kimdir brauzerlar har bir tarix yozuvi uchun maxsus sarlavha o'rnatishga ruxsat berishi kerak, deb o'yladi. Bu g'oya shunday edi: ilovangizda "Dashboard" ko'rinsin, lekin brauzer tarixida "Analytics Report" saqlansin.
O'sha paytda bu mantiqiy tuyuldi. Lekin brauzerlar tezda muammoni angladilar — foydalanuvchi tarix yozuvini bookmark qilganda, sarlavha brauzer tablarida ko'rinadigan narsa bilan mos kelmasa nima bo'ladi?
Bu bosh og'rig'idan qochish uchun brauzerlar oddiygina parametrni e'tiborsiz qoldirdi. Ammo o'sha paytga kelib, minglab saytlar allaqachon uchta parametr bilan ishlaydigan ilovalar yaratgan edi. Uni olib tashlash production saytlarini buzardi. Ixtiyoriy qilish esa mavjud pushState(state, url) chaqiruvlarida chalkashlik yaratardi.
Shuning uchun spetsifikatsiya elegant yechim topdi: parametrni "unused" deb nomlab, uning hech qanday ta'siri yo'qligini hujjatlashtirdi.
Bu vebning "iflos siri" — biz backward compatibility-ni deyarli hamma narsadan ustun qo'yamiz. Veb eski kod 2008-yilda yozilgan bo'lsa ham, bugungi brauzerda ishlashini ta'minlash uchun har narsa qiladi.
Aynan shu falsafa NameOcean-da static site va isbotlangan web texnologiyalarni targ'ib qilishimiz sababi. Uzoq vaqt davom etishi kerak bo'lgan narsalarni — media arxivlari, hujjatlar, landing page — yaratayotganda, oddiy web texnologiyalarning barqarorligi cheklov emas, balki afzallikdir.
Domain registrar yoki hosting provider tanlashda ham bir xil tamoyil qo'llaniladi. Uzoq o'yinni tushunadigan kompaniyalarni xohlaysiz. Veb hech qayoqqa ketmaydi va bugun qurayotgan texnologiyalaringiz o'n yildan keyin ham ishlashi kerak.
Dasturchilar va startup-lar uchun muhim saboq: ba'zan "noto'g'ri" qaror doimiy bo'lib qoladi, chunkin u to'g'ri emas — balki unga allaqachon ko'p narsa bog'liq. Bu vebning xatosi emas — bu millionlab saytlarni tinch tutadigan xususiyat.
Keyingi marta g'alati API yoki bekor qilingan parametrga duch kelsangiz, esda tuting: kimdir, qayerdadir, yillar oldin qaror qabul qildi va endi u vebning poydevoriga o'yilgan. G'alativa hurmat qiling. U hamma narsani ishlab turishiga yordam beradi.