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
Ortadaki kütüphane gerçekten çok iyiymiş.