11 puan yazan xguru 2023-10-26 | 1 yorum | WhatsApp'ta paylaş
  • Buffer tipi, Node.js'in ilk günlerinden beri ikili veri işlemenin temel taşıydı
  • Ancak bugün Uint8Array, JavaScript'in yerleşik türü ve platformlar arası da çalışıyor
  • Buffer, Uint8Array'in bir örneği olsa da diğer JavaScript ortamlarında kullanılamayan çeşitli ek yöntemler sunuyor
    • Bu nedenle Buffer yöntemlerini kullanan kodlar polyfill gerektiriyor ve birçok önemli paketin tarayıcıyla uyumlu olmamasına yol açıyor
    • Ayrıca Buffer#slice() ile Uint8Array#slice() farklı davrandığı için öngörülemez sonuçlar ortaya çıkabiliyor

Plan

  • Tüm paketleri Bufferdan Uint8Arraye taşımaya karar verdim
  • Buffer muhtemelen hiçbir zaman kaldırılmayacak ve tamamen kullanım dışı da kalmayacak, ancak en azından topluluk yavaş yavaş ondan uzaklaşabilir
  • Benim umudum, Node.js ekibinin en azından Buffer kullanımını teşvik etmemeye başlaması

Nasıl

  • Önce Uint8Array ile Buffer arasındaki ince uyumsuzlukları öğrenin
  • Geçişi kolaylaştırmak için uint8array-extras paketini oluşturdum
  • Kodunuz Buffer alıyor ama Buffera özgü yöntemleri kullanmıyorsa, yalnızca dokümantasyonu ve türleri Uint8Array olarak güncellemeniz yeterli
    • Girdi türünü Bufferdan Uint8Arraye çevirmek breaking olmayan bir değişikliktir; çünkü Buffer, Uint8Arrayin bir örneğidir
  • Dönüş türünü Bufferdan Uint8Arraye çevirmek ise breaking bir değişikliktir; çünkü tüketen taraf Buffera özgü yöntemleri kullanıyor olabilir
  • Uint8Arrayi mutlaka Buffera dönüştürmeniz gerekiyorsa Buffer.from(uint8Array) (veriyi kopyalar) veya Buffer.from(uint8Array.buffer, uint8Array.byteOffset, uint8Array.byteLength) (kopyalamaz) kullanılabilir. Ama genelde daha iyi bir yol vardır
  • Geçiş adımları şunlar:
    • 'node:buffer' importundan tüm import {Buffer} ifadelerini kaldırın
    • Global Buffer kullanımını her yerde kaldırın
    • Buffera özgü yöntemleri kullanmayı bırakın

Sorular

  • Zaten en başta neden Buffer vardı? : Buffer, Uint8Array ortaya çıkmadan çok önce oluşturuldu
  • Uint8Array kullanarak Base64'e from/to dönüşümü nasıl yapılır? : Şimdilik uint8array-extras kullanın. Sonunda bunun JavaScript'te yerleşik olarak desteklenmesi muhtemel

1 yorum

 
dodok8 2023-10-27

Ortadaki kütüphane gerçekten çok iyiymiş.