Node.JS v6.0.0 haqida
Bir necha kun oldin Node.JSning naqd 6 versiyasi chiqdi. Ha esimda, Node.jsning 0.10 versiyasidan ishlashni boshlagan edim 🙂
O’zgarishlar ko’p bo’ldi, v8ning yangilanganligi sababli(v8 dvijokning 5-versiyasi) avvalgi versiyada yozilgan kodlaringiz buzilib qolishi mumkin. Manda Gulpdagi loyiha buzilib qoldi, darhol o’tishni tavsiya qilmayman. Shu yilning oktabr oyidan boshlab v6.x versiyasi LTS maqomini oladi va uni 2018 yilning apreligacha qo’llab quvvatlashadi.
Dasturlarda havfsizlikni oshirish maqsadida, Bufferning ishlash logikasi o’zgartirildi. Endi oldindan Proxy, Reflect va kengayrilingan holda ES 2015 ishlatish mumkin.
Hozirgi LTS yani v4, 2017 yilgacha qo’llab quvvatlanadi. Dasturchilar 6-versiyaga o’tib olishlari uchun, 5-versiya yana 2 oy qo’llab-quvvatlanadi. v0.10 va v0.12 esa shu yilning noyabr oyida butunlay to’xtatiladi.
API o’zgarishlar.
changelogdagi eng muhim o’zgarishlar yozildi.
Buffer
Buffer obyektining konstruktori o’zini ishlashi o’zgartirdi. Eski konstruktor deprecated statusini olar edi, ana endi esa uni alohida metodga chiqarishdi.
// Oldin new Buffer(size); // Yangi versiyada Buffer.alloc(size);
Oldindan buffer nollar bilan to’lib oladi, agar talab qilinmasa
Buffer.allocUnsafe
ishlating. Yozuvli buffer yoki boshqa bufferlarni aniqlab olish uchun Buffer.from
metodi qo’shildi:
// Oldin new Buffer(str, 'utf8'); // Yangi versiyada Buffer.from(str, 'utf8');
EventEmitter
EventEmitter obyektida yangi
prependListener
va prependOnceListener
metodlari paydo bo’ldi, ularning ikkalasi ham hodisalarni qayta ishlash jadvalining boshiga yangi hodisani qayta ishlovchisini qo’shadi.
var newEvent = new EventEmitter(); var result = []; newEvent.on('event', () => result.push(1)); newEvent.prependListener('event', () => result.push(2)); newEvent.emit('event'); result; // -> [2, 1]
Bu misolda avval resultga 1ni jo’natyapmiz, unda keying esa prependListener orqali 2 jo’natyapmiz, resultda olganimizda biz kutganimizday avval 2, undan keyin esa 1 kelmoqda.
FileSystem
fs.realpath
va fs.realpathSync
metodlar libuvning yangi logikasini oldi, endi ular qo’shima xatoliklarni qaytarishi mumkin. Yana bu metodlarni chiqarishda Buffer ishlatish mumkin.
HTTP
HTTP server endi klientga xatolik chiqarish uchun clientError hodisani generatsiya qilib beradi. Namunani
bu yerda ko’rishingiz mumkin.
Process
Muammolar to’g’risida ogohlantiruvchi mexanizm ishlab chiqildi. stderrni kirgazish o’rniga endi ogohlatirishni yangi metod bilan amalga oshirsa bo’ladi:
process.emitWarning('nimadur xato ishlamoqda :) ');
Yana Error obyekitini jo’natish ham mumkin.
Stream
Streamlar obyekt ko’rinishida endi null yozuvlarni qabul qila olmaydi.
URL
url.resolve metodi host o’zgarganda username va passwordni tashlab yuboradi.
Windows
WinXP va Vistani endi Node.js qo’llab quvvatlamaydi! Urrraaaa G’alaba 🙂
v8 yangilandi
Node.jsda, endi ECMAScript 2015ning «Крутой» imkoniyatlarini ishlatsa bo’ladi.
Destruktiv qiymat olish
Massiv yoki obyektning qiymatini birdaniga o’zgaruvchida tanlasa bo’ladi.
let [a, b] = [1, 2]; let {c, e} = {c: 3, e: 4};
Funksiyaning destruktiv argumentlari
Obyekt yasash yoki massivni funksiyaga argument sifatida jo’natilayotgan paytda ko’rsatish mumkin:
function fn({arg}) { return arg.site; } fn({arg: '1', site:'Texnoman.uz'}); // -> Texnoman.uz
Oldidan qiymat aniqlash
Ana endi oldingan qiymat berib qo’yishimiz mumkin:
function doSomething(name = 'Farrukh') { console.log('My name is %s.', name); } doSomething(); // -> My name is Farrukh.
Proxy va Reflect
Proxy va Reflect obeyktlari Terminal(cmd) yordamisiz ishlatish mumkin.
Arraydan Inheritance olish(nasl olish)
Nihoyat Array obyektidan to’liq inheritance olish mumkin.
Menincha Node.jsning yaxshi versiyasi bo’ldi. Aytib o’tay v6.x LTS maqomini oladi ungacham anacha o’zgarishlar bo’lishi mumkin. Yangi o’zgarishlar haqida yangi maqolalarda aytib boraman. Hozircha shular.
Good Luck!
Umumiy Dasturlash
Node.JS v6.0.0 haqida