JavaScript charchoqini davolash bo'yicha o'quv rejasi

Men ham boshqalar singari, yaqinda Xose Aguinaganing "2016 yilda JavaScript-ni qanday o'rganish kerakligi" degan yozuvini ko'rdim.

Ushbu xabar asabni buzganligi aniq: men uni Hacker News-da bir emas, ikki marta eng yuqori pog'onaga ko'targanini ko'rdim. Bu / r / javascript-dagi eng mashhur xabar edi va hozirda uning O'rta haqida 10kdan ortiq yoqishi bor - bu mening barcha postlarim to'plagan narsalardan ham ko'proqdir. Ammo kim hisoblashmoqda?

Ammo bu ajablanib bo'lmadi: men uzoq vaqtdan beri JavaScript ekotizimini chalkashtirib yuborishi mumkinligini bilaman. Aslida, men JavaScript shtati so'rovini o'tkazganimning sababi, qaysi kutubxonalar haqiqatan ham mashhurligini aniqlash va nihoyat shovqin signalini saralash edi.

Ammo bugun men bir qadam oldinga borishni xohlayman. Ishlarning holati haqida shikoyat qilishning o'rniga, men sizga JavaScript ekotizimini zabt etish bo'yicha aniq, bosqichma-bosqich o'rganish rejasini beraman.

Bu kim uchun

Ushbu o'quv rejasi siz uchun, agar:

  • Siz o'zgaruvchilar va funktsiyalar kabi asosiy dasturiy tushunchalar bilan tanishsiz.
  • Ehtimol siz allaqachon PHP va Python kabi tillar bilan ishlagan bo'lsangiz kerak va jQuery kabi oldingi kutubxonalardan bir nechta oddiy xakerlar uchun foydalangan bo'lishingiz mumkin.
  • Endi siz jiddiyroq rivojlanishga kirishmoqchisiz, lekin boshlashdan oldin ramka va kutubxonalarda cho'kmoqdasiz.

Biz qamrab oladigan narsalar

  • Zamonaviy JavaScript veb-ilovasi qanday ko'rinishga ega
  • Nima uchun siz shunchaki jQuery-dan foydalana olmaysiz
  • Nega reaktsiya eng xavfsiz tanlovdir
  • Nega avval "JavaScript-ni to'g'ri o'rganish" kerak emas
  • ES6 sintaksisini qanday o'rganish kerak
  • Reduxni nima uchun va qanday o'rganish kerak
  • GraphQL nima o'zi va nima uchun bu katta muammo
  • Keyingi qayerga borish kerak

Bu erda eslatib o'tilgan manbalar

Voz kechish: Ushbu post Wes Bos tomonidan kurslarga bir nechta aloqalarni o'z ichiga oladi, ammo men materialni tavsiya qilaman, chunki men bu yaxshi, deb o'ylayman va nafaqat filial sxemasi tufayli.

Agar boshqa manbalarni topishni istasangiz, Mark Erikson React, ES6 va Redux havolalarining katta ro'yxatini saqlab qoladi.

JavaScript va JavaScript

Ishni boshlashdan oldin, biz xuddi shu narsani gapirayotganimizga ishonch hosil qilishimiz kerak. Agar siz Google-dan "JavaScript-ni o'rganing" yoki "JavaScript-ni o'rganish rejasi" ni ko'rsangiz, sizga JavaScript tilini o'rganishni o'rgatadigan ko'plab manbalarni topasiz.

Ammo bu aslida oson qism. Siz aniq chuqur qazib, tilning nozik tomonlarini o'rganishingiz mumkin bo'lsa-da, haqiqat shundaki, veb-ilovalarning aksariyati nisbatan sodda kodlardan foydalanadi. Boshqacha qilib aytganda, veb-dasturlarni yozishingiz kerak bo'lgan narsalarning 80 foizi odatda sizning JavaScript-dagi kitobingizning dastlabki bir necha boblarida yoritilgan.

Yo'q, javascript ekotizimini va ko'p sonli raqobatdosh ramka va kutubxonalarni o'zlashtirish qiyin muammo. Yaxshi xabar shundaki, ushbu o'quv rejasi aynan shu narsaga qaratilgan.

JavaScript dasturlarining qurilish bloklari

Nima uchun zamonaviy JavaScript ilovalari juda murakkab ko'rinishini tushunish uchun avval ularning qanday ishlashini tushunishingiz kerak.

Yangi boshlanuvchilar uchun 2008 yildagi "an'anaviy" veb-ilovani ko'rib chiqaylik:

  1. Ma'lumotlar bazasi ma'lumotlarni orqa tomoningizga yuboradi (masalan, sizning PHP yoki Rails ilovangiz).
  2. Orqa tomon bu ma'lumotlarni o'qiydi va HTML-ni chiqaradi.
  3. HTML brauzerga yuborilib, uni DOM (asosan veb-sahifa) sifatida namoyish etadi.

Endi ushbu ilovalarning ko'pi, shuningdek, tab va modal oynalar kabi interaktivlikni qo'shish uchun mijozga bir nechta JavaScript kodiga sepilgan. Ammo printsipial jihatdan brauzer hanuzgacha HTML-ni qabul qilib, u erdan ketayotgan edi.

Endi buni "zamonaviy" 2016 veb-ilovasi bilan taqqoslang ("Yagona sahifalar ilovasi" deb ham nomlanadi):

Farqga e'tibor bering? Endi server HTML-ni yuborish o'rniga ma'lumot yuboradi va "ma'lumotlarni HTML-ga" o'zgartirish jarayoni mijozda amalga oshiriladi (shuning uchun siz mijozga ushbu konversiyani qanday bajarish kerakligini ko'rsatuvchi kodni yuborasiz).

Bu juda ko'p ma'noga ega. Birinchidan, yaxshi:

  • Ushbu tarkibiy qism uchun faqat ma'lumotlarni yuborish butun HTML sahifalarini yuborishdan tezroq.
  • Mijoz kontentni darhol brauzer oynasini yangilab turmasdan almashtirishi mumkin ("yagona sahifa ilovasi" atamasi).

Yomon:

  • Dastlabki yuklanish ko'proq vaqt talab etadi, chunki "HTML-ga ma'lumotlar" kod bazasi ancha katta bo'lishi mumkin.
  • Endi siz ma'lumotni keshlash yoki tekshirishni xohlasangiz, mijozning ma'lumotlarini saqlash va boshqarish uchun joy kerak bo'ladi.

Va xunuk:

  • Tabriklaymiz - endi siz mijozlar to'plami bilan shug'ullanishingiz kerak, bu sizning server tomoningizdagi stack kabi murakkab bo'lishi mumkin.

Mijoz-server spektri

Agar tushkunliklar juda ko'p bo'lsa, nega bu qiyinchiliklarni boshdan kechirishimiz kerak? Nega endi eski PHP-ning yaxshi eski ilova dasturlariga yopishib o'tirishning iloji yo'q?

Tasavvur qiling, siz kalkulyator qurayapsiz. Agar foydalanuvchi 2 + 2 nima ekanligini bilishni istasa, brauzer buni amalga oshirishga qodir bo'lsa, operatsiyani bajarish uchun serverga qaytish mantiqiy emas.

Boshqa tomondan, agar siz blog kabi sof statik sayt yaratayotgan bo'lsangiz, oxirgi HTML-ni serverda yaratish juda yaxshi va u bilan bajariladi.

Haqiqat shundaki, veb-ilovalarning aksariyati spektrning o'rtasida joylashgan. Muammo qaerdaligini bilishdir.

Ammo asosiy narsa shundaki, spektr doimiy emas: siz toza server dasturidan boshlay olmaysiz va asta-sekin toza mijoz dasturiga o'tishingiz mumkin. Ayrim hollarda (bo'linish) siz hamma narsani to'xtatib, qayta ishlab chiqishga yoki spagetti kodi chalkashligiga olib keladi.

Shuning uchun hamma uchun "shunchaki jQuery" dan foydalanmaslik kerak. Siz jQuery haqida kanal tasmasi kabi o'ylashingiz mumkin. Uyning atrofidagi mayda-chuyda narsalarni tuzatish juda hayratlanarli, ammo agar ko'payib boraveradigan bo'lsangiz, chirkin ko'rinishga kirishasiz.

Boshqa tomondan, zamonaviy JavaScript ramkalari almashtiriladigan qismni 3D bosib chiqarishga o'xshaydi: ko'proq vaqt talab etiladi, ammo natija ancha toza va mustahkam bo'ladi.

Boshqacha qilib aytganda, zamonaviy JavaScript stackini o'zlashtirish bu qaerda boshlanishidan qat'iy nazar, aksariyat veb-ilovalar ertami-kechmi bo'linishning o'ng tomonida yakunlanadi. Ha, bu ko'proq ish, lekin afsuslanishdan ko'ra xavfsizroq.

Hafta 0: JavaScript asoslari

Agar sizda orqa tarafdan ishlaydigan toza dasturchi bo'lmasa, ehtimol siz ba'zi bir JavaScript-ni bilasiz. Agar siz buni bilmasangiz ham, agar siz PHP yoki Java dasturchisi bo'lsangiz, JavaScript-ga o'xshash C-ga o'xshash sintaksisi biroz tanish bo'lib qoladi.

Ammo agar JavaScript siz uchun to'liq sir bo'lsa, tushkunlikka tushmang. U erda sizni tezda tezlashtiradigan juda ko'p bepul manbalar mavjud. Masalan, Codecademy-ning JavaScript darslari boshlash uchun yaxshi joy.

1-hafta: Reaktsiya bilan boshlang

Endi siz asosiy JavaScript sintaksisini bilasiz va nima uchun JavaScript dasturlari juda murakkab ko'rinishini tushunasiz, keling suhbatlashaylik. Nimadan boshlash kerak?

Men javob reaktsiya ishonaman.

React bu Facebook tomonidan yaratilgan va ochiq manbalardan foydalanilgan UI kutubxonasidir. Boshqacha qilib aytganda, ushbu "HTML-ga ma'lumotlar" bosqichi (View Layer) e'tiborga olinadi.

Endi meni xato qilmang: Men sizga reaktsiyani tanlashingizni aytmayapman, chunki u eng yaxshi kutubxona (chunki u juda subyektiv), lekin juda yaxshi.

  • Reaktsiya eng mashhur kutubxona bo'lmasligi mumkin, ammo u juda mashhur.
  • Reaktsiya eng yengil kutubxona bo'lmasligi mumkin, ammo juda engil.
  • Reaktsiyani o'rganish oson bo'lmasligi mumkin, ammo o'rganish juda oson.
  • Reaktsiya eng oqlangan kutubxona bo'lmasligi mumkin, ammo u juda oqlangan.

Boshqacha qilib aytganda, har qanday vaziyatda ham reaktsiya eng yaxshi tanlov bo'lmasligi mumkin, ammo men ishonaman, bu eng xavfsizdir. Va menga ishoning, "yangi boshlaganingizda" bu sizning texnologik tanlovingiz bilan xatarlarni qabul qilish uchun mos vaqt emas.

React shuningdek sizni tarkibiy qismlar, dastur holati va fuqaroligi bo'lmagan funktsiyalar kabi foydali tushunchalar bilan tanishtiradi, bu sizning karerangiz davomida qaysi ramka yoki kutubxonadan foydalanishingizdan qat'iy nazar foydali ekanligini isbotlaydi.

Va nihoyat, React boshqa paketlar va u bilan yaxshi ishlaydigan kutubxonalarning katta ekotizimiga ega. Va uning mashhurligi shunchaki Stack Overflow kabi saytlarda ko'p yordam topishingiz mumkinligini anglatadi.

Men shaxsan Wes Bos tomonidan "Boshlanuvchilar uchun reaktsiya" kursini tavsiya qilaman. Men o'zimni Reaktsiya qilish usulini o'rgandim va u eng yaxshi React eng yaxshi amaliyotlari bilan mukammal ta'mirlandi.

Avval "JavaScript-ni to'g'ri o'rganish" kerakmi?

Agar siz juda metodik o'quvchi bo'lsangiz, boshqa biron bir narsa qilishdan oldin JavaScript asoslarini yaxshi bilishni xohlaysiz.

Ammo boshqalar uchun bu odamning anatomiyasi va suyuqlik dinamikasini o'rganish orqali suzishni o'rganish kabi ko'rinadi. Albatta, ularning ikkalasi ham suzishda juda katta rol o'ynaydi, ammo basseynda sakrash yanada qiziqarli!

Bu erda to'g'ri yoki noto'g'ri javob yo'q, barchasi sizning o'qish uslubingizga bog'liq. Haqiqat shuki, aksariyat asosiy reaktsiyalar darsliklarida, ehtimol, faqat kichik bir JavaScript-to'plamdan foydalaniladi, shuning uchun faqat hozir kerak bo'lgan narsalarga e'tibor qaratish va qolganlarini keyinroq qoldirish yaxshi.

Bu umuman JavaScript ekotizimiga ham tegishli. Hozirgi vaqtda Webpack yoki Babel kabi narsalar haqida tushuncha va tashvishlar haqida ko'proq tashvishlanmang. Aslida React yaqinda o'zingizning kichik buyruqlar qatori dasturi bilan chiqdi, bu sizga hech qanday tuzilishga ega bo'lmagan ilovalarni yaratishga imkon beradi.

2-hafta: Sizning birinchi reaktsiya loyihangiz

Siz hozir reaktsiya kursini tugatgansiz deylik. Agar siz menga o'xshasangiz, ikkita narsa haqiqatdir:

  • Siz allaqachon o'rgangan narsangizning yarmini unutgansiz.
  • Siz eslab qolgan yarmini amalda qo'llashni kutishingiz mumkin emas.

Men ramka yoki tilni o'rganishning eng yaxshi usuli bu shunchaki foydalanish deb o'ylayman. Va shaxsiy loyihalar yangi texnologiyalarni sinash uchun eng yaxshi imkoniyatdir.

Shaxsiy loyiha bitta sahifadan murakkab veb-ilovagacha bo'lgan har qanday narsa bo'lishi mumkin, ammo men o'z shaxsiy saytingizni qayta loyihalash yaxshi zamin bo'lishi mumkinligini his qilaman. Bundan tashqari, bilaman, ehtimol siz uni yillar davomida ishlamayapsiz!

Endi men oldinroq aytdimki, statik tarkib uchun bitta sahifali ilovalarni ishlatish haddan tashqari og'ir ishdir, lekin React aslida maxfiy qurolga ega: Gatsby, React statik sayt yaratuvchisi, bu sizga "aldash" va React-ning barcha afzalliklarini hech qanday ma'lumotsiz olish imkonini beradi. pastga.

Mana nima uchun Gatsby - React-ni boshlashning eng yaxshi usuli:

  • Oldindan tuzilgan veb-paket, siz bosh og'rig'isiz barcha afzalliklarni olasiz.
  • Katalog tuzilmasi asosida avtomatik marshrutlash.
  • Barcha HTML tarkibiy qismlar server tomonidan yaratilgan, shuning uchun siz ikkala dunyoning eng yaxshi xususiyatlariga ega bo'lasiz.
  • Statik tarkib GitHub Sahifalarida hech qanday server va juda oson xostingni anglatmaydi.

Men Gatsby-ni JavaScript-ning holati uchun saytdan foydalandim va marshrutlash, vosita konfiguratsiyasi yoki server tomonidan ko'rsatiladigan narsalar haqida qayg'urmasam, ko'p vaqtimni tejashga yordam beradi.

3-hafta: ES6-ni o'zlashtirish

Reaktsiyani o'rganishga intilib, ko'p o'tmay kod namunalarini nusxalash orqali olishim mumkin bo'lgan joyga etib bordim, lekin men hali ko'p narsalarni tushunmadim.

Xususan, men ES6 tomonidan kiritilgan barcha yangi xususiyatlar bilan tanish emas edim, masalan:

  • Ok vazifalari
  • Ob'ektni buzish
  • Sinflar
  • Spred operatori

Agar siz xuddi shu qayiqda bo'lsangiz, bir necha kun kerak bo'ladi va ES6-ni to'g'ri o'rganishingiz kerak. Agar sizga "Yangi boshlanuvchilar uchun reaksiya" kursi yoqsa, siz Wes-ning hamma uchun ajoyib ES6-ni sinab ko'rishingiz mumkin.

Yoki bepul manbalarni afzal ko'rsangiz, Nikolas Bevakuaning "Amaliy ES6" kitobini ko'rib chiqing.

ES6-ni o'zlashtirish uchun yaxshi mashqlar eski kodlar bazasidan (masalan, siz 2-haftada yaratganingiz kabi) o'tadi va imkon qadar kodingizni ES6-ning qisqa, terser sintaksisiga o'zgartiradi.

4-hafta: Davlat boshqaruvini qabul qilish

Shu nuqtada, siz statik tarkib bilan ta'minlangan oddiy React old qismini yaratishga qodir bo'lishingiz kerak.

Ammo haqiqiy veb-ilovalar statik emas: ular o'zlarining ma'lumotlarini biron bir joydan olishlari kerak, umuman olganda biron bir ma'lumot bazasi.

Endi siz shunchaki ma'lumotlarni shaxsiy tarkibiy qismlarga yuborishingiz mumkin edi, ammo bu tezda chalkashliklarga olib keladi. Masalan, ikkita tarkibiy qism bir xil ma'lumotni ko'rsatishi kerak bo'lsa nima bo'ladi? Yoki bir-birlari bilan gaplashish kerakmi?

Bu erda davlat boshqaruvi keladi. Sizning holatingizni (boshqacha aytganda, ma'lumotlaringizni) har bir komponentda ozgina saqlash o'rniga, siz uni yagona global do'konda saqlaysiz va keyin uni React tarkibiy qismlariga yuborasiz:

React dunyosida eng mashhur davlat boshqaruvi kutubxonasi Redux. Redux nafaqat ma'lumotlaringizni markazlashtirishga yordam beradi, balki bu ma'lumotlarni boshqarishda bir nechta qat'iy protokollar bilan ta'minlaydi.

Siz Redux-ni bank deb o'ylashingiz mumkin: siz o'zingizning mahalliy filialingizga borib, hisobingizning umumiy miqdorini qo'l bilan o'zgartira olmaysiz ("bu erda menga bir nechta qo'shimcha nollarni qo'shishimga ruxsat bering!"). Buning o'rniga siz depozit formasini to'ldirasiz, so'ng uni operatsiyani amalga oshirishga vakolatli bank kassiriga topshirasiz.

Xuddi shunday, Redux ham global holatingizni to'g'ridan-to'g'ri o'zgartirishga imkon bermaydi. Buning o'rniga siz harakatlarni reduktorlarga, operatsiyani bajaradigan maxsus funktsiyalarga o'tkazasiz va natijada yangi, yangilangan holatni qaytarasiz.

Ushbu qo'shimcha ishlarning natijasi - bu sizning dasturingiz bo'ylab yuqori darajada standartlangan va saqlanadigan ma'lumotlar oqimi va sizga vizual yordam berish uchun Redux Devtools kabi vositalardan foydalanish:

Yana bir bor siz do'stimiz Ues bilan qolishingiz va Redux-ni uning Redux kursi bilan o'rganishingiz mumkin, bu aslida mutlaqo bepul!

Yoki Redux-ning yaratuvchisi Dan Abramovning egghead.io-dagi video-seriyasini tomosha qilishingiz mumkin, bu ham bepul.

Bonus 5-hafta: GraphQL-ga ega API-larni yaratish

Hozircha biz faqat mijoz haqida ko'p gaplashdik va bu tenglikning yarmi. Hatto butun tugun ekotizimiga kirmasdan ham, har qanday veb-ilovaning muhim jihatlarini ko'rib chiqish muhimdir: ma'lumotlar serverdan mijozga qanday o'tish.

An'anaviy REST API-lariga jiddiy alternativa sifatida GraphQL (yana bir Facebook-ning ochiq manbali loyihasi) paydo bo'lishi bilan bu juda tez o'zgarib turishi ajablanarli emas.

Holbuki, REST API har biringiz oldindan belgilangan ma'lumotlar to'plamiga (aytaylik, / api / postlar, / api / sharhlar va hokazolar) kirish huquqini beradigan bir nechta REST yo'nalishlarini fosh qilsa, GraphQL mijozga kerakli ma'lumotni so'rashga imkon beradigan yagona nuqta ochib beradi.

Bir o'ylab ko'ring, qassob do'koniga, nonvoyxonaga va oziq-ovqat do'koniga bir necha bor tashrif buyurib, kimgadir xarid qilish ro'yxatini berib, ularni uchala tomon yo'llashga.

Ushbu yangi strategiya bir nechta ma'lumot manbalarini so'rash kerak bo'lganda ayniqsa ahamiyatli bo'ladi. Bizning xaridlar ro'yxatimiz misolida bo'lgani kabi, endi siz ushbu manbalardan bitta so'rov bilan ma'lumotlarni qaytarib olishingiz mumkin.

So'nggi bir yil ichida GraphQL bug 'chiqarmoqda, shuning uchun ko'pgina loyihalar (biz 2-haftada foydalangan Gatsby) uni qabul qilishni rejalashtirmoqda.

GraphQL o'zi protokol, ammo hozirda uning eng yaxshi bajarilishi, ehtimol Redux bilan yaxshi ishlaydigan Apollo kutubxonasidir. GraphQL va Apollo atrofida hali ham o'quv qo'llanmalari etishmayapti, ammo umid qilamizki, Apollo hujjatlari sizni boshlashingizga yordam beradi.

React & Co Beyond

Men sizga React ekotizimidan boshlashingizni tavsiya qildim, chunki bu xavfsiz tanlovdir, ammo bu faqat bitta yaroqli old qismning ustuni. Agar siz izlanishni davom ettirishni istasangiz, bu erda ikkita maslahat mavjud:

Vue

Vue nisbatan yangi kutubxona, ammo u rekord tezlik bilan o'sib bormoqda va uni yirik kompaniyalar, ayniqsa Baidu va Alibaba (Xitoyning Google va Xitoyning Amazonkalari) foydalanadigan Xitoyda qabul qilishgan. Va shuningdek, Laravelning PHP ramkasining rasmiy old qismidir.

React bilan taqqoslaganda, uning asosiy sotish nuqtalari:

  • Rasmiy ravishda xizmat ko'rsatiladigan marshrutizatsiya va davlat boshqaruvi kutubxonalari.
  • Ishlash haqida o'ylash.
  • HTML asosidagi shablonlarni ishlatganingiz uchun pastki egri chiziq tufayli.
  • Kam qozon qozon kodi.

Ko'rinib turibdiki, hali ham reaktsiyani Vue-dan ustun qo'yadigan ikkita asosiy narsa - React ekotizimi va React Native (bu haqda keyinroq). Ammo Vue tez orada qo'lga kiritilishini ko'rib hayron bo'lmayman!

Elm

Agar Vue - bu eng qulay variant bo'lsa, Elm - eng zamonaviy variant. Qarag'ay - bu shunchaki ramka emas, balki JavaScript-ni to'ldiradigan yangi til.

Bu yaxshilangan ishlash, majburiy semantik versiya va ish vaqti davomida istisnolar kabi bir qator afzalliklarga olib keladi.

Men Elm-ni shaxsan sinab ko'rmadim, lekin do'stlarim tomonidan iliq tavsiya qilindi va Elm foydalanuvchilari bu bilan juda xursand bo'lishadi (JavaScript shtati so'rovida 84% qoniqish reytingida ko'rsatilgan).

Keyingi qadamlar

Hozirgi vaqtda siz React old qismining stackini juda yaxshi tushunishingiz kerak va umid qilamanki, u bilan samarali ishlang.

Bu degani, bu siz qilganingizni anglatmaydi! Bu JavaScript ekotizimi bo'ylab sayohatingizning boshlanishidir. Oxir oqibat siz kiritishingiz mumkin bo'lgan ba'zi boshqa mavzular:

  • Serverda JavaScript (Node, Express ...)
  • JavaScript sinovi (Jest, Ferment ...)
  • Asboblarni yaratish (veb-paket ...)
  • Tizimli tizimlar (TypeScript, oqim ...)
  • JavaScript dasturlaringizda CSS bilan ishlash (CSS Modullari, Styled Component ...)
  • Mobil ilovalar uchun JavaScript (React Native…)
  • Ish stoli ilovalari uchun JavaScript (Electron…)

Men bu erda bularning hammasini qamrab ololmayman, lekin umidsizlikka tushmang! Birinchi qadam har doimgidan ham qiyin va nima deb o'ylang: siz ushbu o'quv rejasini o'qib, shunchaki oldingiz.

Endi siz ekotizimning turli qismlari bir-biriga qanday mos kelishini tushunganingizdan keyingina nimani o'rganishni xohlasangiz shuni yig'ish va har oy yangi texnologiyani buzish kerak.

Aloqada bo'lish

Ushbu o'quv rejasi sizga foydali bo'ldimi? Keyingi haqida JavaScript-ning qaysi sohasi haqida yozishni xohlar edingiz? Menga xabar berish uchun sharh yoki tvit qoldiring!

Agar siz keyingi safar xabarimni nashr etishimni bilmoqchi bo'lsangiz, siz shuningdek JavaScript-ning pochta holati ro'yxatiga yozilishingiz mumkin.