به جلسه ی چهارم از سری آموزش مقدماتی انگولار رسیدیم. در این جلسه مفاهیمی را در خصوص کامپوننت ها و ماژول ها در انگولار فرا خواهید گرفت.
ماژول ها یک اپلیکیشن را به بلوک های منسجمی از ویژگی ها تبدیل می کنند. ماژول ها این کار را به وسیله ی کامپوننت ها، سرویس ها، دارکتیوها و پایپ ها انجام می دهند.
اپلیکیشن های انگولار، دارای پایه ی ماژولی هستند، یعنی از قسمت های کوچک تشکیل شده اند. هر اپلیکیشن انگولاری دارای حداقل یک ماژول است که به آن ماژول اصلی یا root module یا AppModule گفته می شود. root module می تواند تنها ماژول موجود در یک اپلیکیشن کوچک باشد. اما اپلیکیشن ها دارای تعداد زیادی ماژول دیگر نیز هستند. به عنوان یک توسعه دهنده و برنامه نویس، به شما بستگی دارد که چند ماژول را می خواهید در برنامه ی خود استفاده کنید.
بگذارید راحت تر بگوییم. شما چهار قسمت عمده در سیستم خود دارید. هر قسمت ماژول مخصوص به خود را (علاوه بر ماژول اصلی) دارد. پس در کل می شود پنج ماژول.
هر ماژول در انگولار، یک کلاس با دکوراتور NgModule@ می باشد. دکوراتورها توابعی هستند که کلاس های جاوا اسکریپت را مشخص می کنند. از آن ها برای پیوست کردن متادیتا به کلاس ها استفاده می شود تا به کلاس ها بگویند که چگونه پیکربندی شده و کار کنند. به عبارت دیگر دکوراتورها توابعی هستند، که تابع دیگری را دریافت میکنند و رفتار آن را تغییر میدهند.
پراپرتی هایی از دکوراتور NgModule@ که ماژول را تعریف می کند، عبارت اند از:
کامپوننت ها، ابتدایی ترین بلوک های سازنده ی رابط کاربری اپلیکیشن انگولاری هستند. یک کامپوننت، کنترل کننده ی یک یا چند بخش از نمای اپلیکیشن است. همان بخش هایی که قبلا به آن ها «نما» می گفتیم.
برای مثال در اپلیکیشنی که قرار است بسازیم، کامپوننت های AppComponent ،CategoriesComponent ،CategoryQuestionsComponent QuestionAnswersComponent و چند کامپوننت دیگر را خواهیم داشت.
یک کامپوننت به تنهایی شامل بخش قابل بازیابی در رابط کاربری است که از سه بخش تشکیل شده است:
دکوراتور Component@ که ما برای پردازش متا دیتای اضافی تعیین کردیم، در زمان اجرا یا runtime مورد استفاده قرار می گیرد. برای مثال ما یک قالب اچ تی ام ال مربوط به نما را قرار دادیم، سپس ما یک سلکتور اچ تی ام ال را که می خواستیم در کامپوننت استفاده شود، قرار دادیم. همچنین ویژگی های ظاهری کامپوننت خود را در یک stylesheet تعریف کردیم.
کامپوننت ها برای انتقال داده ها به نما، از یک پروسه به نام دیتا باندینگ استفاده می کنند. این پروسه یه معنای «انتقال و اختصاص دادن یک سری مقادیر به ویژگی های موجود در کامپوننت» است. عمل «بایندینگ مقادیر و اطلاعات» برای موارد زیر استفاده می شود:
برای این که یک کامپوننت بتواند توسط قسمت های مختلف اپلیکیشن یا کامپوننت دیگری، مورد استفاده قرار بگیرد، آن کامپوننت باید متعلق به NgModule باشد. برای این که مشخص شود که یک کامپوننت متعلق به NgModule است، باید آن را در NgModule تعریف کنید.
یک نکته در مورد اهمیت معماری کامپوننت ها در نرم افزار یا اپلیکیشن:
بهتر است که اپلیکیشن شما از کامپوننت های متعددی تشکیل شده باشد. یعنی هر رابط کاربری را در یک کامپوننت جدا قرار دهیم. می پرسید چرا؟ تصور کنید که ما دو عدد بلوک رابط کاربری متفاوت، در یک کامپوننت خاص (در یک فایل) داشته باشیم. در ابتدا هر یک از این رابط های کاربری کوچک هستند اما کم کم پیچیده تر شده و رشد می کنند. آن زمان است که ما تشخیص این که کدام دستورات و کدها متعلق به کدام رابط کاربری است، برای ما مشکل می شود. با این وجود، هر تغییر در کدهای اپلیکیشن هر دو مؤلفه را در معرض خطر قرار می دهد و ریسک را در تست کردن نرم افزار، بدون هیچ گونه مزایایی دو برابر می کند. اگر بخواهیم که یک رابط کاربری را در جای دیگری نیز استفاده کنیم، رابط کاربری دیگر هم به آن چسبیده خواهد بود، چرا که هر دوی آن ها درون یک کامپوننت هستند.
این سناریو، اصل مسئولیت محدود را برای هر کامپوننت نقض می کند. شاید فکر کنید که رعایت این اصل فقط یک پیشنهاد است اما باید توجه داشته باشید که برای دریافت بهترین بازخورد باید کارها را در کدنویسی با انگولار درست انجام دهید. خود انگولار نیز ساخت اپلیکیشن با توجه به اصل «مسئولیت محدود برای هر کامپوننت» را تشویق می کند.
یک اپلیکیشن انگولار شبیه به یک درخت تشکیل شده از شاخه هایی از جنس کامپوننت است (درختی از کامپوننت ها). توجه داشته باشید که کامپوننت های معینی «modal components» درون کامپوننت های مادر «parent component» قرار گرفته اند. زیرا آن ها کامپوننت های ضروری ای هستند که در کامپوننت اچ تی ام ال اپلیکیشن تعریف نشده اند. مانند شکل زیر:
خب! به پایان قسمت چهارم رسیدیم. در این جلسه راجع به کامپوننت ها و ماژول ها در انگولار صحبت کردیم. با ما در قسمت های پایانی نیز همراه باشید تا این نامه را به سر انجام برسانیم!
منبع: سایت Angular Templates
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.