• بخش 13 – آموزش Node.JS ، پکیج های Node.js
بخش 13 – آموزش Node.JS ، پکیج های Node.js
1395/03/22 - 02:25:33 // Node.js // 0 نظر // 216 بازدید

برای استفاده از کتابخانه های اشخاص دیگر در نرم افزار خود ، Node.js با سیستم مدیریت پکیج های خود در نرم افزار شما می آید که عنوان آن Node Package Manager ( NPM ) می باشد . در این بخش در مورد چگونگی استفاده از این سیستم مدیریت پکیج ها با شما خواهیم بود .

بخش 13 – آموزش Node.JS ، پکیج های Node.js

هر نرم افزاری که می تواند در جاوا اسکریپت نوشته شود ، در نهایت در جاوا اسکریپت نوشته خواهد شد !

قانون Atwood ، توسط Jeff Atwood

برای استفاده از کتابخانه های اشخاص دیگر در نرم افزار خود ، Node.js با سیستم مدیریت پکیج های خود در نرم افزار شما می آید که عنوان آن Node Package Manager ( NPM ) می باشد . در این بخش در مورد چگونگی استفاده از این سیستم مدیریت پکیج ها با شما خواهیم بود .

بازنگری ماژول های Node.js

در قسمت های قبلی گفتیم که سه نوع ماژول در Node.js داریم . ماژول file-base ، ماژول core ، و ماژول external. در مورد دو نوع اول در بخش های قبلی صحبت کردیم و اکنون در مورد external ها صحبت خواهیم کرد .

· برای ارسال نام ماژول به تابع require از پیشوندهای ‘./’ یا ‘../’ یا ‘/’ استفاده نمودیم . و سپس فرض براین است که ماژول از نوع file-base بوده و فایل بارگزاری می گردد . مثال هایی از این دست : require(‘./ilia’) ، require(‘../ilia/ilia1’) ، require(‘full/path/ilia/file’) .

· و در صورتی دیگر مشاهده کردیم که ماژول های هسته را می توان تنها با نوشتن نام آن ها فرخوانی کرد . بطور مثال require(‘ilia’) .

جستجو برای node_modules

مثالی در این زمینه می زنیم . اگر یک فایل در مسیر /home/ryo/project/foo.js یک دستور require(‘bar’) داشته باشد ، آنگاه Node.js سیستم فایل را برای node_modules بر اساس ترتیب زیر اسکن می نماید . و اولین bar.js را برمی گرداند :

به عبارت دیگر ، Node.js بدنبال node_modules/bar.js در فولدر جاری جستجو می کند و این کار را به ترتیب ادامه می دهد تا به ریشه ی سیستم فایل برسد تا زمانی که یک bar.js را بیابد .

ماژول های folder-based

همانطوری که در قسمت های قبلی گفتیم شما می توانید تمامی ماژول های خود را در یک فایل index.js قرار داده و سپس آن index.js را فرخوانی کنید تا بدین ترتیب به تمامی ماژول ها دسترسی داشته باشید و دیگر نیازی به فراخوانی جداگانه ی هر ماژول نباشد .

حال این سناریو در Node.js بدین صورت است که اگر شما مسیر یک ماژول را به جای نام فایل ، نام یک فولدر بگذارید ، آن گاه Node.js در آن فولدر بدنبال یک فایل Index.js خواهد گشت و آن را به عنوان ماژول مورد نظر باز خواهد گرداند .

فواید node_modules

متوجه شدیم که node_modules شبیه به ماژول های مبتنی بر فایل می باشد ، منتهی با یک تفاوت که در مکانیستم اسکن و بارگزاری فایل جاوا اسکریپت ماژول دارند . سوال اینجاست که این تفاوت چه فوایدی دارد ؟

ساده کردن مسیرهای فایل طولانی

فرض کنید یک ماژول با عنوان ilia/ilia.js دارید که تعداد ابزار مفید را برای استفاده از جاهای مختلف نرم افزار شما فراهم می نماید . در بخش Foutami/Foutami.js شما با استفاده از فراخوانی require(‘../ilia/ilia.js’) و در بخشی دیگر مانند bas/nick/scott.js شما با استفاده از require(‘../../../ilia/ilia.js’) به آن دسترسی خواهید داشت . در اینجاست که شما براحتی با استفاده از node_modules/ilia/index.js می توانید براحتی مسیر خود را ساده سازی کنید . و با قرار دادن آن در مسیر ریشه و سپس فراخوانی require(‘ilia’) می توانید به آن دسترسی داشته باشید .

افزایش قابلیت استفاده مجدد

اگر شما بخواهید ماژول خود را با پروژه ای دیگر به اشتراک بگذارید ، کافیست شما node_modules/ilia را در آن پروژه کپی نمایید . در واقع اگر شما در دو زیر پروژه ی مشابه کار می کنید ، می توانید node_modules/ilia را به فولدر مشابه منتقل نمایید . در مثال زیر چنین چیزی را می بینید :

کاهش اثرات جانبی

بدلیل شیوه ی اسکن ماژول های در node شما می توانید وجود ماژول های مشابه در کدهای خود را محدود سازید .

غلبه بر ناسازگاری ماژول

Node.js از مشکلات وابستگی و ناسازگاری که در برخی از سیستم های قدیمی وجود داشت رنج نمی برد . در بسیاری از سیستم های قدیمی ، یک module نمی تواند با یک moduleY کار کند چرا که آن ها به نسخه های مختلفی از moduleZ وابسته می باشند . اما در Node.js هر ماژول فولدر node_module خودش را داشته و نسخه های مختلفی از moduleZ می توانند وجود داشته باشند . ماژول ها نیازی ندارند تا در Node.js بصورت سراسری باشند .

Caching ماژول و node_modules

همانطوری که گفتیم node_modules یک راه متفاوت برای یافتن ماژول های مبتنی بر فایل می باشد . بنابراین ، این روش نیز از همان قوانین caching پیروی می نمایند .

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

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

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

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

امتیاز به مطلب
           
نظرات کاربران
ارسال نظر