Node.js-ning asosiy versiyasi: Eng yaxshi foydalanish holatlari, asboblar va cheklovlar

2009 yilda yangi texnologiya kambag'al rivojlanishning ulkan olamida o'zining kamtar boshlanishiga sabab bo'ldi.

Node.js - bu JavaScript-ni server tomoniga etkazishning birinchi qonuniy urinishi.

Bugun siz "Node" haqida eshitmagan veb-ishlab chiqaruvchini topishga qiynalasiz.

Tashkil etilganidan so'ng, u jamoalarni bo'lib tashladi, forum urushlarini qo'zg'atdi va ko'plarni umidsizlikka olib keldi.

Men dramatik tuyulgan deb o'ylaysizmi?

Tez Google qidiruvi. Siz ziddiyatlarning oltin koniga tushasiz. Siz ba'zi xatolarga duch kelishingiz mumkin:

"Ish uchun eng yaxshi vositadan foydalaning" aksiomasiga nima bo'ldi? Server tomonidagi JavaScript hech qachon ish uchun eng yaxshi vosita emas. "

Ba'zilari hatto she'riy:

"Qaytadan jahannam haqiqatdir
Nosozliklarni tuzatish - bu kaltak
Serverlar uchun JavaScript yaratilmagan
[…] “

Va ba'zilari ko'proq ... to'g'ri:

"Node.js bu yoqimsiz dasturiy kutubxona va men undan foydalanmayman."

Ushbu xabar uchun men Node.js va JavaScript-ni yozuv tili sifatida yozishni to'g'ri o'rnatish vaqti keldi deb o'yladim.

Bugun men muhokama qilmoqchiman:

  • Node.jsning hozirgi holati;
  • Uning eng yaxshi foydalanish holatlari;
  • Uning cheklovlari;
  • Node oldinga siljishidan nimani kutishimiz mumkin.

Node.js holati

Unga kirishdan oldin, Node.js nima ekanligini aniq eslatib o'tamiz:

Bu JavaScript V8 JS dvigatelida yaratilgan JavaScript ish vaqti. Node.js hodisani boshqaradigan, blokirovka qilinmaydigan I / O modelini ishlatadi, bu uni engil va samarali qiladi.

Endi men tanishtiruvchi bo'yalgan Node-ni ishlab chiquvchi kabus sifatida bilaman. Haqiqat keng tarqalgan. Ammo mening so'zlarimni u uchun qabul qilmang:

Stack Overflow-ning 2017 yil uchun ishlab chiquvchilar tomonidan o'tkazilgan so'rovi shuni ko'rsatadiki, u hozirda ishlab chiqaruvchilar tomonidan eng ko'p ishlatiladigan texnologiyalar.

So'nggi besh yil ichida eng tez o'sib boradigan til, C # va PHP kabi tillar esa o'z kuchini yo'qotmoqda. JavaScript-ning o'zi ham yo'lda.

Node.js va JavaScript-ni asosiy til sifatida qabul qilinishidagi asl nusxadan tezkor o'tish jarayonini qanday tushunishimiz mumkin?

Sodda qilib aytganda, Node “atigi bir fad” davrini o'tkazib yubordi va mustahkam etuklik holatiga o'tdi. O'zining atrofida kuchli va tobora o'sib boradigan jamoa va ekotizimni barpo etdi. Aslida, uning paket menejeri, npm hozirda Internetdagi eng katta dasturiy ta'minot registridir.

Node.js nafaqat veb-ishlab chiqarishni yaratishda inqilob qilibgina qolmay, balki mijozlar tomoni uchun jiddiy muhandislik olib, ishlashni frontendga olib keldi. Bundan tashqari, bu umumiy JavaScript ekotizimining kengayishida va Angular, React yoki Vue kabi zamonaviy JS asoslarini takomillashtirishda muhim rol o'ynaydi.

Vaqt o'tishi bilan, odamlar dastlabki kunlardagi ko'plab tushunchalar noto'g'ri ekanligini isbotladi:

JavaScript va Node.js-ni tuzatish juda qiyin.

→ Siz Chrome-ning ishlab chiquvchi asboblarini to'playdigan tugun nazoratchisidan foydalanib, oldingi tuzatish tajribasini ishlatishingiz mumkin.

Joyent-dagi odamlar ilg'or Node disk raskadrovka va profilga oid ikkita yoki ikkita narsani bilishadi: ularning DTrace universal tuzatuvchisi ancha oldin chiqarilgan!

Siz uni korxona darajasidagi server dasturlarida ishlata olmaysiz.

→ Bunday muhandislikni Node.js yordamida amalga oshirish mumkin: unda sizning qo'lingiz bilan olib boriladigan shunchaki o'rnatilgan vositalar mavjud emas. Netflix, PayPal, Walmart va Yahoo kabi katta o'yinchilar! hamma undan foydalangan. Bu haqida keyinroq.

JavaScript bu dinamik til, shuning uchun siz kompilyatordan statik ruxsat olmaysiz.

→ Bu haqiqat. Biroq, TypeScript va Flow kabi vositalar ushbu til xavfsizligini ta'minlash uchun paydo bo'ldi. Google-ning yopilish kompilyatori ham bu erda hiyla ishlatishi mumkin.

Serverlar uchun JavaScript yaratilmagan.

→ Xo'sh, JavaScript allaqachon serverda bo'lgan, Netscape o'z brauzerida JS-ni 1995 yilda yaratgan edi! Bu ekrandagi televizion dastur edi, chunki uning ustidan to'liq monopoliya bo'lgan.

Va ro'yxat davom etadi va davom etadi.

Shunday qilib, "Node" ning joylashuvi to'g'risida yaxshiroq tasavvurga ega bo'lish uchun keling, eng yaxshi foydalanish holatlari va cheklovlarga o'taylik.

Server uchun JavaScript: Best Node-dan foydalanish holatlari

Xo'sh, nima uchun siz hatto Node.js-ni sizning to'plamingizda zaxira sifatida ko'rib chiqishingiz kerak?

Umumiy afzalliklari va xususiyatlari

Sizga bir nechta tezyurar xabarlarni yuborishga ijozat bering:

  • Oldingi versiyasini JavaScript bilan ishlagan deb taxmin qilish juda katta ehtimol. Bunday holda, stakandagi kodlarning universalligi yodda tutish uchun katta afzallikdir.
  • Veb-sahifa kabi vositalar har ikkala uchida ham kodni qayta ishlatishga yordam beradi va tizimning barcha darajalarida mos keladi.
  • JavaScript to'liq to'plamida siz brauzerda ham, serverda ham uzluksiz ravishda veb-dastur yozishingiz mumkin. Bu juda hayajonli.

Ba'zilar buni Node.js uchun moslama sifatida ko'rishdi va bu sizni JavaScript-ni to'liq tanlashga majbur qilishini ta'kidlaydilar. Bu mutlaqo to'g'ri emas, chunki siz hali ham ish uchun to'g'ri vositani bemalol ishlatishingiz mumkin.

Aytaylik, siz video kodlashingiz kerak, siz ezoterik Node.js kutubxonasini qidirib topmaysiz: shunchaki Node buyruq satrida tasdiqlangan vositalarni chaqirishingiz mumkin. Yoki sizda talab qilinadigan murakkab hisob-kitoblarni amalga oshiradigan Python kutubxonasi bo'lsa, mikro xizmatni taqdim etishingiz va ushbu funktsiyalarni REST API orqali qo'ng'iroq qilishingiz mumkin.

  • Async / kutish xususiyati biz asenkron kodni yozish usulimizni butunlay o'zgartirib yubordi, aslida uni sinxron kodga o'xshatib ko'rsatdi. Vode.6-dan beri Node.js tomonidan qo'llab-quvvatlanadigan, bu xususiyat Callback-ning dahshatli echimini hal qilishning bir qismi sifatida kelgan.

Yuqorida aytilganlarning barchasi Node.js-ni quyidagi foydalanish holatlari uchun ajoyib qiladi.

1-vaziyatdan foydalaning: Haqiqiy vaqtda ishlatiladigan ilovalar

Birgalikda ishlatiladigan ilovalar (Trello, Google Docs), jonli chat, tezkor xabarlar va onlayn o'yinlar - bu Node.js arxitekturasidan foyda keltiradigan RTAlarning barcha namunalari.

Ushbu ilovalar foydalanuvchilar darhol va joriy deb biladigan vaqt ichida ishlaydi. Node.js spetsifikatsiyalari bu dasturlarning samarali ishlashi uchun zarur bo'lgan past kutish vaqti uchun echimdir.

Bu bir nechta mijoz so'rovlarini ko'rib chiqishni osonlashtiradi, kutubxona kodi paketlarini qayta ishlatishni va mijoz va server o'rtasida ma'lumotlarni sinxronlashtirishni juda tez amalga oshiradi.

2-vaziyatdan foydalaning: bitta sahifali ilovalar

SPA bu bitta HTML sahifani yuklaydigan veb-ilovalar bo'lib, foydalanuvchi ilova bilan o'zaro aloqada bo'lgani kabi ushbu sahifani dinamik ravishda yangilaydi. Ishning ko'p qismi JavaScript-da, mijoz tomonidan amalga oshiriladi.

Bular veb-taraqqiyotning g'oyat ajoyib evolyutsiyasi bo'lsa ham, ular ko'rsatishga kelganda ba'zi muammolarga duch kelishadi. Bu, masalan, SEO ishiga salbiy ta'sir ko'rsatishi mumkin. Node.js muhitida serverga ishlov berish bu muammoni hal qilishning mashhur variantidir.

3-vaziyatdan foydalaning: Masshtablilik

Node.js hech qachon kerak bo'lgandan kattaroq bo'lmaydi. Uning go'zalligi shundaki, foydalanish holatiga qarab sozlash uchun etarli minimalist. Ish unumdorligi, bu kalit.

Hatto uning nomi bir-biri bilan aloqa qiladigan bir nechta kichik taqsimlangan tugunlarni yig'ish uchun yaratilganligini ta'kidlaydi.

Tugunning modulligi sizga shishiradigan, haddan tashqari yuklangan ekotizim bilan shug'ullanmasdan kichik dasturlarni yaratishga imkon beradi. Siz ish uchun kerakli vositalarni tanlaysiz va keyin kerak bo'lganda o'lchovni amalga oshirasiz.

Ushbu kengayish qobiliyati asoratlardan xoli emas va agar ehtiyot bo'lmasangiz, Node.js ... xavfli bo'lib qolishi mumkin.

Node.js-ning cheklovlari

Qo'pol qilib aytganda, Node.js sizga o'zingizni oyoqqa osongina osib qo'yishga imkon beradi. Konfiguratsiya va sozlash narxga tushadi, va agar siz tajribasiz yoki ahamiyatsiz bo'lsangiz, o'zingiz yoki mijozingizni yo'qotishingiz mumkin.

An'anaviy yondashuvdan farqli o'laroq, sizning orqa qismini qo'llab-quvvatlaydigan tuzilmani yaratasiz. Bu juda ko'p qarorlarni qabul qilishni o'z ichiga oladi, ya'ni sizning loyihangiz qanday bo'lsa, nima qilayotganingizni va qaerga ketayotganingizni bilishingiz kerak.

Masalan, Ruby va uning mashhur ramkasi Ruby on Rails, masalan, biz "konfiguratsiya bo'yicha konvensiya" paradigmasiga o'rganib qolgan edik. Ushbu an'anaviy ramkalar ishlab chiquvchilarni qo'lidan ushlab, xavfsiz yo'ldan ozroq qochishgan.

Node.js bilan bu poshnadan oshib ketadi. Ishlab chiquvchilarga ko'proq erkinlik beriladi, ammo noto'g'ri qaror qabul qilsangiz, yo'l qorong'i va qo'rqinchli ko'rinishi mumkin.

Shunda siz "qo'ng'iroqni qaytaradigan jahannam" haqiqatan ham mavjudligini bilib olasiz.

Bu siz katta server dasturlarini yarata olmaysiz degani emas, lekin siz doimo ushbu omillarni yodda tutishingiz kerak.

Hatto Node.js-ning yaratuvchisi Rayan Dahl boshqa loyihalar ustida ishlashdan oldin tizim cheklovlarini anglab etdi. U bu borada juda shaffof edi:

"[...] Menimcha, Node katta serverli veb-sayt yaratish uchun eng yaxshi tizim emas. Men buning uchun Go-ni ishlatardim. Ochig'ini aytganda, men tugunni tark etganimning sababi. Haqiqatan ham, bu serverlar uchun eng yaxshi tizim emasligini anglab etdim. "

Yuqorida aytib o'tilgan tushunchalar Node.jsning qisqa umri davomida bir vaqtning o'zida hamma narsaga to'g'ri keldi va hanuzgacha qaysidir ma'noda mavjud. Bu etuk va etuk bo'lib, vaqtni sarflasangiz, ular atrofida ishlashingiz mumkin. Hamjamiyat taklif qiladigan vositalar sizga har qanday narsani qilish imkoniyatini beradi.

Ommabop JavaScript vositasi

Yaqinda, agar siz JS to'liq to'plamini yig'ish haqida o'ylasangiz, birinchi narsa MEAN (MongoDB, Express, Angular & Node) stack edi.

Bugungi kunda ham tegishli tegishli vositalar guruhidir, ammo JavaScript ekotizimning orqa tomonida, orqa tomonida va shu bilan cheklanmaslik uchun shunchalik ko'p narsalar mavjud.

Mana 2017 yilda eng mashhur JavaScript dasturiy ta'minotining ramkalari:

  • Express.js hanuzgacha u erda eng mashhur Node.js tizimidir. Bu tezkor, ochilmagan va minimalist veb-ramka. Bu juda tez rivojlandi, chunki u sodda va sodda qilingan. Ehtimol, bu modulli yondashuv bilan engil tizimning Node.jsning asosiy g'oyalariga yaqinroq narsa.
  • O'z navbatida, Meteor toza JavaScript va Node.js-dan katta arxitekturada foydalanadi. Meteor o'zi ekotizim bo'lib, u yanada murakkab server dasturlarini yaratish uchun yaxshi bo'lishi mumkin. Ammo, agar siz biron bir o'rnatilmagan narsani qilishni xohlasangiz, undan foydalanish qiyinlashishi mumkin.
  • Sails.js - bu real vaqt rejimida, MVC doirasi. U MVC Ruby on Rails modelini taqlid qilish uchun ishlab chiqilgan, ammo zamonaviy ilovalar talablarini qo'llab-quvvatlaydi. Buni kengaytiriladigan, xizmatga yo'naltirilgan arxitekturaga ega ma'lumotlarga asoslangan API orqali amalga oshiradi.
  • Koa.js Expressning orqasida joylashgan jamoa tomonidan ishlab chiqilgan. "Node.js uchun yangi avlod veb-doirasi" sifatida sotilgan, bu veb-ilovalar va API uchun kichikroq, ifodali va mustahkam poydevordir.

Ko'p narsalarni o'rganib chiqing, shuning uchun men bir nechta haqiqiylarni tashlab yuboraman: Nest.js, Hapi.js, Socket.io, Mean.js, Total.js, Derby.js & Keystone.js.

Oldinga siljish

Ushbu maqolaning maqsadi Node.js-ning eng yaxshi orqa muhitni taklif qilishi yoki qilmasligi to'g'risida yakuniy xulosaga kelish emas edi. Siz undan foydalanishingiz kerakligi haqida ham aytilmagan.

Va men shubhasiz u erga chiqmayman va bu Java, C #, C ++, PHP, Python, Go yoki Ruby kabi boshqa mashhur tillarnikidan yaxshiroq ekanligini aytaman.

O'ylaymanki, bu erda men Node.js va JavaScript-da o'qigan qora va oq nuqtai nazarlar orasida kulrang maydonni asl nusxa sifatida chizish.

Sizga yoqadimi yoki yo'qmi, Node.js bu erda ko'rinishi aniq. ;)

Vaqt o'tishi bilan Node.js qiziqishi

Hech qachon biron bir ramkani barcha muammolaringizni sehrli tarzda hal etadigan kumush o'q sifatida o'ylamasligingiz kerak. Node.js veb-taraqqiyotning ulkan olamidagi yana bir vosita. Bu ba'zi vaziyatlarda ishni juda yaxshi bajaradi, ammo boshqalarda og'riq bo'ladi.

Shundan so'ng, har qanday ishlab chiqaruvchining vazifasi har qanday yangi loyiha uchun to'g'ri stack haqida o'ylashdir. O'zingizning barcha variantlaringizni bilishingiz va boshqa biron bir alternativani bekor qilmaslik juda muhimdir.

Masalan, Snipcart .NET arxitekturasida ishlaydi, u ham naysayerlarning ulushiga ega. Nima uchun uni tanladik?

Bu o'sha paytda ish uchun to'g'ri vosita edi.

Umid qilamanki, ushbu sharh Node haqida fikringizni shakllantirishga yordam beradi!

Node.js haqida qanday fikrlaringiz bor? Va javascript tili sifatida? Siz baham ko'rmoqchimisiz? Sizda ko'pchilik bu haqda aytadigan narsangiz bor, shuning uchun sharhlardagi munozarani boshlash / qo'shilishdan tekin bo'ling! Agar siz ushbu xabarni yoqtirgan bo'lsangiz, iltimos, uni Twitter-da baham ko'ring.

Ushbu xabar dastlab Snipcart blogida va yangiliklar byulletenida e'lon qilingan.