داستان دو فریمورک فرانت اند

در قلمرو وسیع توسعه وب، انتخاب فریم ورک فرانت اند مناسب مانند انتخاب مسیری در یک جنگل انبوه است که هر نوبت به چالشها و افشاگریهای جدیدی منجر میشود. سفر من در سال 2019 زمانی آغاز شد که تصمیم گرفتم مسیر React را که مسحور محبوبیت فزاینده و جامعه پر جنب و جوش آن شده بود، آغاز کنم. پر از اشتیاق، یک دوره گسترده React را گذراندم، با پشتکار در کنار مدرس کدنویسی کردم و بر مفاهیم آن مسلط شدم. با این حال، وقتی به پایان دوره نزدیک میشدم و به دنبال ساختن پروژههای خودم بودم، در هزارتوی احتمالات گم شدم.
بدون ترس از موانع، تصمیم گرفتم با مرور مجدد دوره، درک خود را عمیق تر کنم. با داشتن دانش قبلی، مفاهیم را به راحتی درک کردم، اما شکاف بین تئوری و اجرای عملی همچنان ادامه داشت. اگرچه به دلیل درک کاملی که از مفاهیم اصلی React داشتم، موفق به انجام مصاحبهها شدم، اما نمیتوانستم از اینکه چرا برای ایجاد پروژههای دنیای واقعی تلاش کردم، فکر کنم.
به سرعت تا سال 2020، با انتقال به نقشی که من را با Angular آشنا کرد، حرفه من مسیر جدیدی را طی کرد. در کمال تعجب، تجربه کاملاً متفاوت بود. در عرض پانزده روز، کد Angular من در حال تولید بود، شاهکاری که با React از من دوری گزید. این تسلط جدید با Angular باعث شد تا در مورد چندین نظریه که ممکن است به تمایل من به چارچوب کمک کرده باشد فکر کنم.
-
تجربه قبلی Backend: با داشتن پیشینه ای در توسعه Backend با استفاده از جاوا، مفاهیم Angular مانند کلاس ها، رابط ها، تایپ قوی و تزریق وابستگی را به طرز چشمگیری آشنا یافتم. پایبندی Angular به اصول شی گرا با شیوه های توسعه backend من طنین انداز شد. علاوه بر این، مفهوم خدمات برای منطق تجاری با تجربه قبلی من هماهنگ بود.
-
انتخاب های بسیار زیاد در React: اکوسیستم React مملو از گزینهها و کتابخانههای بیشماری است که انعطافپذیری بینظیری را در اختیار توسعهدهندگان قرار میدهد. با این حال، این فراوانی انتخاب ها اغلب منجر به عدم تصمیم گیری و سردرگمی می شود. در حالی که ممکن است یک روش برای یک کار خاص مناسب به نظر برسد، رویکرد کاملاً متفاوتی ممکن است در جای دیگری پیشنهاد شود که توسعهدهندگان را گیج و در انتخابهای خود شک کنند. این پدیده که به مشکل «انتخابهای زیاد» معروف است، میتواند مانع بهرهوری شود و روند یادگیری را کند کند.
-
یادگیری در محل کار: اصطلاح “یادگیری با انجام دادن” در حوزه توسعه نرم افزار صادق است. تجربه عملی من با Angular در محل کار، بینش ارزشمندی را در مورد عملکرد درونی چارچوب ارائه داد. با مطالعه کد نوشته شده توسط افراد حرفه ای، دانش عملی به دست آوردم که می توانستم در پروژه های جدید اعمال کنم. در مقایسه، یادگیری آنلاین خودسرانه، اگرچه ارزشمند است، اما اغلب فاقد زمینه دنیای واقعی است که تجربه در حین کار می تواند فراهم کند.
-
عدم تفکیک در React: در React، یافتن اجزای حاوی HTML (JSX)، جاوا اسکریپت و CSS در یک فایل غیر معمول نیست. این عدم تفکیک واضح ممکن است منجر به کدهای به هم ریخته شود و حفظ و عیب یابی آن را چالش برانگیز کند. در حالی که میتوان نگرانیها را به فایلهای جداگانه تفکیک کرد، React یک رویه استاندارد را اعمال نمیکند و تصمیمگیری درباره استراتژی سازمان را به توسعهدهندگان واگذار میکند. از قضا، این عدم وضوح دقیقاً دلیلی را که JavaServer Pages (JSP) با انتقاد مواجه شد و در نهایت حذف شد، به ذهن می آورد.
-
مدیریت پیچیده دولت در React: مدیریت دولتی یک جنبه حیاتی در ساخت برنامه های کاربردی مقیاس پذیر و قابل نگهداری است. در React، رویکردهای مختلفی مانند React Context و Redux وجود دارد که هر کدام دارای پیچیدگیهای خود شامل کاهش دهندهها، اقدامات و اثرات هستند. این پیچیدگی میتواند بسیار زیاد باشد، بهویژه برای توسعهدهندگانی که تازه وارد توسعه frontend هستند. در مقابل، Angular مکانیسم مدیریت حالت ساده تری را ارائه می دهد. برای کاربردهای سادهتر، میتوان حالت را در سرویسها ذخیره کرد، در حالی که برای سناریوهای پیچیدهتر، Angular NgRx را ارائه میکند که الگوی Flux را در بر میگیرد.
-
ماژولاریت در Angular: یکی از ویژگی های برجسته Angular تاکید آن بر ماژولار بودن از طریق مفهوم ماژول است. با تقسیم برنامه به ماژولهای منسجم و مستقل، توسعهدهندگان میتوانند استراتژیهای بارگذاری را کنترل کنند، وضعیتها را به اشتراک بگذارند و خدمات را به طور موثرتری مدیریت کنند. این طراحی باعث تقویت همکاری درون تیمها میشود و هر تیم روی بخشهای متمایز برنامه تمرکز میکند و در عین حال انسجام کلی را حفظ میکند. جنبه مدولار بودن Angular بیشتر در مفهوم کتابخانه های Angular منعکس شده است و امکان استفاده مجدد از مؤلفه ها و خدمات در چندین پروژه را فراهم می کند.
-
چرا از یک چارچوب استفاده می کنیم: جذابیت فریمورکهای فرانتاند در توانایی آنها در انتزاع پیچیدگیها نهفته است که تجربه توسعه روانی را برای توسعهدهندگان فراهم میکند. با این حال، نیاز React به هوشیاری در اجتناب از بهروزرسانیهای مستقیم وضعیت و فراخوانی توابع تودرتو، گاهی اوقات میتواند ماهیت هدف یک چارچوب را به چالش بکشد. در حالت ایدهآل، یک چارچوب باید تغییرات را تفسیر کند و برنامه را بهطور مؤثر بهروزرسانی کند، تغییر ناپذیری را ارتقا دهد و توسعهدهندگان را از بهروزرسانیهای حالت مدیریت میکرو رها کند.
بعد از تمام این تجربیات، اکنون خودم را در سال 2023 می بینم، در نقطه ای از حرفه ام که فرصتی برای کشف دوباره React دارم. سر و صدای اطراف React در طول سال ها کاهش نیافته است، که کنجکاوی من را برای ارزیابی مجدد چارچوب با دیدگاهی تازه برانگیخت. به عنوان یک توسعهدهنده که در چارچوب SPA مبتنی بر کامپوننت مانند Angular مهارت کسب کردهام، اکنون خودم را برای درک پیچیدگیهای React مجهزتر میبینم.
با کمال تعجب، این بار، درک React را راحتتر میبینم. تجربه قبلی من با Angular پایه ارزشمندی برای درک بهتر مفاهیم React برای من فراهم کرده است. سالها کار با معماری مبتنی بر کامپوننت، مهارتهای من را در ساختار برنامهها و مدیریت وضعیت تقویت کرده است، که به نوبه خود به من امکان میدهد با اطمینان بیشتری در اکوسیستم React حرکت کنم.
با این حال، حتی با وجود این قدردانی جدید از React، هنوز در تعجبم که چرا در مقایسه با Angular همچنان از محبوبیت بالایی برخوردار است. هر دو چارچوب دارای مجموعه ای غنی از ویژگی ها هستند که نیازها و سبک های مختلف توسعه را برآورده می کنند. ممکن است انعطاف پذیری React و مجموعه گسترده ای از کتابخانه های مشارکتی جامعه همچنان توسعه دهندگان را با هر پیشینه و ترجیحی جذب کند.
در پایان، سفر من با React و Angular یک تجربه یادگیری عمیق بود که درک من از توسعه frontend را شکل داد. هر فریم ورک دارای نقاط قوت و ضعف منحصر به فرد خود است و تصمیم برای انتخاب یکی از دیگری باید بر اساس الزامات خاص پروژه و ترجیحات تیم توسعه باشد.
همانطور که من وارد ماجراجویی های جدید در چشم انداز توسعه همیشه در حال توسعه وب می شوم، ذهن باز باقی می مانم و آماده پذیرش چالش بعدی هستم. چه React باشد، چه Angular، یا هر فریم ورک نوظهور دیگری، سفر من به عنوان یک توسعه دهنده فول استک با هیجان و انتظار برای آنچه در پیش است ادامه می یابد.