- 10 साल पहले पहला v5 PR दर्ज किया गया था, और आखिरकार अब इसे merge और publish कर दिया गया है
- यह जानबूझकर सरल रखा गया रिलीज़ है, ताकि आने वाली रिलीज़ों में अधिक प्रभावशाली बदलाव लागू किए जा सकें
- इसका एक उद्देश्य Node.js ecosystem को यह बताना भी है कि Express फिर से सक्रिय हो गया है
प्रमुख बदलाव
-
Node.js version support में बदलाव
- Node.js 0.10 का support समाप्त, अब Node 18 और उससे ऊपर के version supported हैं
- पुराने Node.js versions के support के कारण performance और maintenance से जुड़े महत्वपूर्ण बदलावों में जो देरी हो रही थी, उसका समाधान किया गया
- नए language और runtime features अपनाना, और अब आवश्यक न रहने वाली dependencies हटाना संभव हुआ
- पुराने Node.js versions का उपयोग करने वाली कंपनियों की कठिनाइयों को ध्यान में रखते हुए HeroDevs के साथ साझेदारी कर v4 support समाप्त होने के बाद भी महत्वपूर्ण security patches देने के लिए "अनिश्चितकालीन समर्थन" प्रदान किया जाएगा
-
Path matching और regular expression में बदलाव
path-to-regexpलाइब्रेरी को 0.x से 8.x तक अपडेट किया गया है, जिससे कई वर्षों के बदलाव एक साथ शामिल हुए हैं- regular expression subexpressions (उदाहरण:
/:foo(\\d+)) का support समाप्त किया गया- ReDoS हमलों को रोकने के लिए इसे हटाया गया
- migration तरीका: मज़बूत input validation लाइब्रेरी का उपयोग करने की सिफारिश
- सामान्य path patterns के लिए सरल किए गए pattern शामिल किए गए हैं
:name?को{:name}में बदला गया है*को*nameमें बदला गया है(,),[,],?,+,!को reserved characters के रूप में जोड़ा गया है
- क्रमबद्ध numeric parameters का support समाप्त किया गया है। अब सभी parameters के नाम होने चाहिए
-
Promise support
- middleware में हुई errors के कारण reject हुए Promise के लिए support जोड़ा गया है
- resolved Promise में
nextको call करना इसमें शामिल नहीं है - अब अधिकांश मामलों में middleware इस तरह लिखा जा सकता है:
app.use(async (req, res, next) => { req.locals.user = await getUser(req); next(); });
-
Body parser में बदलाव
- CVE-2024-45590 mitigation के लिए urlencoded body depth को customize करने का option जोड़ा गया है (default 32)
- अब deprecated
bodyParser()combined middleware हटा दिया गया है req.bodyअब हमेशा{}से initialize नहीं होगाurlencodedparser मेंextendedका default अब false है- Brotli lossless data compression support जोड़ा गया है
-
Deprecated method signatures हटाए गए
res.redirect('back')औरres.location('back'): अब'back'magic string supported नहीं है। इसकी जगहreq.get('Referrer') || '/'को स्पष्ट रूप से उपयोग करेंres.send(status, body)औरres.send(body, status)signatures:res.status(status).send(body)का उपयोग करेंres.send(status)signature: साधारण status response के लिएres.sendStatus(status)का उपयोग करें, और optional body के साथ status code भेजने के लिएres.status(status).send()का उपयोग करें- अन्य deprecated method signatures भी हटाए गए हैं (विस्तार के लिए migration guide देखें)
-
Migration और security guidance
- v4 से v5 में migration करने वाले developers के लिए विस्तृत migration guide दी गई है
- Express का सुरक्षित और भरोसेमंद उपयोग करने के लिए user input validation और security practices जैसे क्षेत्रों पर महत्वपूर्ण insights देने वाला व्यापक threat model प्रदान किया गया है
GN⁺ की राय
- Express v5 ऐसा रिलीज़ है जिसका मुख्य फ़ोकस Node.js ecosystem को यह बताना है कि Express फिर से सक्रिय है। इसमें पुराने Node.js versions का support समाप्त करने, security issues हल करने और maintenance को सरल बनाने पर ज़ोर है
- इस रिलीज़ को जानबूझकर सरल रखा गया है ताकि ecosystem की रुकावटें हटाई जा सकें और भविष्य की रिलीज़ों में अधिक प्रभाव डालने वाले बदलाव संभव हो सकें
- Express की philosophy यह है कि यह Node.js के लिए तेज़, non-opinionated और minimal web framework है। यह user input validation और security practices जैसे क्षेत्रों में महत्वपूर्ण insights प्रदान करता है
- Express v5 migration के लिए विस्तृत guide और व्यापक threat model उपलब्ध कराया गया है, जिससे developers Express का सुरक्षित और स्थिर उपयोग कर सकें
- Express project के नए maintainers का लक्ष्य Express ecosystem को एक स्थिर और भरोसेमंद tool के रूप में आगे बढ़ाना है। इसके लिए वे community के साथ मिलकर समस्याओं को हल करेंगे और सुधार जारी रखेंगे
4 टिप्पणियां
आह, आख़िरकार promise का support आ गया। हम अभी भी express काफ़ी इस्तेमाल करते हैं हाहा; यह अच्छी ख़बर है।
ज़्यादातर लोग
nestjsपर जा चुके हैं, इसलिए इसे सीधे इस्तेमाल करने की ज़रूरत अब बहुत कम रह गई है। यह लगभग servlet को सीधे इस्तेमाल करने जैसा ही है।आख़िरकार अब promise error को हैंडल किया जा सकता है, लेकिन अब इस समय इसे ज़रूर इस्तेमाल करने की कोई खास वजह है, ऐसा मुझे नहीं लगता।
Hacker News राय
Wes और टीम के प्रति आभार व्यक्त करना चाहता हूँ। v5 PR खुले हुए 10 साल हो गए, यह समझने के लिए मुझे इसे दो बार पढ़ना पड़ा। इस प्रोजेक्ट की जड़ता को बदलने में बहुत बड़ा प्रयास लगा होगा। नए अध्याय के लिए बधाई
Express टीम को बधाई। दूसरे Node JS web server framework बहुत हैं, लेकिन Express मेरी ज़रूरत की हर चीज़ देता है, इसलिए मैंने किसी और पर स्विच नहीं किया। उम्मीद है यह ऐसे ही बना रहेगा
यह बताया गया कि Express अभी भी
latestनहीं हैWes और टीम के काम के लिए धन्यवाद। Express अब भी nodejs में सबसे पसंदीदा विकल्प है, और इसका सक्रिय maintenance देखना अच्छा लगता है
यह जिज्ञासा कि v5 रिलीज़ होने में 10 साल क्यों लगे
perl 6 का उल्लेख
path के input के हिस्से के रूप में response शामिल करने का विचार 2010 के दशक की चीज़ जैसा लगता है। आजकल ज़्यादातर चीज़ों में ऐसे path होते हैं जो request लेते हैं और response लौटाते हैं। यह HTTP के साथ बेहतर मेल खाता है
"पुरानी चीज़ को किसी private company को ट्रांसफर करके support देना" वाला मॉडल पहले कभी नहीं देखा था
यह जिज्ञासा कि Express की koa, fastify आदि से तुलना कैसे होती है