• بخش 11 – آموزش Node.JS ، سراسری های مهم
بخش 11 – آموزش Node.JS ، سراسری های مهم
1395/03/19 - 00:44:19 // Node.js // 1 نظر // 4040 بازدید

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 اضافه نمایید تا بتوانید از آن در هر کجا که خواستید استفاده نمایید . در زیر مثالی را در این زمینه ملاحظه می نمایید :

خروجی آن به شکل زیر خواهد بود

شاد و سلامت باشید

محمد جعفری فوتمی

محمد جعفری فوتمی
معرفی نویسنده : محمد جعفری فوتمی

از سال 1382 بطور تخصصی در زمینه ی طراحی وب سایت کار کرده ام و در طی 12 سال گذشته تجربیاتی را کسب کرده ام که در هیچ کتاب و منبع آنلاینی یافت نمی شود ، تصمیم گرفته ام تا این تجربیات را در قالب مقالاتی به اشتراک بگذارم . امیدوارم مفید واقع شود .

امتیاز به مطلب
           
نظرات کاربران
  • علی
    1399/12/02 - 00:46:17

    0
    0
    خیلی مطلب آموزنده ای بود. مخصوصن شی global که من در جستجوی راه حلی بودم که بتوانم در فایل های مختلف Node از متغییرهای سراسری استفاده کنم.
ارسال نظر