اول رفع مسئولیت را بخوانید!
استفاده از angularjs و یادگیری نحوه استفاده از آن علاوه بر این که در این برهه زمانی خاص به یک (شاید) مد تبدیل شده باشد، ولی ابتدای امر استفاده کنندگان و تبلیغ کنندگان آن حتما دلایل خوبی برای استفاده و تبلیغ استفاده از این کتابخانه داشته اند.
خود من در برنامه نویسی سمت client خیلی تجربه طولانی ای ندارم. ولی به طور کلی یک سری دلایل (در کنار نیاز به یادگیری) برای یادگیری و استفاده از این کتابخانه یافته ام.
۱ – اولین موردی که حتما به گوش شما هم خورده است سادگی استفاده و نیاز به نوشتن کد کمتر است. وقتی از کتابخانه ای مانند angulrajs اتفاده می کنید. به طور حتم نیاز به انجام یک سری کارهای تکراری و خسته کننده در سمت client نخواهید داشت. امکانات موجود در angular به شما کمک خواهند کرد که کارهای روزمره و تکراری کمتری انجام دهید.
۲ – با استفاده از angularjs امکان بهتر انجام دادن separation of concerns در برنامه سمت client شما وجود خواهد داشت. البته اگر از روش های پیشنهادی خود کتابخانه در برنامه تان استفاده کنید. به طور مثال با استفاده از امکان directive و controller (و به طور کلی امکان MVC موجود در این کتابخانه) در این نوشتن کد های جاواسکریپت ای که به صورت جدا از view های شما باشند، خیلی راحتتر خواهد بود.
۳ – controller: وظیفه اصلی این امکان در angularjs ایجاد ارتباط بین بخش های داخلی پروژه شما و view ها است. این امکان از طریق کامپوننتی به نام $scope به شما داده می شود. $scope یک شی جاواسکریپتی است که قابلیت مقدار دهی از طریق controller را دارد. به طور مثال شما در controller خود property ای به شی $scope اضافه می کنید و از طریقی همین property در view قابل دسترس است.
۴ – directive: وقتی تازه برنامه نویسی وب با asp.net را آغاز کرده بودم همیشه این سوال برای من ایجاد می شد (خیلی سال پیش!!) که چرا در html این امکان را ندارم که مانند usercontrol های asp.net یک تگ درست کنم. به طور مثل علاقه داشتم در تگ های html قادر باشد از کد زیر استفاده کنم.
1 |
<persianCalender /> |
بگذریم که امکانات دیگری نیز برای براورده کردن این نیاز در وب وجود دارد (و از بحث این نوشته خارج است) در angularjs شما این امکان را دارید که حتی تگ هایی مخصوص به خود را داشته باشید. و خصوصیات و کاربری های خاص خود را به آن اضافه کنید.
۵ – service: امکان service و service provider به شما این امکان را می دهد که کد های مربوط به data access یا هر کد دیگری که ذاتا متعلق به لایه service هست را از کدهای موجود در controller خود جدا کنید. service را مانند کلاس و اشیایی تصور کنید که کد های مشترک متعلق به controllerها را در خود دارند و قادر به تزریق هر یک از این ها در هر controllerای هستیم.
۶ – binding: با این که کل این کتابخانه برای نوشتن برنامه های single page تحت وب یکی از کتابخانه های ایده ال است ولی الزاما برای استفاده از این کتابخانه نیازی به نوشتن برنامه single page نیست. binding موجود در angularjs را اینگونه تصور کنید که وقتی شما مقدار property ای در $scope را تغییر می دهید در همان لحظه مقدار استفاده شده در view نیز تغییر می کند. یکی از کارهایی که با jquery میشود انجام داد به این صورت است
JS Binولی با angularjs به این صورت JS Bin
اگر دقت کرده باشید نیازی به نوشتن کد جاواسکریپتی وجود نداشت. با اینکه این مثال یک مثال از کاربرد angularJs در دنیای واقعی نیست. ولی به طوری محسوسی حتی زمانی که مسائل پیچیده تر می شوند، استفاده از angularjs بصرفه تر می شود.
۷ – یکی از روش های خوب برنامه نویسی و تولید UI استفاده از تکنیک declarative programming است. اگر با WPF آشنایی داشته باشید حتما با این روش برنامه نویسی آشنایی دارید. ولی به طور خلاصه این گونه در نظر بگیرید که ما در مثال بالا با استفاده از jquery نیاز داشتیم که کد صریح جاواسکریپتی مربوط به تغییر مقدار وhandle کردن رویداد را انجام بنویسیم. ولی در مثال angularjs ای فقط مشخص (declare) کردیم که مقدار name از چه تگی پر شود و در چه مکانی نمایش داده شود. البته که پشت همه این کارهای کدهای جاواسکریپتی نوشته شده اند. ولی این موضوع کمک می کند که view ما شامل کد های جاواسکریپتی نشود. به نوعی می توان این مورد را هم زیر مجموعه ای از separation of concerns دانست.
۸ – routing: این امکان بیشتر در برنامه های single page استفاده می شود. در برنامه های single page شما نیاز دارید بر اساس آدرس صفحه controller و view مورد نظر خود را اجرا نمایید. این کامپوننت موجود در angularjs این امکان را به راحتی به شما می دهد. اگر با asp.net MVC یا هر زیرساخت MVC ای آشنایی داشته باشید به راحتی این موضوع قابل درک است.
بدیهی است این مطلب یک پیش مقدمه جهت آمادگی ذهنی برای یادگیری angularjs است. دلایل بالا هر چند خلاصه ممکن است کمکی به درک بهتر دلایل یادگیری این کتابخانه کند.
حتما دلایل یا امکان دیگری در این کتابخانه، نیز به ذهن تک تک ما می رسد. خوشحال می شوم به صورت کامنت در همین پست دلایل شما را هم بشنوم.
مطلب بسیار خوبی بود!
JSBin رو هم تا حالا ندیده بودم. جالب بود!