logo-mini

به اشتراک گذاری این پست

Nodejs چیست و چرا ؟؟؟

NodeJS چیه؟
NodeJS یک فریم ورک سمت سرور بر پایه زبان جاوا اسکرپیت می باشد.

به چه دردی می خوره؟
برای مثال شما برنامه های تحت سرور رو با PHP می نویسید، اما الان می تونید همان برنامه ها را با JavaScript بنویسید.

فرقشون چیه؟
مفصر PHP برای اجرای کدهای شما خط به خط شروع به خواندن کد می کنه و تا زمانی که تحلیل روی آن خط تمام نشود به خط بعدی منتقل نمی شود، اما NodeJS تمامی خط های کد شما را تقریبا همزمان اجرا می کند و بدین ترتیب سرعت اجرای کدهای سمت سرور شما با سرعت غیر قابل تصوری افزایش پیدا می کند به این روش non-blocking گفته می شود.

قاطی نمی کنه؟
در این حالت شما دستور رو برای CPU ارسال می کنید و CPU شروع به Process می کنه و زمانی که پردازش تمام می شود نتیجه را توسط یک CallBack برای شما ارسال می کند و شما با توجه به نتیجه بازگشتی بقیه کدها را می نویسید، در این حین کد های دیگر که ارتباطی به کد های ارسال شده ندارد اجرا می شوند.

در واقع ترتیب اجرا شدن کد ها را شما برای برنامه معین می کنید.

نکته مهم بعدی اینه که در حالت عادی در برنامه های سمت سرور کنونی تا زمانی که شما یک درخواست رو برای سرور ارسال نکنید، سرور هیچ جوابی نمی تونه برای شما ارسال کنه و در واقع سرور به کلاینت دسترسی مستقیم نداره و یک ارتباط یکطرفه برقرار میشه.

مشکلش چیه؟
مثلاً فکر کنید می خواهیم یک برنامه چت رو بنویسیم، وقتی ما یک پیغام را تایپ می کنیم، با فشردن دکمه Enter متن ما برای سرور ارسال می شه، اما وقتی طرف مقابل ما برای ما یک پیغام را تایپ می کنه سیستم ما متوجه نمی شه که از طرف مقابل پیغامی ارسال شده، یکی از راه های کاظم آبادی اینه که ما یه تایمر بذاریم و هر چند ثانیه چک کنیم که پیغام جدید ارسال شده یا نه. (یاد احسان به خیر !)

حالا فکرش رو بکنید که ۱۰۰ نفر همزمان با هم بخوان چت کنن و در هر ثانیه چندیدن درخواست به سرور ارسال می شود که اطلاعات را برای ما بفرسته، در نتیجه بار سنگینی به سرور تحمیل می شه و دیگه لازم نیست کسی سرور شما رو هک کنه، شما خودتون زحمت Down کردن سرور رو کشیدید !!!

NodeJS می تونه کاری انجام بده که این ارتباط به صورت دو طرفه برقرار بشه، یعنی اینکه سرور هر موقع خواست برای شما دیتا ارسال کنه، حالا چه اتفاقی می افته ؟

به محض اینکه شخص مقابل شما یک پیغام برای شما تایپ می کنه، این پیغام برای شما پدیدار می شود !

حالا چرا تایمر سیستم رو منفجر می کنه ولی NodeJS فشاری نمیاره ؟

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

خوب مقدمه چینی برای NodeJS تا همین جا کافیه.

NodeJS چطوری نصب می شود؟
شما می تونید به سایت Nodejs.ir سر بزنید و آخرین ورژن NodeJS رو با توجه به سیستم عامل خودتون دانلود و نصب کنید، با توجه به اینکه من بشخصه ویندوز رو دوست دارم، نصب در سیستم عامل ویندوز رو توضیح می دم و لینوکس دردسر زیاد داره !

خوب بعد از دانلود، برنامه رو نصب کنید.

تموم شد، نصب شد !

چطور از NodeJS استفاده کنیم؟
با اجرای دستور cmd در run محیط Command Prompt را اجرا کنید، دستور node را تایپ کنید و Enter کنید :

کد:
node

این هم از این، node اجرا شد !

چطور تست کنیم که NodeJS کار می کنه یا نه؟
بعد از وارد کردن عبارت node و فشردن Enter شما به یک خط پائین تر هدایت شدید و یک سطر خالی برای شما محیا شد،

حالا وارد کنید ۲+۳ و مجدد Enter کنید:

کد:
۲+۳

نتیجه ای که بعد از این دستور مشاهده می کنید عدد ۵ می باشد! حتی می تونید یک function وارد کنید، بعد از وارد کردن کاراکتر ; برنامه خود به خود متوجه می شود که function به پایان رسیده است و می توانید از آن استفاده کنید ولی این روش رو اصن پیشنهاد نمی کنم!

حالا cmd یا همون Command Prompt رو ببندید.

بیاید این تست رو یکمی پیشرفته تر کنیم، در درایو C یک فایل به نام test.js ایجاد کنید و درون این فایل بنویسید:

کد:
console.log('Hi !');

این دستور یعنی در کنسول عبارت Hi چاپ شود، فایل را ذخیره کنید و خارج شوید.

یک بار دیگه عبارت cmd در محیط run اجرا کنید. توسط دستور زیر به درایو c هدایت شوید:

کد:
cd/

حالا عبارت زیر را وارد کنید تا توسط برنامه NodeJS فایل test.js اجرا کنید:

کد:
node test.js

می بینید که عبارت !Hi در کنسول نمایش داده شده است!

شما یک برنامه ساده NodeJS نوشتید و آنرا را اجرا کردید.
سعی کردم در این متن به ساده ترین حالتی که می تونستم توضیح بدم. کم کم می ریم به سمت اینکه یک برنامه به نسبت حرفه ای رو بنویسیم.

محمدرضا

محمدرضا محمودی هستم ، سعی شده در این وبلاگ مطالب مفید و کارامدی قرار بگیره ، از اینکه وقت میگذارید و مطالب رو مطالعه میکنید متشکرم... ممنون میشم اگر موردی و یا ... میبینید حتما نظرات خودتون رو ارسال کنید


نظر بدهید