ترجمه کتاب Node.js by Example – فصل دوم

خیلی خوب باز هم Node.js 🙂 !!! چند روز پیش سعی کردم فصل اول از کتاب Node.js by Example را بصورت روان ترجمه کنم تا توانسته باشیم مستندات فارسی بیشتری برای Node.js در وب داشته باشیم.  😛 اینطور که به نظر می رسد فصل دوم هم آماده شده است و می توانید آن را دانلود کنید. امیدوارم فصل اول در حد نرمال ترجمه شده باشد، اگر اینطور نیست بگید تا دیگر ادامه ندهم!  😉

به هر حال، نویسنده در این فصل خواسته است که قبل از شروع ساخت یک شبکه اجتماعی مدرن شما را با معماری پروژه، Grunt، Gulp و حتی MVC و REST API آشنا سازد.

 

آموزش Grunt و Gulp

 

همانطور که می دانید از ابزارهایی مثل Gulpjs و Gruntjs برای خودکار سازی وظایف استفاده می شود. به عبارتی وقتی در موقع توسعه وب نیاز باشد چندین وظیفه را بطور دستی انجام دهیم، از این ابزارهای برای اتوماسیون کردن وظایف استفاده می شود. به این ابزارها task runner می گویند. این ها تنها بخش از موضوعاتی است که در کتاب آمده است. نویسنده شما را قبل از اینکه وارد ساخت Social Network سازد، خواسته است پیشنیاز های ساخت پروژه را به شما یاد دهد تا درک بهتری از آنچه را که در فصل های بعدی خواهیم دید داشته باشید. اگر نکاتی را که باعث بهتر شدن ترجمه کتاب می شود لازم است را بگویید تا آن را رعایت کنم.  🙄

 

پیشنهاد می کنم اگر آشنایی چندانی با ابزارهایی مثل Gulp، Grunt یا Bower ندارید، آموزش های زیر را مطالعه کنید:


 

بخشی از فصل دوم – معماری پروژه

 

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

  • لایه های اساسی برنامه js
  • استفاده از یک اجرا کننده وظایف و سیستم ساخت
  • توسعه آزمون محور
  • الگو Model-View-Controller
  • مفهوم REST API

 

معرفی لایه های اساسی برنامه

 

اگر قصد ساخت یک خانه داشته باشیم، احتمالا باید از یک پایه بسیار قوی شروع کنیم. ما نمی توانیم تا وقتی که پایه ساختمان خود را به خوبی تقویت نکرده ایم تصمیم به ساخت چندین طبقه بر روی آن کنیم.

با این حال در نرم افزار کمی متفاوت است. ما می توانیم بدون داشتن یک پایه خوب شروع به توسعه برنامه کنیم. ما به این روش brute-force-driven development گوییم.

اجازه دهید درباره پروژه فکر کنیم — شبکه اجتماعی که قرار است با Node.js درست کنیم، با استفاده از کد ساده زیر شروع می کنیم:

اولین چیزی که در بالا توجه می کنید، نمایش دادن یک پیام به کاربر است، اما شاید بخواهید که محتوای یک فایل را نمایش دهید. Node.js بسیار شبیه به PHP می باشد، اما با این وجود یک تفاوت اساسی وجود دارد. PHP نیاز به یک سرور دارد تا درخواست ها  (request)را جمع آوری کند و آنها را به مفسر PHP منتقل کند و پس از آن کد PHP پردازش شده و پاسخ (response) را دوباره از طریق سرور به کاربر ارسال کند. اما در دنیای Node.js، نیازی به یک سرور خارجی (external) جداگانه نداریم. Node.js خود این کار را برای ما انجام می دهد. این به توسعه دهندگان این امکان را می دهد تا به درخواست های آمده رسیدگی کنند و تصمیم بگیرند که به آنها چه کاری انجام دهند.

اگر به کد قبلی مراجعه کنیم و فرض کنیم که فایلی به نام page.html داریم که شامل یک HTML ساده و یک فایل styles.css که CSSها را نگهداری می کند، قدم بعدی بصورت زیر خواهد بود:

در کد فوق ما درخواست های آمده URL را بررسی می کنیم. اگر آدرس http://localhost:3000/ یا http://127.0.0.1:3000/ را با مرورگر باز کنید، کدهای page.html به عنوان پاسخ (response) به ما ارسال خواهد شد. اگر تگ <link> در فایل page.html داشته باشیم که styles.css را لینک می کند، مرورگر یک درخواست دیگر نیز برای آن ایجاد می کند. URLها متفاوت هستند، اما با استفاده از بلوک if آنها را تشخیص می دهیم و محتوای مناسب را نمایش می دهیم.

تا اینجا بسیار خوب پیش رفته ایم، اما باید این احتمال را در نظر بگیریم که نه تنها به دو فایل، بلکه به چندین فایل نیاز داریم. ما قرار نیست تمام آنها را توصیف کنیم. بنابراین، این پروسه باید بهینه سازی شود. اولین لایه از هر سرور Node.js معمولا با مسیرها (route) سر و کار دارد. این کار باعث می شود درخواست های URL را تجزیه و آنگاه تصمیم گیرد چه وظیفه ای را انجام دهد. اگر ما نیاز به ارائه فایل های استاتیک داشته باشیم، پس ما باید منطق هر بخش از برنامه را در یک ماژول خارجی جداگانه قرار دهیم تا عملیات پیدا کردن فایل ها، نوشتن آنها، و ارسال پاسخ با محتوای مناسب انجام دهد. این می تواند لایه دوم از معماری برنامه ما باشد.

.

.

.

 

[button type=”success” size=”lg” link=”http://www.baboon.ir/uploads/2015/09/نود-جی-اس-با-تمرین-فصل-های-1-2.pdf”] دانلود کتاب آموزش نود.جی.اس فصل اول + دوم [/button]