در این مقاله بررسی میکنیم که فریم ورک انگولار (Angular) چیست و چه مزایا و معایبی دارد. همچنین، به کاربردها، معماری و ساختار و نحوه استفاده انگولار میپردازیم و به تفاوت آن با AngularJS و اصطلاحات رایج آن هم اشاره خواهیم کرد.
فریمورک انگولار (Angular) چیست؟
انگولار (Angular)، یک فریمورک متنباز، رایگان و بر پایه تایپاسکریپت (TypeScript) است. توسعهدهنده انگولار گوگل میباشد و در سالهای اخیر بین توسعهدهندگان وباپلیکیشن، به محبوبیت فوقالعادهای دست پیدا کرده است. این فریمورک بیشتر جهت توسعه اپلیکیشنهای تکصفحهای به کار میرود و همانند تمامی فریمورکهای شناخته شده در جهان، دارای مزایا و معایب خاص خودش است.
خوشبختانه جامعه انگولار جهانی است و در زمان نگارش این مقاله، بیش از 1.7 میلیون توسعهدهنده و تولیدکننده کتابخانه از این فریمورک استفاده کرده و به توسعه آن کمک میکنند. امروزه نسخه جدید انگولار با نام Angular +2 نیز شناخته میشود.
در این مقاله از کدیاد، قصد داریم تا شما را با فریمورک انگولار (Angular) و تمامی جوانب آن آشنا کنیم.
شما میتوانید همن حالا در دوره آموزش انگولار کدیاد شرکت کنید و Angular و تایپ اسکریپت را بطور جامع و پروژهمحور فرا بگیرید.
ویژگیها و مزایای انگولار
Angular دارای مجموعهای جامع از ویژگیهایی است که توسعه برنامههای وب را ساده میکند. همچنین دانستن مزایای فریمورک انگولار، به شما دید خوبی در رابطه با شروع یادگیری و فعالیت در آن میدهد.
کتابخانه بزرگ: روزانه کامیونیتی انگولار گستردهتر شده و در نتیجه کتابخانههای رایگان مربوط به این فریمورک به فراوانی یافت میشود. در نتیجه کتابخانههایی که مربوط به توسعه اپلیکیشنهای خاص هستند نیز به سادگی پیدا میشوند.
- امنیت: بهترین شیوههای امنیتی را برای محافظت از برنامههای خود، در برابر آسیبپذیریهای رایج در وب پیادهسازی میکند.
- کامپایل پیش از اجرا (AOT): بهبود عملکرد از طریق کامپایل AOT که کد نهایی جاوا اسکریپت را بهینه تولید میکند.
- تشخیص تغییر: مکانیسم تشخیص تغییر Angular به طور موثر رابط کاربری را بر اساس تغییرات دادهها آپدیت میکند.
- Universal Platform: برنامههایی بسازید که هم روی مرورگر و هم روی سرور اجرا شوند (به قول معروف اجرا در سمت سرور).
- قابلیت استفاده مجدد: از مزایای جذاب انگولار، میتوان به قابلیت استفاده مجدد کامپوننتها در پروژههای دیگر، اشاره کرد. به طور مثال، شما در یک پروژه از کامپوننت انتخابگر تاریخ، لیستهای مرتبسازی، باکس جستجو و... استفاده کردهاید؛ با توجه به اینکه این کامپوننتها در پروژههای دیگر قابل استفاده میباشند، قادر هستید تا آنها را از پروژهای به پروژه دیگر منتقل کنید. در نتیجه، در وقت خود صرفهجویی کردهاید.
- قابل نگهداری بودن: زمانی که با یک پروژه بزرگ درگیر هستید، امکان ندارد باگها و مشکلات به سراغتان نیایند. ویژگی قابل نگهداری بودن فریمورک Angular به شما کمک میکند تا در هر زمان که به باگها و مشکلات برخورد کردید، به راحتی آنها را حل کنید. البته چنین چیزی در صورتی امکانپذیر است که شما استانداردهای مستندسازی پروژه و مخصوصا Best Practice را رعایت کرده باشید.
- تست دوستانه اجزاء (Unit Test Friendly): یونیت تست فرندلی یا تست دوستانه اجزاء، کوچکترین قابلیت تست پروژه در فریمورک انگولار محسوب میشود. در پروژههای بزرگ، اجزاء کوچک به یکدیگر وابسته هستند و در نهایت همین واحدهای کوچک، یک پروژه بزرگ را تشکیل میدهند. با این قابلیت میتوانید تمامی اجزاء کوچک پروژه خود را تست و عیبیابی کنید.
- کپسوله سازی پروژه: در برخی از پروژهها، تیمها و گروههای مختلف با یکدیگر همکاری میکنند؛ با توجه به اینکه هر واحد باید بخش مختص به خود را توسعه دهد، ویژگی کپسوله سازی پروژه به شدت کاربردی است. این قابلیت علاوه بر اینکه موجب میشود هر شخص یا گروه بر روی بخش خود کار میکند، باعث افزایش امنیت پروژههای انگولار نیز خواهد شد.
کاربردهای انگولار (Angular)
شاید برایتان جالب باشد تا بدانید که فریمورک انگولار (Angular) در توسعه چه برنامهها و پلتفرمهایی کاربرد دارد:
- توسعه وباپلیکیشنهای پیچیده: معماری ساختاریافته و ویژگیهای غنی Angular، آن را برای توسعه برنامههای کاربردی وب که دارای قابلیتها یا اجزای پیچیده هستند، سادهتر میکند.
- اپلیکیشنهای چت: انگولار توانایی ویژهای در مدیریت و بروزرسانی لحظهای دادهها دارد. به کمک چنین قابلیتی، توسعه اپلیکیشنهای چت لحظهای (بدون بهروزرسانی صفحه) آسان شده است.
- شبکههای اجتماعی: قابلیت Real Time (بهروزرسانی لحظهای) انگولار، مناسب برای شبکههای اجتماعی با محتوای پویا میباشد؛ تعاملات، انتشار محتوای جدید، چت و... در لحظه انجام میشوند؛ درست مثل اینستاگرام.
- برنامههای کاربردی تجارت الکترونیک (E-commerce): اگر نیاز به برنامهای دارید که در آن ویژگیهایی مثل فهرستبندی محصول، سبد خرید، فرم پرداخت و... باید وجود داشته باشد، انگولار انتخاب مناسبی است.
اینها نمونههای کوچکی از کاربردهای انگولار هستند. این فریمورک انعطافپذیری بالایی دارد و به قول معروف از پس هر کاری برمیآید.
دوره آموزش جاوا اسکریپت کدیاد یکی از کاملترین دورههای موجود است که به زبان ساده و کاملا پروژهمحور طراحی شده است.
معماری و ساختار انگولار
تمامی برنامههای ساخته شده با فریمورک انگولار، از یک ساختار و معماری خاصی تبعیت میکنند. در ادامه به بررسی کلی آن میپردازیم:
- طرحها: ساختار ظاهری انگولار و طراحی آن، بر پایه HTML است. به طور مثال دکمهها، لیستها، فرمها به وسیله این زبان ساخته میشوند.
- ماژولها: ساختار کلی انگولار، از یک ماژول گروهبندیشده استفاده میکند. در این ساختار، تمامی دستورات، سرویسها، کامپوننتها با هم عمل میکنند. به عبارت دیگر، ساختار ریشهای (معروف به AppModule) دارد.
- کامپوننتها: کامپوننتها در انگولار قابلیت استفاده مجدد را دارند. آنها طرح و ویژگیهای از پیش تعریفشده خاص خود را دارند. همچنین، از طریق اتصال دادهها به یکدیگر، رویدادهای تعاملی کاربر را مدیریت میکنند.
- متادیتا یا فراداده: اطلاعات مهم درباره سرویسها، کامپوننتها و سایر ساختارهای برنامه را ارائه میدهد. این اطلاعات توسط کامپایلر Angular در هنگام اجرای برنامه، جهت درک بهتر برنامه استفاده میشود.
- دستورالعملها: ویژگیهای HTML را با قابلیتهای جدید تغییر میدهد. آنها DOM را دستکاری میکنند و با توجه به رویدادها، تغییراتی را در رفتار کامپوننت یا ظاهر آن اعمال میکنند.
تفاوت انگولار با انگولار جی اس
Angular و AngularJS با وجود نامهای مشابه، در واقع فریمورکهای کاملاً متفاوتی هستند. در اینجا به بررسی تفاوتهای کلیدی میپردازیم:
- زبان کدنویسی: انگولار اساساً از TypeScript استفاده میکند؛ مجموعهای از جاوا اسکریپت که تایپ استاتیک را برای نگهداری بهتر کد و خطاهای کمتر احتمالی اضافه میکند. اما در طرف مقابل انگولار جی اس شدیداً به جاوا اسکریپت متکی است.
- پروژههای مدرن: با توجه به اینکه انگولار ویژگیهای جدیدتر و مدرنتری را به نسبت انگولار جی اس دارد، به عنوان یک توسعهدهنده بهتر است انگولار را برای پروژههای خود انتخاب کنید. خیلی از ساختارهای انگولار جی اس دارای مشکلات فنی و منقضی شده هستند.
- ابزارهای توسعه: انگولار دارای یک خط دستور (CL) است که توسعه پروژهها را سادهتر میکند؛ متاسفانه انگولار جی اس فاقد چنین ویژگی و ابزاری میباشد.
- عملکرد کلی: عملکرد Angular به دلیل معماری و مکانیزمهای پایهای، به طور کلی سریعتر از AngularJS است.
به طور خلاصه، Angular یک بازنویسی کامل از AngularJS است که رویکردی مدرن، کارآمد و مقیاسپذیرتری برای توسعه برنامههای کاربردی وب ارائه میدهد.
همین حالا میتوانید آموزش تایپ اسکریپت را شروع کنید.
معایب Angular
دانستن معایب فریمورک انگولار، به شما کمک میکند تا انتخاب درست و منطقی جهت شروع یادگیری آن داشته باشید.
- یادگیری دشوار: اگر با جاوا اسکریپت آشنا هستید یا به تازگی کار با فریمورک انگولار را شروع کردهاید، از همین حالا با یک چالش روبرو هستید. متاسفانه یادگیری انگولار، در مقایسه با React یا Vue دشوارتر خواهد بود. ماژولها، قالبها و... موضوعات و جنبههای مختلف Angular میباشند که باید به آنها رسیدگی کنید. البته در دوره آموزش angular کدیاد، به زبان ساده و پروژه محور آن را یاد خواهید گرفت.
- زمانبر بودن سیستم انتقال: اگر قصد انتقال سیستمهای قدیمی از AngularJS به Angular را داشته باشید، این پروسه به شدت زمانبر خواهد بود. با توجه به اختلاف فاحش این دو، کار برای توسعهدهندگانی که قصد مهاجرت بین آنها را دارند، بسیار دشوار میشود. راهها و روشهای متعددی جهت مهاجرت بین نسخه قدیمی و جدید وجود دارد، از جمله روش بارگذاری تنبل ((Lazy Loading)). به شما پیشنهاد میکنم تا حتما درباره آن مطالعه کنید.
- کامیونیتی غیر یکپارچه: طبق آخرین آمار منتشر شده از سوی StackOverflow در سال 2022، به ترتیب Angular در رتبه پنجم و AngularJS در رتبه سیزدهم لیست محبوبترین تکنولوژیها قرار گرفتهاند. این درحالیست که چهار سال قبلتر از آن، این دو همیشه جزو سه تکنولوژی برتر قرار داشتند. از طرف دیگر، 53 درصد از توسعهدهندگان نسخه قدیمی انگولار، از نسخه جدید راضی نیستند! چنین آماری برای فریمورکی که روزی جزو برترینها بوده، بسیار تعجببرانگیز است.
- نامناسب برای حوزه SEO: ابزارهای زیادی با انگولار برای سئو توسعه پیدا کردهاند، اما متاسفانه این ابزارها به هیچ عنوان بهینه نیستند. امروزه با توسعه دنیای وب، هزینه نگهداری سرورهای گوگل به شدت هزینهبر شده است؛ به همین دلیل، مصرف کراولرها (معروف به خزندههای وب) برای هر سایت محدود شده است. در این بین وبسایتهایی که با Angular توسعه پیدا کردهاند، بودجه خزش را به شکل غیربهینهای مصرف میکنند.
نحوه استفاده از انگولار
در ادامه، قدم به قدم یاد میگیرید که چگونه انگولار را نصب کرده و پروژه جدید ایجاد کنید.
1- نصب آخرین نسخه Node.js
توسعه انگولار، به Node.js و npm (پکیجمنیجر آن) وابسته است. آخرین نسخه نود جی اس را از سایت رسمی آن دانلود و نصب نمایید.
2- راهاندازی محیط توسعه
Angular CLI را نصب کنید: محیط ترمینال خود را باز کنید و دستور زیر را اجرا کنید:
Bash
npm install -g @angular/cli
این دستور، نسخه جهانی Angular CLI را روی سیستم شما نصب میکند. CLI به شما ابزارهای مهم جهت ایجاد پروژه جدید ارائه میدهد (مثل کامپوننتها و سرویسها).
3- ایجاد پروژه جدید
به دایرکتوری پروژه مورد نظر خود در ترمینال بروید و دستور زیر را اجرا کنید:
Bash
ng new my-angular-app
نام پروژه مورد نظر را جایگزین my-angular-app کنید.
4- از پروژه خروجی بگیرید
سه روش برای خروجی گرفتن از پروژه انگولار وجود دارد:
- اگر پروژه کوچک است، از کدهای آن کپی بگیرید.
- برای خروجی گرفتن از کامپوننتها (به صورت کتابخانه) از دستور ng generate library project name استفاده کنید.
- از دیتای موجود درون پروژه، خروجی PDF یا CSV بگیرید.
آشنایی با کامپوننتها و اصطلاحات انگولار
قطعا کامپوننتهای زیادی در فریمورک انگولار وجود دارد. در ادامه به برخی از آنهایی که در پروژههای فروشگاهی بسیار کاربرد دارند، اشاره کردهایم.
- <app-product-list>: محصولات را لیست میکند
- <app-product-alerts>: برای بخشهایی از اپلیکیشن که نیاز به هشدار است، به کاربر هشدار میدهد.
- <app-top-bar>: نام فروشگاه و دکمه پرداخت را اضافه میکند.
- <app-root>: اولین کامپوننتی که در انگولار استفاده میشود. همچنین برای بارگذاری سایر کامپوننتها نیز کاربرد دارد.
لازم به ذکر است که یک کامپوننت، از سه بخش تشکیل میشود:
- component class: دادهها و عملکرد کلی کامپوننت را مدیریت میکند.
- HTML template: رابط کاربری (UI) را تعیین میکند.
- Component-specific styles: جهت تغییر ظاهر کامپوننت استفاده میشود.
بزرگترین پروژههای ساخته شده با فریمورک انگولار
شاید برایتان جالب باشد که بدانید، خیلی از پلتفرمها یا اپلیکیشنهایی که در دنیا استفاده روزمره دارند، با فریمورک انگولار ساخته شدهاند.
در ادامه به برخی از آنها اشاره میکنیم:
- Google: بخش گستردهای از سرویسهای زیرمجموعه گوگل، به کمک Angular توسعه پیدا کردهاند. برای مثال، میتوان به Google Play Store، Google Voice App، Google Play Books، G Suite homepage، Google Open Source، Google Arts and Culture اشاره کرد.
- Gmail: بله درست شنیدید! Angular بطور گسترده توسط توسعهدهندگان و شرکتها در سراسر جهان استفاده میشود. یکی از نمونههای برتر آن، Gmail است که چیزی نزدیک به 2 میلیارد کاربرد دارد.
- Forbes: فوربز به عنوان یکی از برترین رسانههای بینالمللی در حوزه وب شناخته میشود. از مزایای این وبسایت، میتوان به سرعت بالای رندرینگ و بارگذاری آن اشاره کرد، که بخاطر انگولار میباشد.
نتیجهگیری
شاید نسخه جدید انگولار محبوبیت سابق را نداشته باشد، اما هنوز هم جزو برترین فریمورکهای محبوب بین توسعهدهندگان به شمار میآید. همانطور که پیشتر بررسی کردیم، Angular پیچیدگیهای خودش را دارد. اگر مشکل یادگیری ندارید و میتوانید با دشوار بودن آن کنار بیایید، قطعا این فریمورک میتواند انتخاب خارقالعادهای برای شما باشد.
لازم به ذکر است که انگولار انتخاب اول توسعهدهندگانی است که اپلیکیشن تکصفحهای طراحی میکنند.
با کنار هم قرار دادن مزایا و معایب فریمورک انگولار و نیازهای پروژه خود، میتوانید تصمیم درستی بگیرید.
سوالات متداول
1- بهترین نسخه انگولار کدام است؟
نسخه 13 انگولار، بهترین و پایدارترین نسخه این فریمورک است. علیرغم گذشت بیش از دو سال از زمان عرضه آن، همچنان ویژگیهای پویا و پایداری خودش را دارد. طبق نظرسنجیهای انجام شده، خیلیها ورژن 13 Angular را به ورژنهای جدیدتر ترجیح میدهند.
2- انگولار زبان برنامهنویسی بکاند است یا فرانتاند؟
فریمورک انگولار به عنوان فرانتاند طبقهبندی میشود. زیرا وظیفه ایجاد رابط کاربری قابل مشاهده و تعاملی برای کاربر را دارد.
3- آیا Angular از React بهتر است؟
خیر؛ React به دلیل بهینهسازیهای رندر و پیادهسازی DOM مجازی، از Angular بهتر عمل میکند. همچنین توسعهدهندگان React میتوانند، به بسیاری از راهحلهای پیشساخته شده برای توسعه، دسترسی داشته باشند.