JavaScript: दो दुनियाएँ — एक भाषा
\n\nएक समय था जब JavaScript केवल बैनर एनिमेशन और फॉर्म सत्यापन के लिए एक भाषा थी। आज, यह वेब डेवलपर का सबसे बहुमुखी उपकरण है। लेकिन इसकी बहुमुखी प्रतिभा के साथ चुनाव की जटिलता आती है: Node.js पर सर्वर लॉजिक लिखें या JS को फ्रंटएंड के लिए छोड़ दें, और बैकएंड को Python या Go को सौंप दें?
\n\nइस लेख में हम इधर-उधर नहीं घूमेंगे। हम वास्तविक परिदृश्य लेंगे, कोड लिखेंगे और ईमानदारी से समझेंगे कि JavaScript कहाँ चमकता है, और कहाँ विकल्प तलाशना बेहतर है। यदि आप स्टैक चुनने की दुविधा में हैं या बस यह समझना चाहते हैं कि आधुनिक वेब एप्लिकेशन के 'हुड के नीचे' क्या चल रहा है — तो आप सही जगह पर हैं।
\n\nफ्रंटएंड पर JavaScript: ब्राउज़र का राजा
\n\nयह कैसे काम करता है
\nJavaScript पर फ्रंटएंड डेवलपमेंट का मतलब है DOM, इवेंट्स, एनिमेशन और ब्राउज़र API के साथ काम करना। आज यह केवल 'शुद्ध JS' नहीं है: React, Vue, Angular और Svelte के इकोसिस्टम ने इंटरफ़ेस बनाने को एक वास्तविक इंजीनियरिंग में बदल दिया है।
\n\nयहाँ एक सरल उदाहरण है जो दिखाता है कि JS पेज को कैसे जीवंत करता है:
\n\n// सर्वर से डेटा प्राप्त करें और इसे पेज पर प्रदर्शित करें\nasync function loadUsers() {\n try {\n const response = await fetch('https://api.example.com/users');\n const users = await response.json();\n \n const list = document.getElementById('user-list');\n users.forEach(user => {\n const item = document.createElement('li');\n item.textContent = `${user.name} — ${user.email}`;\n list.appendChild(item);\n });\n } catch (error) {\n console.error('लोड करने में त्रुटि:', error);\n }\n}\n\nloadUsers();\n\nसब कुछ उपयोगकर्ता के ब्राउज़र में काम करता है। आप HTML और स्क्रिप्ट देते हैं, बाकी क्लाइंट करता है। यह इंटरफ़ेस की बिजली की गति से प्रतिक्रिया देता है: टैब स्विच करना, एनिमेशन, पेज को रीलोड किए बिना डेटा लोड करना।
\n\nJavaScript पर फ्रंटएंड डेवलपमेंट के फायदे
\n- \n
- तत्काल प्रतिक्रिया — उपयोगकर्ता सर्वर प्रतिक्रिया की प्रतीक्षा किए बिना तुरंत परिवर्तन देखता है। \n
- विशाल समुदाय — कोई भी समस्या पहले ही हल हो चुकी है, कोई भी लाइब्रेरी लिखी जा चुकी है। \n
- एक ही भाषा — यदि आप JS जानते हैं, तो आप क्लाइंट और सर्वर (full-stack) दोनों लिख सकते हैं। \n
- उपकरणों का समृद्ध चयन — SPA के लिए React से लेकर SSR के लिए Next.js तक। \n
JavaScript पर फ्रंटएंड डेवलपमेंट के नुकसान
\n- \n
- क्लाइंट-साइड सुरक्षा — कोई भी कोड डेवलपर टूल में देखा जा सकता है। यहाँ रहस्य और कुंजियाँ संग्रहीत नहीं की जा सकतीं। \n
- SEO समस्याएँ — शुद्ध JS रेंडरिंग सर्च इंजन द्वारा खराब रूप से इंडेक्स की जाती है (SSR द्वारा हल किया जाता है)। \n
- कमज़ोर उपकरणों पर प्रदर्शन — भारी SPA पुराने फोन पर धीमे हो सकते हैं। \n
- ब्राउज़र पर निर्भरता — विभिन्न संस्करण कोड की अलग-अलग व्याख्या कर सकते हैं। \n
बैकएंड पर JavaScript: Node.js और इसका इकोसिस्टम
\n\nयह कैसे काम करता है
\nजब 'बैकएंड पर JavaScript' कहा जाता है, तो इसका मतलब Node.js है — V8 इंजन पर निर्मित एक रनटाइम वातावरण। Node.js ब्राउज़र के बाहर JS चलाने की अनुमति देता है: HTTP अनुरोधों को संसाधित करना, डेटाबेस, फ़ाइल सिस्टम और नेटवर्क सॉकेट के साथ काम करना।
\n\nयहाँ Express.js पर एक विशिष्ट सर्वर है:
\n\nconst express = require('express');\nconst app = express();\nconst PORT = 3000;\n\n// JSON पार्सिंग के लिए Middleware\napp.use(express.json());\n\n// उपयोगकर्ता प्राप्त करने का रूट\napp.get('/api/users', async (req, res) => {\n try {\n const users = await db.query('SELECT * FROM users');\n res.json(users);\n } catch (error) {\n res.status(500).json({ error: 'सर्वर त्रुटि' });\n }\n});\n\n// नया उपयोगकर्ता बनाने का रूट\napp.post('/api/users', async (req, res) => {\n const { name, email } = req.body;\n const newUser = await db.query(\n 'INSERT INTO users (name, email) VALUES ($1, $2) RETURNING *',\n [name, email]\n );\n res.statu