منابع آموزشی و پژوهشی، برای دانشگاه و مدرسه
پشتیبانیانتشار محتوا
دورهٔ آموزشیرایگان

آموزش رایگان Node.js در ویندوز؛ از نصب تا ساخت API

۲۰ درس در ۴ فصل۱۳ ساعت و ۲۰ دقیقهدربارهٔ دوره
شناخت Node.js و آماده‌سازی ویندوزدرس ۱ از ۲۰

Node.js چیست و در سمت سرور چه مسئله‌ای را حل می‌کند؟

۳۵ دقیقه آموزش متنی
در این درس ۵ بخش

وقتی در یک فروشگاه روی «ثبت سفارش» می‌زنید، مرورگر می‌تواند فرم را نمایش دهد و خالی‌نبودن نام را بررسی کند؛ اما تصمیم نهایی دربارهٔ قیمت، موجودی و اجازهٔ خرید باید در بخش قابل اعتماد سامانه گرفته شود. Node.js یکی از محیط‌هایی است که می‌توان این بخش را با جاوااسکریپت در آن اجرا کرد. در این دورهٔ رایگان، از آماده‌کردن ویندوز تا ساخت و آزمودن یک API آموزشی جلو می‌رویم. برای شروع، نیازی به اجارهٔ سرور، خرید دامنه یا نصب پایگاه داده ندارید.

چهار نقش متفاوت: جاوااسکریپت زبان است، مرورگر و Node.js محیط اجرا هستند و npm ابزار مدیریت بسته‌ها و دستورهای پروژه است.
Node.js زبان تازه‌ای نیست؛ جاوااسکریپت را بیرون از مرورگر اجرا می‌کند. APIهای محیط اجرا تعیین می‌کنند برنامه به چه امکاناتی دسترسی دارد.

زبان، محیط اجرا و چارچوب را از هم تشخیص دهید

جاوااسکریپت زبان است؛ یعنی قواعدی مانند تابع، شیء، شرط و Promise را مشخص می‌کند. Node.js محیط اجرای این زبان بیرون از مرورگر است و امکاناتی برای شبکه، فایل و فرایند در اختیار برنامه می‌گذارد. Express و Fastify نمونهٔ چارچوب‌هایی هستند که می‌توان روی Node.js استفاده کرد؛ نصب آن‌ها شرط اجرای اولین برنامه نیست. npm نیز مدیر بسته و ابزار اجرای اسکریپت‌های پروژه است. این نام‌ها به بخش‌های متفاوت کار اشاره می‌کنند و هر خطا را باید در همان لایه پیگیری کرد.

یک تابع محاسبه ممکن است هم در مرورگر و هم در Node.js اجرا شود؛ اما امکانات محیط یکسان نیستند. در Node.js معمولاً document و window نداریم، چون صفحهٔ HTML و DOM مرورگر وجود ندارد. در مرورگر هم دسترسی عمومی و مستقیم برنامهٔ Node به فایل‌های سیستم کاربر در دسترس نیست. وجود APIهایی مانند fetch در هر دو محیط به معنی یکسان‌بودن همهٔ امکانات یا مدل امنیتی آن‌ها نیست. کتابخانه‌ای که برای رابط مرورگر نوشته شده، الزاماً برای برنامهٔ سرور مناسب نیست.

javascript
const lines = [
  { title: 'دفتر', quantity: 2, unitPrice: 45000 },
  { title: 'مداد', quantity: 3, unitPrice: 10000 }
];
const total = lines.reduce(
  (sum, line) => sum + line.quantity * line.unitPrice,
  0
);
console.log(total); // 120000
console.log(typeof document); // undefined در اجرای معمول Node.js

این مثال را پس از نصب، در فایل price.mjs ذخیره و با node price.mjs اجرا می‌کنید. مبلغ‌ها در سناریوی آموزشی تومان و عدد صحیح‌اند. نتیجهٔ محاسبه در کنسول چاپ می‌شود؛ هنوز هیچ سرور، صفحه یا پرداختی ساخته نشده است. تمایز خروجی کنسول و پاسخ شبکه کمک می‌کند هنگام یادگیری، موفقیت یک مرحله را با تکمیل کل محصول اشتباه نگیرید.

مسیر یک درخواست از مرورگر تا داده

در نمونهٔ فروشگاه، مرورگر درخواست HTTP شامل مسیر، روش و دادهٔ لازم می‌فرستد. برنامهٔ سرور درخواست را دریافت می‌کند، هویت و مجوز را بررسی می‌کند، ورودی را با قرارداد داده می‌سنجد و در صورت نیاز از پایگاه داده نتیجه می‌گیرد. سپس پاسخی با کد وضعیت و بدنه، مثلاً JSON، برمی‌گرداند. مرورگر پاسخ را به رابط تبدیل می‌کند. در پروژهٔ این دوره، به‌جای پرداخت یا دادهٔ واقعی، با دادهٔ ساختگی کار می‌کنیم تا رفتار درخواست و پاسخ روشن بماند.

سرور دو معنای رایج دارد: دستگاه یا محیطی که برنامه روی آن اجرا می‌شود، و خود برنامه‌ای که به درخواست پاسخ می‌دهد. لپ‌تاپ شما برای آزمایش می‌تواند میزبان یک سرور HTTP محلی باشد. VPS یک ماشین مجازی میزبانی‌شده است و Node.js نرم‌افزاری است که می‌تواند روی آن اجرا شود. این دو رقیب یکدیگر نیستند. برای شناخت زیرساخت، دورهٔ لینوکس مقدماتی درس‌آوند را می‌توانید در ادامه مطالعه کنید: https://www.darsavand.com/courses/linux-server-from-zero

کاربردهایی که برنامه‌نویس واقعاً با آن‌ها روبه‌رو می‌شود

ساخت API برای وب و موبایل، دریافت و پردازش رویداد، اتصال به سرویس‌های دیگر، ابزار خط فرمان و اجرای ابزارهای توسعه از کاربردهای مهم‌اند. مثلاً سامانهٔ تیکت باید درخواست کاربر را بگیرد، آن را ثبت کند و فهرست مجاز را برگرداند. یک ابزار داخلی هم ممکن است فایل‌های گزارش را بررسی و خلاصه تولید کند. استفاده از Node برای ساخت پروژهٔ React به معنی آن نیست که همهٔ کد رابط در سرور اجرا می‌شود؛ ابزار ساخت و برنامهٔ نهایی نقش‌های جدا دارند.

در کارهای ورودی و خروجی، برنامه زمان زیادی منتظر دیسک، شبکه یا پایگاه داده می‌ماند. APIهای ناهمگام به Node کمک می‌کنند هنگام انتظار، کار درخواست‌های دیگر را نیز پیش ببرد. این ویژگی تضمین سرعت نامحدود نیست. یک حلقهٔ بسیار سنگین یا پردازش تصویر طولانی در رشتهٔ اجرای جاوااسکریپت می‌تواند پاسخ‌گویی را کند کند. برای چنین مسئله‌ای باید اندازه‌گیری و طراحی مناسب، مانند صف کار یا worker، داشت؛ نوشتن async پیش از یک تابع به‌تنهایی محاسبهٔ سنگین را موازی نمی‌کند.

تمرین تصمیم‌گیری و پاسخ

سه نیاز را طبقه‌بندی کنید: نمایش دکمهٔ باز و بسته‌شدن منو؛ ارائهٔ فهرست تیکت‌های مجاز یک کاربر؛ و تبدیل هزاران تصویر بزرگ. برای هرکدام بنویسید کدام قسمت در مرورگر قرار می‌گیرد، آیا سرور لازم است و چه ریسکی دارد. پاسخ راهنما: منو معمولاً رفتار رابط است؛ فهرست تیکت به کنترل مجوز در سرور نیاز دارد؛ تبدیل تصویر کار محاسباتی و مصرف‌کنندهٔ حافظه است و باید جدا از مسیر پاسخ سریع بررسی شود. معیار تحویل، توضیح دلیل انتخاب است، نه انتخاب یک فناوری برای همهٔ مسئله‌ها.

منابع رسمی برای ادامهٔ مطالعه

معرفی Node.js: https://nodejs.org/learn/getting-started/introduction-to-nodejs
تفاوت با مرورگر: https://nodejs.org/learn/getting-started/differences-between-nodejs-and-the-browser
مدل کار ناهمگام: https://nodejs.org/learn/asynchronous-work/overview-of-blocking-vs-non-blocking

متن فارسی، سناریوها و مثال‌ها: تألیف مستقل تحریریه درس‌آوند.

ورود برای ثبت پیشرفت

متن درس‌های عمومی را بدون ورود بخوانید.

یادگیری‌ات را دنبال کن

برای نگهداری پیشرفت و ادامهٔ یادگیری از حساب خود استفاده کن.

ورود و ثبت‌نام
دربارهٔ این دوره

دورهٔ رایگان Node.js در ۲۰ درس؛ پیش‌نیاز جاوااسکریپت، نصب در ویندوز، VS Code، npm، رفع خطاهای رایج و ساخت و آزمون API سمت سرور با کد کامل و تمرین.

پرسشی دربارهٔ این درس داری؟گفت‌وگو با پشتیبانی در حساب کاربری
یکجا انتخاب کن، راحت‌تر دریافت کن

انتخاب‌های من ۰ منبع

مجموعهٔ مطالعه‌ات را بساز.

کنار مقاله‌ها «انتخاب» را بزنید تا چند فایل را با هم دریافت کنید.

انتخاب مقاله‌های رایگان