در دنیای امروزی وقتی صحبت از فریم ورک های سمت کاربر می کنیم، نمونه های زیادی به ذهنمان می رسد که مسلما هر کدام از ما ساعت های زیادی را برای تصمیم به انتخاب هر کدام از آن ها سپری میکنیم. فاکتورهای زیادی در انتخاب یک فریم ورک مناسب وجود دارد که در ادامه به چند مورد از آنها اشاره کرده و فریم ورک های مختلف را با هم مقایسه می کنیم.

  • پرفورمنس یا کارایی (Performance)
  • کامیونیتی (Community)
  • توسعه به صورت Cross platform
  • حجم فریم ورک (Size)
  •  و ...
  • بهترین راه برای مقایسه چند فریم ورک، نوشتن برنامه هایی به صورت استاندارد و Real-World (نه به صورت یک برنامه ساده todo) می باشد. این repository برای فریم ورک های مختلف، برنامه ای مشابه (که شامل routing، ارتباط با rest api، عملیات auth و ... می باشد) را پیاده سازی کرده است. نتایج حاصل از این بنچمارک به شکل زیر می باشد:

 

پرفورمنس (Performance):

زمان اولین meaningful paint در همه فریم ورک ها به شکل زیر می باشد: (هر چقدر کمتر بهتر)

در اینجا می بینید که عملکرد Angular تا حدی بهتر از react و vue می باشد، ولی درکل تفاوت چشم گیری مشاهده نمی شود.

نکته: منظور از Angularjs ورژن های پایین تر از 2 و منظور از Angular همان ورژن های بعد از 2 می باشد.

بنچمارک های بیشتری رو می توانید در این لینک و این لینک مشاهده کنید.

سایز (Size):

اندازه Transfer را می توان از تب network در کروم محاسبه کرد. هرچقدر سایز فریم ورک تان کمتر باشد، سرعت دانلود فایل های آن به همان اندازه بیشتر خواهد بود. که این البته بستگی به dependency هایی که اضافه می کنید و نیز ابزار build شما برای تولید فایل bundle نیز دارد.

 

تعداد سطرهای کد در یک پروژه یکسان:

شاید به نظر برسد که تعداد خط کدهای نوشته شده در یک پروژه اهمیت چندانی نداشته باشد، اما علاوه بر سرعت توسعه، هرچقدر تعداد سطرهای یک پروژه کمتر باشد، احتمال پیداشدن باگ در برنامه کمتر است و برنامه maintainability بالایی خواهد داشت. با ابزار cloc می توان تعداد خط کدهای یک برنامه را شمرد. در فریم ورک های مختلف در یک پروژه ثابت داریم:

توسعه به صورت cross-platform:

در نظرسنجی های اخیر Stack Overflow در طی چند سال گذشته، عموما زبان برنامه نویسی جاوا اسکریپت از محبوبیت بیشتری نسبت به سایر زبان ها برخوردار بوده است. شاید یکی از این دلایل قابلیت توسعه به صورت Cross Platform می باشد. به این معنی که با یک زبان برنامه نویسی واحد بتوان برای سیستم عامل های مختلف (برای مثال اندروید و iOS) برنامه ی کاربردی نوشت. که این نوع از برنامه نویسی در مقابل برنامه نویسی به صورت native برای هر پلتفرم قرار می گیرد. در ادامه به ابزار مربوط به هر فریم ورک ها برای توسعه این نوع برنامه ها می پردازیم:

React Native : برای لایبرری react

NativeScript یا Ionic : در فریم ورک Angular

NativeScript : در فریم ورک Vue (نسخه unofficial)

البته علاوه بر جاوا اسکریپت می توان از زبان های دیگری مثل  C# در Xamarin یا Go در Flutter  استفاده کرد که برای این بحث در یک مقاله دیگر مفصل خواهیم پرداخت.

  

نتیجه گیری:

در کل نمی توان یک نسخه ی کلی برای همه پیچید که از کدام فریم ورک استفاده کنند و کسانی هم که این ادعا را دارند صرفا یک تعصب خشک و خالی دارند برای ابزاری که خودشان استفاده می کنند. هر فرد با توجه به نیازهای خودش می تواند فریم ورک مورد نظر خود را انتخاب کند.