Theory
JavaScript, अब Server पर
FestConnect का front end built है। पर front end अपने आप data store या rules enforce नहीं कर सकता; इसे एक backend चाहिए, server पर चलने वाला एक program जिससे front end बात करता है। यह unit Node.js और Express के साथ वह backend build करती है।
Node.js आपको server पर JavaScript run करने देता है (सिर्फ़ browser में नहीं), तो आप अपना पूरा stack एक language में लिखते हैं। Express वह framework है जो Node पर एक web API build करना clean और quick बनाता है। आप पहले Node basics से मिल चुके हैं; यहाँ आप एक real REST API build करते हैं। यह lesson इसे set up करता है।
Theory
Node, Express, और REST
Node.js एक runtime है जो browser के बाहर JavaScript execute करता है। इसे install करने के बाद (version 20), आप node app.js से एक file run करते हैं, और यह एक web server की तरह act कर सकता है।
Express Node के ऊपर एक small, widely used framework है। यह HTTP के fiddly parts handle करता है और आपको कुछ readable lines में अपना API define करने देता है। आप एक RESTful backend build करेंगे: एक API style जहाँ URLs resources represent करते हैं (जैसे /events) और HTTP methods actions represent करते हैं (read करने के लिए GET, create करने के लिए POST)। Express इन routes को express करना natural बनाता है, यही वजह है यह Node APIs के लिए default choice है।
Practical
एक Minimal Express Server
// install first: npm install express
const express = require('express');
const app = express();
app.use(express.json()); // parse JSON request bodies
app.get('/api/events', (req, res) => {
res.json([{ name: 'Robotics Workshop' }]); // respond with JSON
});
app.listen(3000, () => console.log('API running on port 3000'));This example runs in Gri-Learn on the web, where you can edit it and see the output.
Formula
nodemon: अब कोई Manual Restarts नहीं
Normally, हर बार आप server code change करते हैं आपको effect देखने के लिए node app.js stop और restart करना पड़ता है, tedious और भूलना easy। nodemon इसे fix करता है: यह आपकी files watch करता है और जब भी आप save करते हैं server को automatically restart करता है।
आप इसे एक development tool की तरह install करते हैं (npm install --save-dev nodemon) और node app.js की बजाय nodemon app.js run करते हैं। Development के दौरान यह small tool आपके countless manual restarts बचाता है और आपके edit-run loop को fast रखता है। यह सिर्फ़ एक dev convenience है; production में आप plain node से run करते हैं।
Theory
Project को Structure करना
एक demo के लिए एक one-file server fine है, पर FestConnect का backend grow होगा, तो आप इसे responsibility के according folders में structure करते हैं। एक common layout:
- routes/: define करता है कौन से URLs exist करते हैं और हर एक किस handler को map करता है।
- controllers/: वे functions जो हर route की logic handle करते हैं।
- models/: data shapes और database access।
इन्हें separate करना codebase को grow होने के साथ navigable रखता है, वही separation-of-concerns idea जिससे आप पूरे रास्ते मिले हैं। आपकी entry file (app.js) इन्हें साथ wire करती है और server start करती है।
Quiz
एक Node backend में Express.js का role क्या है?
- यह एक database है जो events store करता है
- यह Node के ऊपर एक lightweight web framework है जो एक RESTful API build करना simple बनाता है (routes, requests, responses)
- यह browser में JavaScript run करता है
- यह Node.js को पूरी तरह replace करता है
Show the answer
यह Node के ऊपर एक lightweight web framework है जो एक RESTful API build करना simple बनाता है (routes, requests, responses)
Express एक minimal web framework है जो Node.js के ऊपर बैठता है और एक web/REST API build करना straightforward बनाता है: आप routes define करते हैं, requests पढ़ते हैं, और कुछ clean lines में responses भेजते हैं। Option A wrong है: Express एक database नहीं है; FestConnect storage के लिए MongoDB इस्तेमाल करता है (एक later lesson)। Option C browser JavaScript describe करता है, पर Node (और Express) SERVER पर JavaScript run करते हैं, browser में नहीं। Option D wrong है: Express Node को replace नहीं करता; यह Node पर चलता है, HTTP को ज़्यादा conveniently handle करने के लिए Node के runtime का इस्तेमाल करते हुए। Node runtime है; Express वह framework है जो एक API लिखना easy बनाता है।
Think first
Front End पहले से Angular होने पर Backend के लिए Node क्यों इस्तेमाल करें?
आप Python, Java, या PHP में एक backend लिख सकते थे। Node के साथ full-stack JavaScript क्यों appeal करता है? फिर tap कीजिए।
Show the answer
सबसे बड़ा draw पूरे stack में ONE LANGUAGE है: Node के साथ, आपका front end (Angular/TypeScript, जो JavaScript का typed cousin है) और आपका back end दोनों JavaScript में लिखे हैं, तो आप कम contexts switch करते हैं, mental models और यहाँ तक कि कुछ code (validation logic या data shapes जैसा) share करते हैं, और आपकी team को कम separate skill sets चाहिए होते हैं। वह coherence development speed करती है और वे bugs कम करती है जो languages के बीच translate करने से आते हैं। Node की web backends के लिए specific strengths भी हैं: यह EVENT-DRIVEN और non-blocking है, यानी यह कई simultaneous connections efficiently handle करता है (कई users से quick requests serve करने वाले APIs के लिए great), और इसका एक huge package ecosystem (npm) है लगभग हर चीज़ के लिए एक library के साथ, Express खुद सहित। JSON, web APIs की lingua franca, JavaScript के लिए native है, तो front end, back end, और database (especially MongoDB जैसा एक JSON-friendly database) के बीच data move करना frictionless है। इनमें से कुछ भी Python, Java, या PHP को wrong नहीं बनाता, हर एक का अपना excellent backends है, पर FestConnect जैसे एक JavaScript-heavy, API-driven, real-time-friendly app के लिए, Node और Express के साथ full-stack JavaScript एक natural, productive fit है। और इसे सीखने का मतलब है आपकी Angular skills और आपकी backend skills एक-दूसरे को reinforce करती हैं। एक language, एक mental model, end to end।
Summary
Key takeaways
- Backend Node.js पर चलता है, जो server पर JavaScript execute करता है (node app.js से files run कीजिए)।
- Express.js Node के ऊपर एक lightweight framework है जो एक RESTful API build करना simple बनाता है।
- REST style: URLs resources represent करते हैं (जैसे /api/events) और HTTP methods actions represent करते हैं (GET, POST)।
- एक minimal server: express() create कीजिए, routes define कीजिए, और एक port पर app.listen कीजिए।
- Files change होने पर nodemon server को auto-restart करता है, development loop speed करते हुए (dev-only)।
- Project grow होने के साथ इसे routes, controllers, और models folders में structure कीजिए (separation of concerns)।
- Memory hook: Node server पर JS run करता है, Express API बनाता है, nodemon इसे reload करता है।