خدماتی نظیر PayPal، اجرای 218 میلیون حساب کاربری (از سپتامبر 2017)، Uber، Netflix یا eBay اثبات حیات واقعی بهرهوری Node هستند. به همین دلیل ما میخواهیم افکارمان را درباره Node.js با شما به اشتراک بگذاریم.
Node.js یک محیط زمان اجرا در سمت سرور است که برای ساخت برنامههای سریع و مقیاسپذیر استفاده میشود. سبک است و به شما اجازه میدهد یک وب سرور را فقط در چند دقیقه ایجاد کنید.
Ryan Dahl مخترع Node.js، گفته است که از جیمیل الهام گرفته است، هدف او طراحی یک سیستم برای ایجاد یک وبسایت با قابلیت ارسال در زمان واقعی بوده است. بنابراین نمونه مبتنی بر رویداد تبدیل به قلب Node شد. برخلاف نمونه قبلی "درخواست/پاسخ"، درنهایت، توسعهدهندگان امکان ارتباط دو طرفه وبسایتها (کلاینت/سرور) با تبادل اطلاعات را به دست آوردند.
افسانهها و حقایق در مورد Node.js
در هسته، Node.js موتور سرور است که شما میتوانید آن را ویرایش و تنظیم کنید، و فقط بعد از آنکه آن را تنظیم کنید کار میکند. درخواستهای آن به عنوان یک حلقه (حلقه رویداد) پردازش میشوند، و به همین دلیل Node عمدتا زمان اجرا است. بخشی از اکوسیستم جاوا اسکریپت، که برای توسعه برنامه عالی است، وجود دارد، که میتوانید آن را به راحتی همراه با سایر ابزارهای JS، UIها و رابطها مدیریت کنید. به عبارت دیگر، JavaScript و Node به شما اجازه میدهند وبُسرورهای سادهای را فقط با چند خط کد ایجاد کنید.
اما اغلب مردم با برخی تصورات غلط درباره توسعه Node.js مواجه میشوند. در اینجا رایجترین افسانهها را بیان میکنیم.
افسانهها:
Node.js یک فریمورک است.
فقط بر روی موتور Chrome V8 کار میکند.
multi-threads را پشتیبانی نمیکند.
توسعهدهندگان مبتدی نمیتوانند با Node کار کنند.
حقایق واقعی:
Node.js اساسا سروری است که قادر به اجرای جاوااسکریپت میباشد.
یک سیستم منبع باز (open source) و چند سکویی (cross-platform) برای ساخت برنامههای وب است.
با APIهای رویداد محور و غیرهمزمان کار میکند.
هر برنامهنویس آشنا به جاوااسکریپت میتواند سریعا Node را یاد بگیرد.
حقایقی در مورد توسعه Node.js
Node.js دارای ویژگیهای گوناگونی است. احتمالا یکی از خاصترین آنها این است که یک پلتفرم سمت سرور است. با استفاده از Node، جاوااسکریپت تنها به front-end محدود نمیَشود (کار در مرورگر)، بلکه اجازه میدهد تا کار خارج از مرورگر را نیز انجام دهد. اجرای کد بر روی سرور به قابلیت پردازش سریع منجر میشود. همچنین چند واقعیت دیگر در مورد Node وجود دارد که خیلی پیچیده نیست.
جاوااسکریپت قدرتمند
آیا میدانستید که استفاده از جاوااسکریپت سادهترین و محبوبترین روش برای توسعه برنامهها در مرورگر است؟ شما میتوانید این کار را با زبانهای برنامهنویسی دیگر انجام دهید، اما این کار آسان نیست.
در مقایسه با زبانهای دیگر و سیستمهای حلقه-رویداد، مثل پایتون و Ruby، جاوا اسکریپت ثابت کرده است که عملکرد بهتری دارد. به علاوه فضای کمتری برای خطای انسانی وجود دارد، زیرا برنامهنویسان میتوانند از تغییر فکری بین مرورگر و سرور جلوگیری کنند.
قدرتمند شده توسط گوگل کروم
عملکرد Node.js در back-end توسط موتور گوگل V8 قدرت یافته است، به همان اندازه زمان اجرا در گوگل کروم برای اجرای جاوااسکریپت در front-end قدرتمند شده است. چه چیزی آن را بهبود بخشیده است؟ رقابت تیمهای توسعهدهنده برای پیشرفت جاوااسکریپت، آن را یکی از سریعترین و پویاترین زمانهای اجرا ساخته است. گوگل خودش با افتخار Node.js را در میان سایر قدرتهای موتور سیستمها قرار داده است.
علاوهبراین، با استفاده از ابزار توسعهدهنده گوگل، شما میتوانید کار اشکالزدایی را نیز انجام دهید. در کروم 57 به بالا، به طور پیشفرض قابلیت اشکالزدایی Node.js وجود دارد، و شما میتوانید از آن برای برطرف کردن خطاها هم در front-end و هم در back-end استفاده کنید.
تقویت شده توسط JSON
چرا از XML استفاده کنیم در حالی که JSON عملیتر است؟ استفاده از شیء جاوااسکریپت، فرمت تبادل اطلاعات قدرتمند و محبوبی است. ساده است و به توسعهدهندگان اجازه میدهد به سرعت APIها را بسازند. JSON یکی از ستونهای اصلی جاوااسکریپت است.
در روزهای اولیه برنامهنویسی، دادههای پویا در مرورگر باید با دقت در جاوااسکریپت مورد استفاده قرار گیرند. معرفی هدف کلی JSON ایجاد پایگاه دادههای NoSQL، مثل MongoDB بود. فقط برای JS طراحی شده بود، اما اکنون استاندارد بینالمللی است.
اشتراکگذاری
جامعه Node.js باز و دوستانه است، و آماده برای به اشتراکگذاری هر پکیج کدی است. Node از این رویکرد استقبال کرده و انجام آن را ساده میسازد. هر نویسندهای میتواند کد را منتشر کرده و یا ماژولهایی را در مخازن عمومی ایجاد کند. به لحاظ قانونی، دارای مجوز منبع باز MIT است.
شما ممکن است 475k پکیج کد را فقط در NPM پیدا کنید، که از package manager به مخزن (repository) رشد کرده است. در پاراگراف بعدی بیشتر در مورد آن صحبت میکنیم. بنابراین، این احتمال خیلی وجود دارد که وقتی با برخی چالشها/وظایف با توسعه Node.js مواجه میشوید، قبلا راهحلی وجود داشته است.
NPM، ماژولها و ابزار
صحبت از Node Package Manager (NPM)، به طور پیشفرض در Node گنجانده شده است که در واقع در هسته بیشتر سیستمها توسعه برای Node.js است، و با کمک آن، اکوسیستم Node در سالهای اخیر به صورت قابل توجهی گسترش یافته است. NPM شامل خط فرمان و پایگاه دادهای از پکیجها (registry) میباشد و پکیجهایی را که هم به صورت محلی برای پروژه و هم ابزارهای عمومی جاوااسکریپت هستند را مدیریت میکند.
این ویژگی نشان میدهد که برنامههای Node.js شامل ماژولهای کوچکتری هستند که میتوانید آنها را به اشتراک بگذارید. میتوانید هر یک از آنها را ساخته و مدیریت کنید. به عنوان ماهیت توسعه چنین ماژولهایی با Node، آنها عاری از مراقبت و تست آسان هستند. هر پکیج معمولا یک کار انجام میدهد، بنابراین بسیار موثر است.
همچنین لازم است لیستی از مزایا و معایب Node را داشته باشیم، پس اجازه دهید این کار را انجام دهیم:
مزایای Node.js:
یادگیری آسان برای هر توسعهدهندهای که با جاوااسکریپت آشنا است
یک محیط زمانبندی که از ذخیرهسازی ماژولها پشتیبانی میکند
ورودی و خروجی رویداد محور که مدیریت بهتر درخواستها را تضمین میکند
کد یکسان برای سمت سرور و سمت کلاینت = گسترش بیدردسر برنامه وب
NPM- بزرگترین package manager در دنیای نرمافزار
همچنین برای جریان فایلهای بزرگ امکانپذیر است
معایب Node.js:
API به صورت نامناسب افزایش مییابد
راهحل بهینهای برای وظایف سنگین بر روی CPU در مقایسه با زبانهای سطح پایین مثل C, C++, C# یا Golang وجود ندارد
تفکری جدا در مورد عملکرد ناهمزمان (asynchronous)
نتیجهگیری
Node.js کامل نیست، اما یک ابزار عالی برای ساخت برنامههای وب سمت سرور در جاوااسکریپت میباشد. همیشه در حال تکامل و گسترش است. برای مدیریت خوب وظایف توسعه وب نسبتا ساده است. سیستمی با هزینه و منابع کارآمد برای ساخت وبسایتها، APIها برای ادغام وب/تلفن همراه و نرمافزارهای مستقل است.
نظرات کاربران در رابطه با این دوره