Node.js Buffer'a veda: Artık Uint8Array'e geçme zamanı
(sindresorhus.com)Buffertipi, 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
Bufferyöntemlerini kullanan kodlar polyfill gerektiriyor ve birçok önemli paketin tarayıcıyla uyumlu olmamasına yol açıyor - Ayrıca
Buffer#slice()ileUint8Array#slice()farklı davrandığı için öngörülemez sonuçlar ortaya çıkabiliyor
- Bu nedenle
Plan
- Tüm paketleri
BufferdanUint8Arraye taşımaya karar verdim Buffermuhtemelen 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
Bufferkullanımını teşvik etmemeye başlaması
Nasıl
- Önce
Uint8ArrayileBufferarasındaki ince uyumsuzlukları öğrenin - Geçişi kolaylaştırmak için
uint8array-extraspaketini oluşturdum - Kodunuz
Bufferalıyor amaBuffera özgü yöntemleri kullanmıyorsa, yalnızca dokümantasyonu ve türleriUint8Arrayolarak güncellemeniz yeterli- Girdi türünü
BufferdanUint8Arraye çevirmek breaking olmayan bir değişikliktir; çünküBuffer,Uint8Arrayin bir örneğidir
- Girdi türünü
- Dönüş türünü
BufferdanUint8Arraye çevirmek ise breaking bir değişikliktir; çünkü tüketen tarafBuffera özgü yöntemleri kullanıyor olabilir Uint8Arrayi mutlakaBuffera dönüştürmeniz gerekiyorsaBuffer.from(uint8Array)(veriyi kopyalar) veyaBuffer.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ümimport {Buffer}ifadelerini kaldırın- Global
Bufferkullanımını her yerde kaldırın Buffera özgü yöntemleri kullanmayı bırakın
Sorular
- Zaten en başta neden
Buffervardı? :Buffer,Uint8Arrayortaya çıkmadan çok önce oluşturuldu Uint8Arraykullanarak Base64'e from/to dönüşümü nasıl yapılır? : Şimdilikuint8array-extraskullanın. Sonunda bunun JavaScript'te yerleşik olarak desteklenmesi muhtemel
1 yorum
Ortadaki kütüphane gerçekten çok iyiymiş.