Node.js تعداد زیادی از متغیرهای سودمند سراسری را داراست . بعضی از این متغیرها واقعن سراسری می باشند ( بین تمامی ماژول ها مشترک می باشند ) و بعضی از آن ها متغیر محلی می باشند ( متغیرها مختص ماژول جاری می باشند ) . ما بعضی از متغیرهای واقعی سراسری را داریم که با استفاده از تابع require استفاده می شوند .
بخش 11 – آموزش Node.JS ، سراسری های مهم
Node.js تعداد زیادی از متغیرهای سودمند سراسری را داراست . بعضی از این متغیرها واقعن سراسری می باشند ( بین تمامی ماژول ها مشترک می باشند ) و بعضی از آن ها متغیر محلی می باشند ( متغیرها مختص ماژول جاری می باشند ) . ما بعضی از متغیرهای واقعی سراسری را داریم که با استفاده از تابع require استفاده می شوند . و ماژول های module-level را داریم که بطور متغیرهای ضمنی تعریف می گردند ( با استفاده از module.exports ) و exports . حال با یکدیگر در ادامه تعدادی از مهم ترین سراسری ها را بررسی خواهیم کرد .
Console
Console یکی از متغیرهای سراسری بسیار مفید می باشد . برای شروع و شروع مجدد نرم افزارهای Node.js از خط فرمان براحتی می توان از آن استفاده نمود . console نقش مهمی را برای نمایش آنچه که در نرم افزار شما رخ می دهد ، هنگامی که نیاز به دیباگ کردن آن داریم بازی خواهد کرد . کافیست از console.log استفاده کنیم تا بتوانیم به این هدف برسیم . همچنین console توابع بیشتری نیز دارد که در قسمت های آینده بررسی خواهیم نمود .
Timer
ما قبلن setTimeout را با هم بررسی نمودیم . در واقع یک تابع را تنظیم می کند تا بعد از یک تاخیر مشخص فراخوانی گردد. یک مثال از setTimeout را در زیر مشاهده می کنید :
همانند setTimeout تابع setInterval نیز وجود دارد . setTimeout تنها یک بار و بعد از یک مدت مشخص تابع مورد نظر را فراخوانی می نماید . اما تابع setInterval بصورت متناوب و بعد از زمان مشخص شده تابع مورد نظر را فراخوانی می کند . کدهای زیر بعد از هر یک ثانیه ( هزار میلی ثانیه ) پیام second passed را چاپ خواهد نمود .
هر دو تابع setTimeout و setInterval شیء ای را برمی گرداند که می تواند برای تمام کردن آن ها استفاده کرد که آن ها clearTimeout/clearInterval می باشند .کد زیر طریقه ی استفاده از clearInterval را نشان می دهد که تابع مورد نظر بعد از پنج ثانیه و پنج بار فراخوانی متوقف شده و از نرم افزار خارج می گردد .
__filename و __dirname
این متغیر در هر فایل وجود داشته و مسیر کامل به فایل را به ما خواهد داد و دایرکتوری برای ماژول جاری را بر می گرداند. از کدهای زیر می توانید برای مشاهده ی مقادیر مورد نظر استفاده نمایید .
و نتیجه ی اجرای این کد را در سیستم بنده بصورت زیر خواهد بود :
آرگومان های خط فرمان
همانطور که می دانید Node.js مانند زبان های قدیمی مانند C/C++/Java/C# دارای تابع main نمی باشد و شما از شیء process برای دستیابی به آرگومان های خط فرمان استفاده خواهید کرد . آرگومان ها در خصیصه ی process.argv بصورت یک آرایه موجود می باشند . اولین المان node می باشد ، المان دوم نام فایل جاوا اسکریپتی می باشد که به Node.js پاس داده شده تا process را آغاز نماید ، و باقی مانده المان های آرگومان های خط فرمان می باشند . در زیر کد مربوط برای مشاهده ی این موضوع را ملاحظه خواهید کرد
پس از اجرای این کدها نتیجه ی زیر را مشاهده می نمایید :
Process.nextTick
Process.nextTick یک تابع ساده است که یک تابع callback را دریافت می نماید . در واقع به این کار می آید که callback را به چرخه ی بعدی در حلقه ی رویداد Node.js منتقل کند . این تابع بسیار موثر طراحی شده و توسط تعداد از کتابخانه های هسته ی Node.js استفاده می شود . در زیر مثالی از استفاده از این تابع را ملاحظه می فرمایید :
و خروجی اجرای آن برابر با تصویر زیر خواهد بود :
همانگونه که می بینید ابتدا immediate اجرا شده ، در حالی که callback در nextTick در حلقه ی رویداد بعدی به اجرا در آمده است . باید در هنگام استفاده از این تابع خیلی هشیار باشید چرا که این تابع ناشی از خاصیت و طبیعت غیرهمزمان بودن Node.js می باشد .
Buffer
جاوا اسکریپت خالص برای رشته های یونیکد عالی می باشد . بهرحال برای کار کردن با جریان های TCP و سیستم های فایل ، برنامه نویسان برای دستکاری کردن داده های باینری و پشتیبانی سریع آن را اضافه می کنند . برنامه نویسان در Node.js اینکار را با استفاده از کلاس Buffer انجام می دهند که بصورت سراسری می باشد .
Node.js تمامی سیستم های رمزگذاری مانند ASCII , UTF-8 , UTF-16 و ... را پشتیبانی می نماید . تبدیل رشته به بافر واقعن ساده می باشد . شما کافیست تا سازنده ی کلاس Buffer را صدا بزنید . سپس یک رشته و یک مدل encoding را به آن پاسکاری نمایید .
اجرای آن نتیجه ی زیر را در پی خواهد داشت
Global
متغیر global برای دستکاری کردن namespace ، global در Node.js می باشد . اگر شما با برنامه نویسی جاوا اسکریپت در front-end آشنا باشید این متغیر شبیه به شیء window در آنجا می باشد . تمامی سراسری های درستی که می بینیم ( console , setTimeout , process ) در واقع عضوی از متغیر سراسری global می باشند . شما حتی می توانید عضوی را به global اضافه نمایید تا بتوانید از آن در هر کجا که خواستید استفاده نمایید . در زیر مثالی را در این زمینه ملاحظه می نمایید :
خروجی آن به شکل زیر خواهد بود
شاد و سلامت باشید
محمد جعفری فوتمی