موتورهای قالب
در نود.جیاس، موتورهای قالب (Template Engines) ابزارهایی هستند که امکان تولید صفحات HTML دینامیک با استفاده از دادههای سرور را فراهم میکنند. این موتورها به توسعهدهندگان اجازه میدهند تا منطق تجاری و رابط کاربری را از هم جدا کنند، که باعث افزایش قابلیت نگهداری و مقیاسپذیری برنامه میشود. موتورهای قالب میتوانند شامل حلقهها، شرطها و توابع کمکی برای تولید محتوای دینامیک باشند.
استفاده از موتورهای قالب در نود.جیاس زمانی اهمیت پیدا میکند که میخواهیم دادههای سرور مانند اطلاعات دیتابیس را در قالب صفحات HTML به کاربر نمایش دهیم، بدون آنکه منطق برنامه و طراحی صفحه با هم تداخل پیدا کنند. در این آموزش، شما با مفاهیم کلیدی نود.جیاس شامل سینتکس، ساختار دادهها، الگوریتمها و اصول برنامهنویسی شیگرا (OOP) در ترکیب با موتورهای قالب آشنا خواهید شد.
با دنبال کردن این آموزش، یاد خواهید گرفت که چگونه موتورهای قالب را در پروژههای واقعی نود.جیاس پیادهسازی کنید، دادهها را به شکل امن و بهینه به قالبها ارسال کنید و بهترین شیوهها برای جلوگیری از خطاهای رایج مانند نشت حافظه و مدیریت ضعیف خطاها را به کار ببرید. این مهارتها به بهبود معماری نرمافزار و کارایی سیستم کمک شایانی میکنند.
مثال پایه
textconst express = require('express');
const path = require('path');
const app = express();
const PORT = 3000;
// تنظیم موتور قالب EJS
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, 'views'));
// داده نمونه
const users = [
{ name: 'Ali', age: 25 },
{ name: 'Sara', age: 30 },
{ name: 'Reza', age: 20 }
];
// مسیر اصلی
app.get('/', (req, res) => {
res.render('index', { users });
});
// راهاندازی سرور
app.listen(PORT, () => {
console.log(`Server running at http://localhost:${PORT}`);
});
در این مثال، Express و موتور قالب EJS بهکار گرفته شدهاند. نکات کلیدی شامل موارد زیر است:
- app.set('view engine', 'ejs') موتور قالب EJS را برای تولید HTML دینامیک تنظیم میکند.
- app.set('views', path.join(__dirname, 'views')) مسیر فایلهای قالب را مشخص میکند.
- آرایه users دادهای است که به قالب ارسال میشود و میتواند در حلقهها و شرطها استفاده شود.
- res.render('index', { users }) دادهها را به قالب میفرستد تا HTML دینامیک تولید شود.
این پیادهسازی منطق و نمایش را از هم جدا میکند، از نشت حافظه جلوگیری میکند و با استانداردهای نود.جیاس مطابقت دارد.
مثال کاربردی
textconst express = require('express');
const path = require('path');
class User {
constructor(name, age) {
this.name = name;
this.age = age;
}
isAdult() {
return this.age >= 18;
}
}
const app = express();
const PORT = 3000;
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, 'views'));
const users = [
new User('Ali', 25),
new User('Sara', 30),
new User('Reza', 16)
];
app.get('/', (req, res) => {
try {
res.render('index', { users });
} catch (error) {
console.error('Template rendering error:', error);
res.status(500).send('Internal Server Error');
}
});
app.listen(PORT, () => {
console.log(`Server running at http://localhost:${PORT}`);
});
در این مثال پیشرفته، کلاس User نشاندهنده استفاده از اصول OOP است. متد isAdult منطق برنامه را از قالب جدا نگه میدارد.
- بلوک try/catch برای مدیریت خطاهای رندرینگ استفاده شده است.
- ارسال آبجکتها به قالب باعث استفاده مجدد و کد تمیز میشود.
- این رویکرد از نشت حافظه، حلقههای ناکارآمد و ترکیب منطق و نمایش جلوگیری میکند.
📊 جدول مرجع
نود.جیاس Element/Concept | Description | Usage Example |
---|---|---|
موتور قالب EJS | تولید HTML دینامیک | app.set('view engine', 'ejs') |
ارسال داده به قالب | ارسال داده سرور به قالب | res.render('index', { users }) |
OOP و کپسولهسازی | مدیریت داده و منطق در کلاسها | class User { isAdult() {...} } |
مدیریت خطا | هندلینگ خطاهای رندرینگ | try { res.render(...) } catch(err) {...} |
Separation of Concerns | جدا نگه داشتن منطق و نمایش | Controller handles logic, Template renders |
خلاصه و مراحل بعدی:
با یادگیری موتورهای قالب در نود.جیاس، شما قادر خواهید بود HTML دینامیک تولید کنید، اصول OOP و مدیریت دادهها را به کار گیرید و از بهترین شیوهها برای بهبود امنیت و عملکرد سیستم بهره ببرید. مراحل بعدی شامل یادگیری موتورهای قالب پیشرفتهتر مانند Pug و Handlebars، ادغام با دیتابیس و تکنیکهای کشینگ و استریمینگ است. منابع مفید شامل مستندات رسمی، مثالهای GitHub و آموزشهای جامعه نود.جیاس هستند.
🧠 دانش خود را بیازمایید
دانش خود را بیازمایید
خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کردهاید
📝 دستورالعملها
- هر سوال را با دقت بخوانید
- بهترین پاسخ را برای هر سوال انتخاب کنید
- میتوانید آزمون را هر چند بار که میخواهید تکرار کنید
- پیشرفت شما در بالا نمایش داده میشود