VanJS – वैनिला JavaScript पर आधारित बिना JSX वाला फ्रेमवर्क
एक नई JavaScript UI library, VanJS, plain functions का उपयोग करके JSX या build step के बिना 1 KB से कम में reactive interfaces देने का दावा करती है, जिससे React, Preact, Solid, Mithril और अन्य “minimal” frameworks से तुलना शुरू हो जाती है। टिप्पणीकार बहस करते हैं कि आधुनिक नेटवर्क को देखते हुए क्या bundle-size optimization अभी भी मायने रखता है, लेकिन कई लोगों का तर्क है कि कम tooling, low-end devices पर तेज execution, और सरल mental models वास्तविक लाभ हैं। यह thread लगातार बदलते front-end stacks से पैदा हुई व्यापक थकान को भी सामने लाती है, साथ ही signal-based reactivity, interoperability, और virtual DOM तथा भारी build pipelines से दूर जाने वाले तरीकों में वास्तविक रुचि भी दिखाती है.
समग्र प्रतिक्रिया और उद्देश्य
- कई लोग VanJS को न्यूनतम “reactive vanilla JS” लाइब्रेरीज़ की लंबी शृंखला में एक और प्रविष्टि मानते हैं, जैसे Xeact, Hyperapp, Arrow, Mithril आदि।
- कुछ लोग एक और फ्रेमवर्क को लेकर संशय में हैं, लेकिन अन्य तर्क देते हैं कि प्रयोग करना मूल्यवान है और आज के प्रमुख फ्रेमवर्क भी इसी तरह उत्पन्न हुए थे।
- कई लोगों को यह पसंद है कि यह छोटा है, अवधारणात्मक रूप से सरल है, और आसानी से fork या extend किया जा सकता है।
आकार, प्रदर्शन, और नेटवर्क लागत
- sub‑1KB आकार पर खास जोर दिया गया है; कुछ लोग तर्क देते हैं कि images/fonts की तुलना में फ्रेमवर्क का आकार नगण्य है और वैसे भी वह cache हो जाएगा।
- अन्य लोग जवाब देते हैं कि JS का आकार अभी भी मायने रखता है, खासकर low-end devices और सीमित data plans के लिए, और केवल bytes नहीं बल्कि execution cost भी UX को प्रभावित करती है।
- VanJS के अपने benchmarks का हवाला देकर दावा किया जाता है कि यह virtual DOM के बिना स्थानीय रूप से अपडेट करके React से बेहतर प्रदर्शन करता है।
- एक subthread में कहा गया है कि SVG/MathML constants जैसी बहुत छोटी सुविधाएँ भी जानबूझकर शामिल नहीं की जातीं ताकि bytes कम रहें; कुछ लोग इसकी प्रशंसा करते हैं, जबकि कुछ इसे over-optimization मानते हैं।
JSX नहीं, function-based view syntax
- एक प्रमुख विषय JSX का अभाव है:
- JSX के समर्थक इसे कमी मानते हैं; वे पठनीयता और संरचनात्मक स्पष्टता के लिए HTML-जैसे, nested tags पसंद करते हैं।
- विरोधी JSX को एक ऐतिहासिक crutch मानते हैं, एक syntactic misfit जो build step मांगता है, और तर्क देते हैं कि plain JS function calls अधिक साफ हैं और अतिरिक्त tooling से बचाते हैं।
- कुछ लोग बताते हैं कि React को JSX के बिना भी इस्तेमाल किया जा सकता है और VanJS का syntax गैर-JSX React जैसा ही हो जाता है।
- nested function calls बनाम XML/HTML trees की पठनीयता की तुलना पर लंबी बहसें होती हैं, लेकिन कोई स्पष्ट निष्कर्ष नहीं निकलता।
Reactivity, State, और Lifecycle
- VanJS सरल “state.val” objects का उपयोग करता है (signal-like)। कुछ लोगों को यह सहज और संक्षिप्त लगता है; दूसरों को यह वाक्यांश भ्रमित करने वाला लगता है कि “val अपरिवर्तनीय होना चाहिए, लेकिन setter से सेट किया जाता है”।
- गायब सुविधाओं को लेकर प्रश्न उठते हैं: lifecycle hooks (onMount/onCleanup), stores, और For/Index/Show जैसे higher-level control constructs।
- async data fetching पर चर्चा होती है; VanJS Await-style abstraction और state updates को सपोर्ट करता है, लेकिन homepage examples से idiomatic patterns तुरंत स्पष्ट नहीं होते।
व्यापक विचार और विकल्प
- कुछ लोग मौजूदा tools (React, Preact, Solid, Svelte) के साथ बने रहना या htmx/LiveView तथा WASM या compile-to-JS के माध्यम से non-JS languages की ओर जाना पसंद करते हैं।
- एक बार-बार आने वाला विषय “frameworks का चक्र” है: छोटे tools में सुविधाएँ जुड़ती जाती हैं, वे जटिल हो जाते हैं, और फिर VanJS जैसी छोटी replacements की नई लहर को प्रेरित करते हैं।