مروری بر کتابخانههای Angular
بسیاری از برنامهها باید مسائل عمومی مشابهی را حل کنند؛ مانند ارائه یک رابط کاربری یکپارچه، نمایش دادهها و فراهمکردن امکان ورود داده. توسعهدهندگان میتوانند برای حوزههای مشخص، راهکارهای عمومی ایجاد کنند که قابلیت سازگاری و استفاده مجدد در برنامههای مختلف را داشته باشند. چنین راهکاری را میتوان در قالب کتابخانههای Angular ساخت و این کتابخانهها را بهصورت بستههای npm منتشر و به اشتراک گذاشت.
کتابخانه Angular نوعی پروژه Angular است که برخلاف یک برنامه، بهتنهایی قابل اجرا نیست. کتابخانه باید در یک برنامه import و استفاده شود.
کتابخانهها قابلیتهای پایه Angular را گسترش میدهند. برای مثال، برای افزودن فرمهای reactive به یک برنامه، ابتدا بسته کتابخانه را با ng add @angular/forms اضافه کنید و سپس ReactiveFormsModule را از کتابخانه @angular/forms در کد برنامه import کنید. به همین ترتیب، افزودن کتابخانه service worker به یک برنامه Angular یکی از مراحل تبدیل آن به یک Progressive Web App یا \(PWA\) است. Angular Material نمونهای از یک کتابخانه بزرگ و عمومی است که کامپوننتهای رابط کاربری پیشرفته، قابل استفاده مجدد و سازگار ارائه میکند.
هر توسعهدهندهای میتواند از این کتابخانهها و سایر کتابخانههایی استفاده کند که تیم Angular یا اشخاص ثالث بهصورت بستههای npm منتشر کردهاند. به استفاده از کتابخانههای منتشرشده مراجعه کنید.
ایجاد کتابخانهها
اگر قابلیتهایی توسعه دادهاید که برای استفاده مجدد مناسباند، میتوانید کتابخانههای خودتان را ایجاد کنید. این کتابخانهها را میتوان بهصورت محلی در workspace استفاده کرد یا بهشکل بستههای npm منتشر کرد تا با پروژهها یا توسعهدهندگان دیگر Angular به اشتراک گذاشته شوند. این بستهها را میتوان در رجیستری npm، یک رجیستری خصوصی npm Enterprise یا سامانه خصوصی مدیریت بستهای که از بستههای npm پشتیبانی میکند، منتشر کرد. به ایجاد کتابخانهها مراجعه کنید.
تصمیم برای بستهبندی قابلیتها در قالب یک کتابخانه، تصمیمی معماری است. این تصمیم با تعیین اینکه یک قابلیت کامپوننت است یا service، یا مشخصکردن محدوده یک کامپوننت قابل مقایسه است.
بستهبندی قابلیتها بهصورت کتابخانه باعث میشود اجزای موجود در کتابخانه از منطق کسبوکار برنامه مستقل باشند. این جداسازی میتواند از روشهای نامناسب یا اشتباهات معماریای جلوگیری کند که در آینده تفکیک و استفاده مجدد از کد را دشوار میکنند.
قرار دادن کد در یک کتابخانه جداگانه، پیچیدهتر از قرار دادن همهچیز در یک برنامه است. مدیریت، نگهداری و بهروزرسانی کتابخانه به زمان و بررسی بیشتری نیاز دارد. وقتی کتابخانه در چند برنامه استفاده شود، پذیرش این پیچیدگی ارزشمند خواهد بود.