View Engines
View engine server par HTML GENERATE karta hai template + data se. Express ko do settings chahiye: "view engine" (kaunsa engine) aur "views" (templates kis folder mein hain, default ./views).
EJS HTML-jaisa syntax deta hai (<%= %>), Pug indentation-based aur bahut concise hai, Handlebars logic-less approach follow karta hai. Express ke saath engine package install karna padta hai — Express khud koi engine bundle nahi karta.
npm install ejs
app.set("view engine", "ejs");
app.set("views", path.join(__dirname, "views"));
// views/profile.ejs -> <h1>Hello <%= name %></h1>
app.get("/profile", (req, res) => res.render("profile", { name: "Aarav" }));- View engine server par template + data se HTML banata hai
- app.set("view engine") aur app.set("views") dono configure karo
- EJS escape karta hai <%= %> se — user data ke liye raw output se bacho
EJS mein <%= value %> escaped output deta hai (XSS-safe), <%- value %> raw HTML deta hai, aur <% code %> sirf JavaScript chalata hai bina output ke. Partials (<%- include('header') %>) se header/footer reuse hote hain.
<!-- views/users.ejs -->
<%- include('partials/header') %>
<h1><%= title %></h1>
<ul>
<% users.forEach(u => { %>
<li><%= u.name %></li>
<% }) %>
</ul>Pug indentation-based hai — koi closing tags nahi, bahut concise, lekin whitespace sensitive. Handlebars logic-less philosophy follow karta hai ({{#each}}, {{#if}}) jisse templates simple rehte hain aur logic controller mein rehta hai. Choice team ki comfort par depend karti hai.
//- Pug
h1= title
ul
each u in users
li= u.name