Node.js چیست ؟
Node.js یک محیط باز و یکپارچه برای محیط جاوا اسکریپت جاوا برای ساختن مجموعه ای متفاوت از ابزارها و برنامه های کاربردی است.
به رغم این واقعیت که Node.js یک سیستم جاوا اسکریپت نیست،
تعدادی از ماژول های ضروری آن در جاوااسکریپت ساخته شده اند و مهندسان می توانند ماژول های جدید را در جاوا اسکریپت ایجاد کنند.
محیط زمان اجرا جاوا اسکریپت را با استفاده از موتور جاوا اسکریپت V8 جا به جا می کند.
Node.js منحصر به فرد مهندسی مناسب برای I / O غیر همزمان است.
این تصمیمات پیکربندی برای بهبود کارایی و سازگاری در برنامه های وب با عملیات اطلاعاتی / عملکردی گسترده
و همچنین برنامه های کاربردی وب (مانند پروژه های متناوب همیشگی و انحراف برنامه) برنامه ریزی می کند.
بررسی اجمالی
Node.js اجازه ساخت سرورهای وب و دستگاه های اداری سیستم را با استفاده از جاوا اسکریپت
و جمع آوری “ماژول ها” می کند که با استفاده از قابلیت های مختلف مرکز می باشد.
ماژول ها I / O مدارک ثبت شده، سازماندهی (DNS، HTTP، TCP، TLS / SSL، یا UDP)،
اطلاعات موازی (پشتیبانی)، ظرفیت رمزنگاری، جریان اطلاعات و سایر ظرفیت های مرکز است.
ماژول Node.js از یک رابط برنامه نویسی برای کاهش ماهیت چند منظوره برنامه های کاربردی سرور استفاده می کند.
برنامه های Node.js می توانند در Macintosh OS X، ویندوز مایکروسافت، کنسول و سرورهای یونیکس ادامه داشته باشند.
سپس آنها می توانند با CoffeeScript (جاوااسکریپت انتخابی)، Dart یا Microsoft TypeScript (بهویژه انواع جاوا اسکریپت)
و یا برخی از گویش های دیگر که می توانند برای جاوا اسکریپت جمع شوند، تشکیل می شوند.
Node.js اساسا برای ساختن پروژه های سیستم،
به عنوان مثال، سرورهای وب استفاده می شود، و آن را مانند PHP می سازد.
بزرگترین کنتراست بین Node.js و پی اچ پی این است
که اکثر قابلیت ها در پی اچ پی مانع از رسیدن به نتیجه می شود
(هزینه ها به سادگی پس از اتمام فراخوانی گذشته انجام می شود)،
در حالی که ظرفیت های Node.js به صورت غیر مسدود شده (دستورات به موازات اجرا می شود
و استفاده می شود callbacks برای پرچم تحمل یا ناامیدی) Node.js برنامه ریزی مناسبی را به سرورهای وب منتقل می کند
و توانایی بهبود وب سرورهای سریع در جاوا اسکریپت را می دهد.
مهندسین می توانند با استفاده از یک مدل ساده برنامه نویسی که بر مبنای برنامه ریزی شده است،
استفاده از callbacks را برای پر کردن پایان کار انجام می دهد.
Node.js با توجه به این واقعیت است که به طور همزمان در گوگل های برنامه نویسی متعدد در سمت سرور مشکل است
و به طور مرتب باعث اعدام ضعیف می شود.
Node.js ساده سازی یک گویش اسکریپت (جاوا اسکریپت) را با نیروی برنامه نویسی سیستم یونیکس مرتبط می کند.
Node.js براساس موتور گوگل V8 جاوااسکریپت بود،
زیرا منبع باز تحت مجوز BSD بود، به میزان قابل توجهی سریع و قادر به مقاصد وب مانند HTTP، DNS، TCP بود.
علاوه بر این، جاوا اسکریپت یک گویش برجسته بود، و Node.js فورا برای کل گروه بهبود وب باز شد.
پشتیبانی صنعت
توسعه دهندگان تعداد زیادی از کتابخانه های منبع باز را برای Node.js تهیه کرده اند –
اکثریت آن ها در سایت NMP تسهیل می کنند.
گروه طراح Node.js دارای دو پرونده پستی اصلی و کانال IRC # node.js در freenode است.
یک گردآوری مهندسی Node.js سالانه به نام NodeConf وجود دارد.
گروه منبع باز سیستم های سرور را ایجاد کرده است تا پیشرفت های بهره برداری را سریع تر کند.
چنین سیستم هایی شامل رابط، Express.js، Socket.IO، Koa.js، Hapi.js، Sails، Meteor، Derby و بسیاری دیگر است.
IDE های دسکتاپ فعلی تغییرات و عیب یابی را به ویژه برای برنامه های Node.js ارائه می دهند.
چنین IDE ها عبارتند از Iota، Sections، JetBrains WebStorm، مایکروسافت ویژوال استودیو
(با Node.js دستگاه برای ویژوال استودیو، یا TypeScript با تعاریف توپی، NetBeans، Nodeclipse Enide Studio (Shroud based) و ویژوال استودیو کد.
برخی از IDE های الکترونیکی آنلاین علاوه بر تقویت گره .js برای مثال، Codeanywhere، Codenvy، Cloud9 IDE و کدینگ.
موضوع
Node.js در یک رشته انفرادی با استفاده از تماس های ورودی / خروجی غیر بلوک کار می کند و اجازه می دهد
تا تعدادی از ارتباطات همزمان را تقویت کند بدون اینکه هزینه اتصال سوئیچینگ رشته را افزایش دهد.
طرح کلی برای به اشتراک گذاشتن یک رشته ی انفرادی بین هر یک از درخواست هایی که از نمونه ی تماشاگر استفاده می شود،
برای ساخت برنامه های کاربردی به طور همزمان به طور چشمگیری انتظار می رود، جایی که هر ظرفیت انجام I / O باید از callback استفاده شود.
توجه داشته باشید که هدف نهایی برای به عهده گرفتن یک حلقه منحصربفرد است، Node.js از کتابخانه libuv استفاده می کند
که از این رو با استفاده از یک threadpool اندازه گیری شده تغییر می کند
که مسئول تمام عملیات غیر ورودی / خروجی غیر بلوک شده است.
اشکال این روش متداول این است که Node.js اجازه می دهد مقیاس عمودی با افزایش تعداد مراکز CPU دستگاه که در حال اجرا است
بدون استفاده از یک ماژول اضافی، به عنوان مثال خوشه، مدیر StrongLoop Process Manager یا PM2، اجازه نمی دهد.
با این وجود، طراحان می توانند تعداد پیش فرض رشته ها را در libuv threadpool بسازند؛
این رشته ها قابل تقسیم بر روی مراکز مختلف توسط سیستم کار سرور هستند.
اجرای دستورات موازی در Node.js توسط استخر رشته مورد توجه قرار می گیرد.
ظرفیت های رشته ای اولیه، تکالیف را به خط مشروط مشترک که در رشته استریو پیوسته و اجرا می شود، ارسال می کنند.
ظرفیت چارچوب غیر بلوک مانند مدیریت سیستم به معنای پیوست های غیر بلوک جانبی بخش است،
در حالی که به طور طبیعی توانایی های چارچوب مانند I / O سند را تنها در یک مسیر مسدود می کند.
در نقطه زمانی که یک رشته در رشته استرداد یک تخصیص را تکمیل می کند، رشته اولیه این را روشن می کند
که به این ترتیب بلافاصله بیدار می شود و callback ثبت نام را اجرا می کند.
از آنجا که callbacks در سریال در رشته اولیه مراقبت می شوند،
محاسبات قابل اعتماد و سایر تخصیص های متصل به پردازنده، کل دایره مناسبی را تا پایان به پایان می رساند.
V8
V8 موتور اجرای جاوا اسکریپت برای گوگل کروم است و توسط Google در سال 2008 منتشر شد.
در C ++، V8 کد منبع جاوا اسکریپت را به کد ماشین محلی مجهز می کند،
به غیر از رمزگشایی آن به طور مداوم. Node.js با استفاده از libuv برای رسیدگی به رویدادهای غیر منتظره.
Libuv یک لایه مشورتی برای استفاده از سیستم و سند سیستم
در هر دو ویندوز و مبتنی بر POSIX چارچوب مانند لینوکس، Macintosh OS X، OSS در بی اهمیت و یونیکس است.
مفید بودن مرکز Node.js در یک کتابخانه جاوا اسکریپت ذخیره می شود.
Node.js در C ++ نوشته شده است، این نوآوری را به یکدیگر و چارچوب کاری متصل می کند.