قالب وردپرس قالب وردپرس آموزش وردپرس قالب فروشگاهی وردپرس وردپرس
خانه / اموزش / java script / نگاهی به NodeJS+دانلود کتاب

نگاهی به NodeJS+دانلود کتاب

نگاهی به NodeJS+دانلود کتابReviewed by سالار on Sep 3Rating: 5.0

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

امروز میخواهم کمی راجب node js با شما حرف بزنم . من خودم تا چند وقت پیش نمیدونستم اصلا چه چیزی هست ولی تصمیم گرفتم تحقیقی راجب node js بکنم و کتابی هم بخونم تا بفهمم چیه پس با ما همراه باشید .. 🙂

NodeJs چیست ؟

Node.js پلتفرمی است بر مبنای موتور جاوا اسکریپت کروم که به منظور ایجاد برنامه های سریع و گسترش پذیر به وجود آمده است. Node.js از مدل رویدادگرا و non-blocking برای انجام عملیات I/O بهره می برد. از این‌رو Node.js یک پلتفرم سبک و کارا برای پیاده سازی برنامه های Real-time و مبتنی بر داده است که می توانند به راحتی در سرورهای نامتمرکز اجرا شوند.

درباره ند

nodejs

هدف ند، بدست دادن راهی ساده برای ساخت برنامه های قابل گسترشِ تحت شبکه است. در مثال وب سرور “Hello World” که در بالا از نظر گذشت، تعداد زیادی از کانکشن ها به طور همزمان قابل پردازش اند. ند ( از طریق epoll، kqueue، /dev/poll، یا select ) به سیستم عامل فرمان می دهد که هر زمان کانکشن جدیدی ایجاد شد، وی را باخبر سازد. سپس به حالت sleep می رود. اگر اتصال جدیدی برقرار شد، سیستم عامل callback را صدا می زند. هر کانکشن در واقع تنها یک اختصاص دهی کوچکِ Heap است.

 

این روش با مدلهای همزمانی (concurrency) کنونی که در آن از Thread های سیستم عامل استفاده می شود متفاوت است. برنامه های تحت شبکه که بر پایه Thread ها ایجاد می شوند ناکارآمد و برای استفاده، پیچیده اند. اینجا و اینجا را ببینید. ند در استفاده بهینه از حافظه تحت فشارهای بالا نسبت به سیستم هایی که برای هر کانکشن ۲ مگابایت thread stack اختصاص می دهند، بسیار بهتر عمل می کند. گذشته از این، کاربرانِ ند دیگر نگرانی در مورد dead-lock ها ندارند—هیچ قفلی وجود ندارد. بعلاوه هیچ دستوری در ند مستقیماً کار I/O را انجام نمی دهد، بنابراین پردازه هیچگاه بلاک نمی شود. و چون هیچ چیزی بلاک نمی شود برنامه نویسان غیر حرفه ای هم می توانند سیستم های پرسرعتی بنویسند.

 

ند در طراحی تحت تأثیر و بسیار شبیه سیستم هایی نظیر Event Machine رابی و یاTwisted پایتن (Python) است. ند مدل رویدادگرا را کمی جلوتر می برد— در ند چرخه ی رویداد به عنوان یک کتابخانه جدا از زبان نیست، بلکه با زبان گره خرده است. در سیستم های دیگر یک blocking call برای شروع چرخه رویداد وجود دارد. متد رایج این است که callback های مورد نیاز در شروع اسکریپت نوشته می شوند و در پایان سرور از طریق اجرای یک متدِ بلاک کننده یا Blocking Call شروع به کار می کند. مثلاُ در رابی داریم:EventMachine::run(). در ند چنین متدی برای شروع حلقه رویداد وجود ندارد. ند به سادگی پس از پردازش اسکریپت ورودی به چرخه ی رویداد وارد می شود. ند با تشخیص اینکه دیگر هیچ callback ای برای اجرا وجود ندارد از این حلقه خارج می شود. این عملکرد مانند اجرای جاوا اسکریپت در مرورگرهاست. حلقه رویداد از دید کاربر مخفی است.

 

در ند HTTP یک پروتکل ممتاز است. این کتابخانه بر اساس تجربیات نویسنده آن در توسعه برنامه های تحت شبکه و وب سرورها ایجاد شدهاست. برای مثال data streaming در اکثر framework ها کاری غیر ممکن است. ند سعی کرده است که این مشکلات را درپارسر HTTP خود و API های مربوط به آن حل کند. این ویژگی به همراه ساختار رویدادگرای ند، می تواند مبنایی برای بهترین کتابخانه ها و Framework های تحت وب باشد.

 

اما همزمانی در سیستم های چند پردازنده ای چطور؟ آیا thread ها برای گسترش برنامه روی کامپیوتر های چند هسته ای ضروری نیستند؟ در ند می توانید از دستورchild_process.fork() برای شروع پروسس های جدید استفاده کنید. این پروسس های جدید به صورت موازی اجرا خواهند شد. همچنین می توانید از ماژول cluster به منظور load balancing کانکشن ها روی چند پروسس استفاده کنید.

 

 ۱) تجربه ای متفاوت در راهندازی سرور

اگر از قبل با زبان های برنامه نویسی مثل PHP آشنایی دارید، میدانید که در این زبان به طور معمول سرور شما می‌تواند Apache و یا nGinX باشد (و یا ترکیبی از هردو). به زبان دیگر یعنی همه چیز به طور پکیج آماده شده و فقط نیاز به پیکربندی دارد.

خب، چه چیزی از این بهتر ؟! اما نه. در NodeJS همه چیز بر عهده خودتان است هرچند در دید اول موقع خواندن این مطلب شبیه به یک ضعف است اما اینطور نیست. درواقع آزادی عمل در پیکربندی سرور به شما قدرت بیشتری در مدیریت کارها و کاهش هزینه می‌دهد.

برخلاف PHP که درخواست های زیاد منجر به فشار زیادتر می شود و تنها راه اجاره سرورهای قدرتمند تر است، در NodeJS هسته سرور در اختیار شماست !

۲) برنامه نویسی ناهمگام

در مورد قبل کمی اشاره کردم که در PHP درخواست بیشتر به معنای اجاره کردن سرور قدرتمند تر است. اما در nodeJS پردازش های سنگین منجر به بلوکه کردن کل سیستم نمی شود و NodeJS می تواند با استفاده از رویداد Event-Loop آهنگ اجرای عملیات را مدیریت کند. در نتیجه راندمان اجرای دستورات به طرز چشمگیری افزایش پیدا می کند و با اجاره سرورهایی به مراتب ضعیف تر هزینه ها نیز کاهش پیدا می کند.

۳) NodeJS حد و مرزی ندارد !

البته این ویژگی تنها به لطف NodeJS نیست بلکه ذات جاوا اسکریپت بدون حد و مرز است، بنابر این با ابزار هایی مثل الکترون(که به شخصه بسیار به آن علاقه مندم) می توانید NodeJS و تمامی پکیج های آن را به دسکتاپ ببرید. برای من این قابلیت حس استفاده از WPF را القا میکند؛ هرچند با امکانات کمتر اما پیاده سازی رابط کاربری برای نرم افزار به این روش بسیار شیرین است. حتی برخی از ابزار های پیشرفته مثل Gulp به نحوی از قدرت NodeJS بهره می‌گیرند.

از کجا شروع کنیم ؟

The Node Beginner

نقطه شروع در یادگیری هر چیزی بسیار مهم است. اگر روند یادگیری شتاب مناسبی نداشته و از سادگی کافی برخوردار نباشد قطعا به شکست منجر می‌شود. طبیعتا یکی از منابع خوب برای یادگیری هر چیزی مراجعه به مستندات آن است. البته منبع فارسی NodeJS هم آموزش های خوبی دارد.

هدف کلی اینکتاب آشنا کردن شما با توسعه نرم‌افزار به‌وسیله Node.js است، در طول این آموزش، مباحث موردنیاز برای درک برنامه‌نویسی پیشرفته “جاوااسکریپت” را فرا خواهید گرفت و این آموزش فراتر از مثال “Hello World” خواهد بود.

دانلود

مطلب پیشنهادی

چگونه متن نوشته را به طور خودکار لینک کنیم؟!

چگونه متن نوشته را به طور خودکار لینک کنیم؟!Reviewed by سالار on Apr 5Rating: 5.0سلام …

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

 
در خبرنامه ما عضو شوید

در خبرنامه ما عضو شوید

در خبرنامه ما عضو شوید تا بهترین پست هفته مارو در ایمیل خودتون دریافت کنید :)

تبریک ! شما عضو خبرنامه ما شدید