7 puan yazan GN⁺ 2024-10-20 | 4 yorum | WhatsApp'ta paylaş
  • İlk v5 PR'ı 10 yıl önce açılmıştı; sonunda merge edildi ve yayımlandı
  • Gelecek sürümlerde daha etkili değişiklikleri hayata geçirmek için kasıtlı olarak sadeleştirilmiş bir sürüm
  • Ayrıca bunun, Express'in yeniden hareketlendiğini Node.js ekosistemine duyurma amacı da var

Başlıca değişiklikler

  • Node.js sürüm desteği değişiklikleri

    • Node.js 0.10 desteği sonlandırıldı, destek Node 18 ve üzeri olarak değiştirildi
    • Eski Node.js sürümlerini destekleme nedeniyle geciken performans ve bakım açısından önemli değişiklikler sorunu çözüldü
    • Yeni dil ve runtime özelliklerinin benimsenmesi, artık gerekli olmayan bağımlılıkların kaldırılması mümkün hale geldi
    • Eski Node.js sürümlerini kullanan şirketlerin yaşadığı zorlukların farkında olarak, HeroDevs ile iş birliği yapılıp v4 desteği bittikten sonra da kritik güvenlik yamaları sunan "süresiz destek" sağlanacak
  • Yol eşleme ve regex değişiklikleri

    • path-to-regexp kütüphanesi 0.x'ten 8.x'e güncellendi ve yıllar içindeki birçok değişiklik birleştirildi
    • Regex alt ifadeleri (ör. /:foo(\\d+)) desteği kaldırıldı
      • ReDoS saldırılarını önlemek için kaldırıldı
      • Geçiş yöntemi: sağlam input doğrulama kütüphaneleri kullanılması öneriliyor
    • Yaygın yol kalıpları için sadeleştirilmiş desenler eklendi
      • :name?, {:name} olarak değişti
      • *, *name olarak değişti
      • (, ), [, ], ?, +, ! karakterleri ayrılmış karakterler olarak eklendi
    • Sıralı sayısal parametre desteği kaldırıldı. Artık tüm parametrelere isim verilmesi gerekiyor
  • Promise desteği

    • Middleware içinde oluşan hatalar nedeniyle rejected olan Promise'ler için destek eklendi
    • Resolved Promise içinde next çağrısı buna dahil değil
    • Artık çoğu durumda middleware şu şekilde yazılabilir:
      app.use(async (req, res, next) => {  
        req.locals.user = await getUser(req);  
        next();  
      });  
      
  • Body parser değişiklikleri

    • CVE-2024-45590 azaltımı için urlencoded body derinliğini özelleştirme seçeneği eklendi (varsayılan 32)
    • Artık kullanılmayan bodyParser() birleşik middleware'i kaldırıldı
    • req.body artık her zaman {} olarak başlatılmıyor
    • urlencoded parser'ın extended varsayılanı false olarak değiştirildi
    • Brotli kayıpsız veri sıkıştırma desteği eklendi
  • Artık kullanılmayan method signature'ların kaldırılması

    • res.redirect('back') ve res.location('back'): artık 'back' sihirli string'i desteklenmiyor. Bunun yerine açıkça req.get('Referrer') || '/' kullanılmalı
    • res.send(status, body) ve res.send(body, status) signature'ları: res.status(status).send(body) kullanılmalı
    • res.send(status) signature'ı: basit status yanıtları için res.sendStatus(status), opsiyonel body ile status code göndermek için res.status(status).send() kullanılmalı
    • Diğer artık kullanılmayan method signature'lar da kaldırıldı (ayrıntılar için migration guide'a bakın)
  • Geçiş ve güvenlik rehberi

    • v4'ten v5'e geçen geliştiriciler için ayrıntılı bir migration guide sunuluyor
    • Express'in güvenli ve emniyetli kullanımı için kullanıcı girdisi doğrulama ve güvenlik pratikleri gibi alanlarda önemli içgörüler sağlayan kapsamlı bir tehdit modeli sunuluyor

GN⁺ görüşü

  • Express v5, Express'in Node.js ekosisteminde yeniden hareketlendiğini duyurmaya odaklanan bir sürüm. Eski Node.js sürümlerinin bırakılması, güvenlik sorunlarının çözülmesi ve bakımın sadeleştirilmesine odaklanıyor
  • Bu sürüm, ekosistemdeki engelleri kaldırmak ve gelecekteki sürümlerde daha büyük etkisi olan değişiklikleri mümkün kılmak için bilinçli olarak sade tutuldu
  • Express, Node.js için hızlı, opinionated olmayan ve minimal bir web framework'ü olma felsefesine sahip. Bu yaklaşım, kullanıcı girdisi doğrulama ve güvenlik pratikleri gibi alanlarda önemli içgörüler sağlıyor
  • Express v5'e geçiş için ayrıntılı bir rehber ve kapsamlı bir tehdit modeli sunularak geliştiricilerin Express'i güvenli ve istikrarlı şekilde kullanmasına yardımcı olunuyor
  • Express projesinin yeni yöneticileri, Express ekosistemini istikrarlı ve güvenilir bir araç haline getirmeyi hedefliyor. Bunun için toplulukla birlikte sorunları çözüp iyileştirmeler yapmayı planlıyor

4 yorum

 
aer0700 2024-10-22

Ah, sonunda promise desteği gelmiş. Biz hâlâ expressi çok kullanıyoruz haha; güzel haber.

 
vipeen 2024-10-21

Çoğunlukla nestjse geçildiği için doğrudan kullanma ihtiyacı pek kalmıyor. Neredeyse servlet'i doğrudan kullanmakla aynı şey.

 
chotnt741 2024-10-20

Sonunda promise hatalarını işleyebiliyor ama artık bu saatten sonra özellikle kullanmak için bir neden olduğunu pek sanmıyorum

 
GN⁺ 2024-10-20
Hacker News yorumları
  • Wes’e ve ekibe teşekkürlerimi iletmek istiyorum. v5 PR’ının açılmasının üzerinden 10 yıl geçtiğini anlayabilmek için iki kez okumam gerekti. Bu projenin ataleti değiştirmek için muazzam bir çaba gerekmiş olmalı. Yeni bölümü kutluyorum

    • Düzenli ifadeler kullanıldığında, girdiyi ayrıştırırken üstel zaman davranışı görülen durumlar olabiliyor. Bu, re2 gibi gerçek bir düzenli ifade motoruna geçilerek kolayca önlenebilir
    • rsc’nin "Regular Expression Matching Can Be Simple And Fast" başlıklı yazısına bakılabilir
  • Express ekibini tebrik ediyorum. Başka birçok Node JS web sunucusu çatısı var ama Express ihtiyaç duyduğum her şeyi sağladığı için başka bir şeye geçmedim. Umarım bu böyle devam eder

  • Express’in hâlâ latest olmadığını belirtiyor

  • Wes’e ve ekibin çalışmalarına teşekkürler. Express hâlâ nodejs üzerinde en çok tercih ettiğim seçenek ve aktif olarak bakımı yapılıyor olması güzel

  • v5 sürümünün neden 10 yıl sürdüğünü merak ediyor

  • perl 6’ya bir gönderme

  • Yanıtı yolun girdisinin bir parçası olarak dahil etme fikri 2010’lardan kalma gibi görünüyor. Bugün çoğu şey, isteği alıp yanıt döndüren yollara sahip. Bu, HTTP ile daha iyi örtüşüyor

  • "Öncekini kurumsal bir şirkete devredip destek sağlama" modelini daha önce görmediğini söylüyor

  • Express’in koa, fastify vb. ile nasıl karşılaştırıldığını merak ediyor