جاوااسکریپت تکمیلی؛ داده، چرخهٔ عمر و کلاینت چت
دورهٔ رایگان تکمیلی JavaScript در ۸ درس؛ یونیکد، URL، زمان، Generator و دادهٔ باینری تا مدیریت منابع و کلاینت چت WebSocket، همراه مثال، تمرین و فایل پروژه.
دانلود رایگان پروژهٔ تکصفحهای Node.js با فرم فارسی، API واقعی و آزمون؛ همراه آموزش اجرای اوبونتو، HTTPS با Let’s Encrypt و نصب دستی گواهی.
«سلام، سرور!» یک پروژهٔ کوچک برای لمسکردن ارتباط صفحهٔ وب با برنامهٔ سمت سرور است. کاربر در یک فرم فارسی نامی ساختگی مینویسد و پاسخ اختصاصی را از API دریافت میکند. دکمهٔ دوم، وضعیت همان برنامه را میخواند. صفحه، پاسخها و فایلهای ظاهر را یک برنامهٔ Node.js ارائه میکند؛ بنابراین نتیجهٔ کار فقط یک طرح گرافیکی یا پاسخ از پیش نوشتهشده نیست.
کد کامل HTTP Server، صفحهٔ HTML، سبکهای CSS و JavaScript مرورگر همراه فایل آزمون و راهنمای فارسی در بسته قرار دارد. بخش deploy شامل نمونهٔ سرویس systemd، پراکسی Nginx و پیکربندی جایگزین TLS دستی است. مثال جداگانهٔ HTTPS محلی نیز برای مقایسهٔ گواهی آزمایشی با گواهی معتبر عمومی ارائه میشود. هیچ کلید خصوصی، گواهی واقعی کاربر یا فایل نصب سنگین داخل این بسته نیست.
برای نسخهٔ اصلی به بستهٔ npm خارجی، حساب یک سرویس ابری یا پایگاه داده نیاز ندارید. Node.js نسخهٔ ۲۴ یا جدیدترِ پشتیبانیشده و یک ویرایشگر کافی است. روی رایانهٔ خودتان میتوانید بدون دامنه اجرا کنید؛ انتشار اینترنتی و گواهی عمومی به سرور قابل دسترس و دامنهای تحت کنترل خودتان نیاز دارند. رایگانبودن پروژه به معنی رایگانبودن اجارهٔ سرور یا ثبت دامنه نیست.
ZIP را استخراج کنید و پوشهای را در ویرایشگر باز کنید که package.json در آن دیده میشود. در ترمینال همان پوشه دستور شروع را بزنید و بعد نشانی http://127.0.0.1:3000 را در مرورگر باز کنید. بازکردن مستقیم index.html با file://، اجرای API را انجام نمیدهد. اگر پورت ۳۰۰۰ را پروژهٔ دیگری گرفته، آن پروژه را فقط از ترمینال متعلق به خودش متوقف کنید یا طبق راهنما پورت متفاوت انتخاب کنید؛ همهٔ فرایندهای Node را نبندید.
# در PowerShell ویندوز، داخل پوشهٔ دارای package.json
npm.cmd start
# برای آزمون، یک ترمینال دوم در همان پوشه باز کنید:
npm.cmd test# در ترمینال اوبونتو، داخل پوشهٔ دارای package.json
npm start
# در ترمینال دوم، در همان پوشه:
npm testپس از شروع، برنامه تا زمانی که به درخواستها پاسخ میدهد باز میماند؛ برنگشتن خط فرمان نشانهٔ خرابی نیست. برای پایان، در ترمینال اجرای سرور Ctrl+C بزنید. فایلهای ظاهری هنگام شروع برنامه خوانده میشوند؛ پس از تغییر آنها، ذخیره کنید، برنامه را متوقف و دوباره اجرا کنید و سپس صفحه را تازه کنید. برای اجرای آموزشی این نسخه، npm install لازم نیست چون وابستگی خارجی ندارد.
درخواست GET به /api/status وضعیت برنامه و زمان سپریشده از آغاز آن را به صورت #json برمیگرداند. درخواست POST به /api/greet نام متنی را در بدنهٔ JSON دریافت میکند و یک پیام سلام میسازد. فرم مرورگر این درخواست را با #fetch-http-json میفرستد. نام در پایگاه داده ذخیره نمیشود و نمونه برای جمعآوری اطلاعات واقعی کاربران طراحی نشده است.
{"name":"سارا"}این شکل ورودی، نمونهٔ بدنهٔ POST است. رشتهٔ خالی، ورودی غیرمتنی، فیلد اضافه، JSON خراب و بدنهٔ بیش از حد مجاز رد میشوند. متن پاسخ با textContent در صفحه قرار میگیرد تا ورودی کاربر به HTML اجرایی تبدیل نشود. آموزش #validation-contracts توضیح میدهد چرا بررسی دوبارهٔ داده در سرور لازم است؛ اعتبارسنجی فرم بهتنهایی قرارداد API را تضمین نمیکند.
آموزش هشتدرسی همراه، ساخت صفحه و API را از روی همین فایلها توضیح میدهد و سپس اجرای اوبونتو، سرویس دائمی، DNS و Nginx را پیش میبرد. برای HTTPS، مسیر Let’s Encrypt با Certbot و بررسی تمدید خودکار از مسیر نصب دستی گواهی معتبر جدا شده است. مثال خودامضای localhost فقط آزمایش آموزشی است و جای گواهی مورد اعتماد عمومی را نمیگیرد.
آموزش کامل همین پروژه:
https://www.darsavand.com/courses/nodejs-http-server-page-api-tls
برای آمادهسازی محیط ویندوز:
https://www.darsavand.com/courses/nodejs-windows-backend-start
برای توضیح گستردهتر استقرار بکاند روی اوبونتو:
https://www.darsavand.com/courses/nodejs-backend-ubuntu-deployment
این نمونه یک سرویس بیحالت برای نمایش سلام است؛ حساب کاربری، ورود، پرداخت، ذخیرهٔ اطلاعات و کنترل دسترسیِ یک سامانهٔ تجاری ندارد. اگر آن را برای محصول واقعی توسعه میدهید، نیازهای داده، محدودیت درخواست، مجوزها، ثبت رخداد و پشتیبان را جدا طراحی کنید. اجرای موفق یک سلام، به معنی آمادهبودن همهٔ امکانات یک محصول اینترنتی نیست. در راهنمای همراه، آزمونها و محدودیتهای بررسی نیز ثبت شدهاند.
تألیف متن، طراحی صفحه و کد پروژه: تحریریه درسآوند. منابع رسمی انگلیسی Node.js، MDN، Ubuntu، Nginx، Certbot و OpenSSL در درسهای همراه معرفی شدهاند.
Node.js 24 یا بالاتر و آشنایی مقدماتی با فایل و پوشه. در پوشهٔ پروژه npm start و npm test را اجرا کنید؛ صفحه روی http://127.0.0.1:3000 باز میشود. پروژه آموزشی و بدون پایگاه داده است.