Node.js چیست؟
Node.js یک محیط زمان اجرای برنامه است که به شما اجازه میدهد برنامههای سمت سرور را در جاوااسکریپت بنوییسد. Node.js به لطف مدل منحصربهفرد I/O خود، در شرایط زمان واقعی (run-time) و مقیاسپذیری که به طور فزاینده از سرورها خواستاریم برتری دارد. همچنین کمحجم، موثر و کارا است و توانایی آن در استفاده از جاوااسکریپت در frontend و backend، راههای جدیدی را برای توسعهدهنده باز میکند. جای تعجب نیست که بسیاری از شرکتهای بزرگ از Node.js در تولیدات خود بهره میبرند. در این مقاله میخواهیم ببینیم چه وقت استفاده از Node.js ارزشمند است، و در چه مواردی ممکن است بهترین ایده باشد.
چگونه Node.js از web JavaScript متفاوت است؟
در زبان مورداستفاده هیچ تفاوتی بین Node.js و وب جاوااسکریپت وجود ندارد. جاوا اسکریپت مورد استفاده در مرورگرها و در Node.js تقریبا یکسان هستند. چیزی که Node.js را خاص میسازد، مجموعه APIهای مختلف است. در مرورگرها شما دارای انواع مختلفی از APIهای DOM/Web هستید که به شما در برقراری ارتباط با UI کمک میکند و اجازه میدهد به میزان محدود به سختافزار دسترسی داشته باشید. Node.js با APIهای مناسب بسیاری برای توسعه backend همراه است، مثل پشتیبانی فایل سیستمها، درخواستهای http، استریمها، فرآیندهای فرزند (child process) و غیره. مرورگرها برخی پشتیبانیهای اساسی فایل سیستمها یا درخواستهای http را ارائه میدهند، اما معمولا به دلیل نگرانیهای امنیتی محدود میشوند.
چرا توسعه پروژه شما با Node.js ارزشمند است؟
اول از همه، استفاده از Node.js به عنوان تکنولوژی سرور پیشرفت خوبی را به تیم شما میدهد که با استفاده از همان زبان بر روی front end و back end میآید. این بدان معناست که تیم شما کارآمدتر و cross-functional میشود، که به نوبه خود منجر به کاهش هزینههای توسعه میگردد. علاوهبراین، لازم به ذکر است که جاوااسکریپت محبوبترین زبان برنامهنویسی است، بنابراین کد پایه (codebase) برنامه شما توسط مهندسان بسیار قابل درک خواهد بود. شما همچنین میتوانید کدها را بین بخشهای frontend و backend برنامه خود به اشتراک گذاشته و مجددا استفاده کنید، که به فرآیند توسعه سرعت میبخشد. جامعه Node.js به طور مداوم در حال رشد است. تعداد سوالات StackOverflow به طور پیوسته افزایش مییابند، بنابراین دانش پایهای آن برای تکنولوژی به طور گسترده در دسترس است. واقعیت این است که کل تکنولوژی Node.js منبع باز (open-source) و رایگان است و همچنین آوازه خوبی دارد. درنهایت، Node یک package manager عالی ارائه میدهد، npm، و مقدار ابزارهای منبع باز قابل دسترس در ریجیستری npm گسترده بوده و سریع در حال رشد است. اینها فقط چند مزیت Node.js هستند که باید برای انتخاب تکنولوژی برنامه بعدی خود به آنها توجه کنید.
موارد استفاده عالی
برنامههای زمان واقعی (real-time)
Node.js انتخاب خوبی برای برنامههایی است که باید حجم زیادی از پیامهای کوتاه که نیاز به زمان تاخیر کم دارند را پردازش کنند. چنین سیستمهایی برنامههای زمان واقعی (RTA) نامیده میشوند و میتوانند به راحتی با Node.js توسعه یابند. به لطف خصوصیات آن، Node.js انتخاب خوبی برای برنامههای ترسیم/ویرایش زمان واقعی است که شما میتوانید مستنداتی را که به صورت زنده و آنی توسط شخص دیگری تغییر یافته است را ببینید (مثل Trello، Dropbox Paper یا Google Docs).
لیست RTAهایی که میتوانند بدون دردسر با Node.js توسعه یابند بسیار طولانی است. یکی از محبوبترین آنها برنامههای چت زنده و پیامهای فوری است، وقتی میخواهید یک برنامه کنفرانس ویدیویی ایجاد کنید که با سختافزار خاص یا VoIP کار میکند. علاوه براین ممکن است بخواهید Node.js را برای برنامههای بازی آنلاین یا نرمافزار معامله تجارت الکترونیکی بررسی کنید که در آنها اطلاعات آنلاین اهمیت زیادی دارد.
Node.js برای برنامههای real-time بسیار کارآمد است: مدیریت درخواستهای چندگانه کلاینت را آسان میسازد، قابلیت اشتراکگذاری و استفاده مجدد پکیجهای کد کتابخانه را ایجاد میکند و همگامسازی (sync) دادهها بین کلاینت و سرور را بسیار سریع میسازد.
محیط سریع و مقیاسپذیر
اگر شما درخواستهای زیادی داشته باشید، Ruby on Rails ممکن است از لحاظ سرعت کافی نباشد. Node.js ثابت کرده است که تا حدودی از Rails سریعتر و مقیاسپذیرتر است. توانایی Node برای پردازش درخواستهای زیاد با زمان پاسخگویی کم، همچنین اشتراکگذاری مواردی مثل اعتبارسنجی کد بین کلاینت و سرور، آن را به یک گزینه عالی برای برنامههای مدرن وب که پردازشهای زیادی را سمت کلاینت انجام میدهند تبدیل کرده است. به همین دلیل Node.js یک انتخاب محبوب میان سایتهای "برنامههای تک صفحهای (single-page)" میباشد که تمام مدیریتها سمت کلاینت انجام میشوند، و backend فقط یک JSON API ارائه میدهد. Node.js همچنین وقتی مفید است که میخواهید حجم زیادی از درخواستهای IO-bound را پردازش کنید.
چه وقت ممکن است Node.js بهترین ایده نباشد؟
با وجود اینکه Node.js در بسیاری موارد کاملا مناسب برای ساخت برنامهها است، هنوز مواردی وجود دارد که خوب نیست و نباید از آن استفاده شود.
CPU سنگین
اولین چیزی که به ذهن خطور میکند برنامههای سنگین محاسباتی است. Node.js مبتنی بر event-driven، مدل I/O غیرانسدادی است و تنها از یک هسته CPU استفاده میکند. عملیات سنگین CPU فقط درخواستهای ورودی را مسدود میکنند و ارائه بزرگترین مزیت Node.js بیفایده است. اگر شما در حال فکر کردن به ساخت نرمافزار سنگین CPU هستید، سعی کنید از تکنولوژی متفاوت و مناسبتری استفاده کنید که نتایج بهتری را به شما میدهد.
CRUD
درنهایت، استفاده از Node.js برای برنامههای HTML و CRUD که در آن شما نیاز به API جداگانهای ندارید، و همه دادهها به طور مستقیم از سرور میآیند بیفایده است. برنامه شما ممکن است مقیاسپذیرتر شود، اما انتظار نداشته باشید که ترافیک بیشتری به برنامه شما وارد شود فقط به این دلیل که از Node.js استفاده کردهاید، در چنین مواردی شما باید از فریمورکهایی مثل Ruby استفاده کنید.
کیفیت پکیج
قبل از شروع Node.js موارد زیادی وجود دارد که باید در نظر گرفته شود. بسیاری از پکیجهای Node.js در npm در دسترس هستند. جامعه مرتعش است، تکنولوژی کاملتر میشود، و npm در حال حاضر بزرگتری مخزن موجود است. با این حال، کیفیت پکیجها متفاوت است. گاهی اوقات شما هنوز هم میتوانید با پکیجهایی که تنها توسط کاربران خاصی پشتیبانی میشوند با مسائل مواجه شوید. مثلا هنگام اتصال برنامه Node به سیستم پایگاه داده قدیمی یا مبهم.
از کجا شروع کنیم؟
اول از همه، به صفحه وب رسمی Node.js (nodejs.org) بروید و پکیج Node.js را دانلود کنید. سپس باید Node.js package manager را نصب کنید تا وابستگیهای پروژه را به سادگی نصب و مدیریت کنید. npmjs.com را ببینید و دستورالعملهای نصب را دنبال کنید. در حال حاضر ما آماده نوشتن کد هستیم.
بهترین نقطه شروع Node.js راهنمای رسمی آن است که با آن میتوانید مفاهیم اصلی Node.js را بیاموزید. در راهنمای Node.js شما می توانید پاسخ به یکی از مهمترین سوالات را پیدا کنید: چگونه یک سرور ساده Node.js بسازیم؟
بعدها میتوانید به دنیای Node.js وارد شده و برخی فریمورکهای مهم مثل express.js را امتحان کنید تا ایدهای در مورد نحوه استفاده وابستگیهای جاوااسکریپت به دست آورید (expressjs.com). Express.js به شما امکان میدهد برنامههایی با کارایی بالا، مقیاسپذیر و با قابلیت نگهداری آسان در جاوااسکریپت بسازید. بهترین راه یادگیری express.js راهنمای رسمی وبسایت express.js و مطالعه مهمترین ویژگیها مثل مسیریابی و اشکالزدایی است.
بعد از آن شما آمادهاید تا برنامههای خود را بسازید.
نظرات کاربران در رابطه با این دوره