انتخاب React یا Vue ؟ یکبار برای همیشه!

مقایسه فوق تخصصی Vue و React
مقایسه فوق تخصصی Vue و React


برنامه نویس ها از نظر من جزء مشکل پسندترین و کمال گراترین دسته افراد روی زمین هستند. تا چشم به هم میگذاری یک فریمورک یا یک زبان برنامه نویسی جدید توسط آنها پا به عرصه ظهور میگذارد، رقابت ایجاد میکند، دعوا میشود و سرانجام یکی از آنها ترند میشود.
خیلی وقت ها از خودم می پرسم : "آیا این همه تنوع نرم افزاری واقع لازم بوده؟"
شما فکرش را بکن اگر Taylor Otwell قبل از اینکه بنشیند و Laravel را بنویسد، کمی داکیومنت Ruby On Rails را بالا و پایین میکرد (که میدانم کرده!) و یکبار از خودش میپرسید : "من قرار است چه چیزی به این اضافه کنم تا بهتر بشود؟ آیا لازم است چنین پروژه ای را از صفر و با یک زبان برنامه نویسی دیگر پیاده کنم؟"

بعد به خودم میگویم : "صنعت نرم افزار را همین تنوع هایش زیبا کرده است."

جنونی به نام فرانت اند!

شاید اگر 5 سال پیش کسی خود را Frontend Developer معرفی میکرد، به او می خندیدیم. مگر Frontend هم دولوپمنت میخواهد؟ یک کد Html و Css است دیگر (میدانیم که HTML هم جزء گنگِ خفنِ زبان هایِ برنامه نویسی نیست!). یک فرانت اند کار (این لفظ عمدا برای توهین و تحقیر این قشر به کار می رود!) خیلی هنر کند چهار خط HTML مینویسد CSS هم که بوت استرپ هندل کرده!

بماند که از همان اول هم به همین سادگی نبود ولی الان دیگر کلا قضیه فرق کرده است.

میدانیم که JavaScript زبان بد قلقی است و کار کردن با آن کار هر کسی نیست. از طرفی روش های جدید توسعه فرانت اند به گونه ای هستند که سرت را بالا بیاوری می بینی وسط انبوهی از کدهای پیچیده و زبان نفهم گیر افتاده ای! پس میتوان فرانت اند کارها را هم برنامه نویس خواند (اگر دات نت کار های محترم اجازه می دهند!)

این روز ها فرانت اند داغ تر از همیشه است و توسعه دهندگان فرانت اند را روی هوا می قاپند! بیشترین آگهی های استخدام سایت های کاریابی را آگهی های استخدام فرانت اند کارها از آن خود کرده اند.


کدام یک بهترند؟ مقایسه React و Vue

همه ی اینها به کنار بین خود توسعه دهندگان فرانت اند چند وقتی است دعوای کی بهتر است سر گرفته!
Angular کارها (که من تا به امروز توفیق دیدن حتی یک نفرشان را نداشته ام از نزدیک) بی سر و صدا کارشان را میکنند و خیلی کاری با این نزاع ها ندارند. دعوای اصلی بین React (فریمورکی ساخته شده با عشق توسط فیسبوک) و Vue ساخت چین (امّا بر آمده از Creative Lab گوگل) بالا گرفته است. یکی استار های گیت هاب را به رخ دیگری میکشد و دیگری میگوید توئیتر را با فریمورک ما زده اند. ولی واقعا کدامیک بهترند؟ بلخره یک نفر باید بنشیند کاری بکند و تصمیم بگیرد که از این به بعد با کدام کد بزنیم! اینجا من در این مقاله نه چندان با ارزش (!) ، قصد دارم یک مقایسه سردستی انجام بدهم با چند کد ساده. انتخاب اینکه کدام بهتر است با شما.


قبل از شروع این را بگویم که :
من قصد ندارم بگویم کدامیک بهترند و فقط یک کد را با هر دو ابزار خواهم نوشت. مقایسه و نتیجه گیری با شما. پس اگر طرفدار دو آتشه هر کدام از این دو فریمورک هستید لطفا کامنت ها را نجوید :)
ضمنا حرفهایم در مورد لاراول هم یک شوخی برای باز کردن سر صحبت بود ;)


1- مقایسه Syntax در حالت List Rendering :

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


در Vue این کامپوننت به این شکل در می آید:

رندر کردن یک لیست در VueJs
رندر کردن یک لیست در VueJs



حال آنکه در React میتوان این شکلی این کار را انجام داد:

رندر کردن یک لیست در React
رندر کردن یک لیست در React


2- مقایسه Syntax در Event ها :

فرض کنید بخواهیم برای یک دکمه یک Event تعریف کن، که با کلیک بر روی آن یک Alert به کاربر نمایش داده شود.

برای انجام چنین کاری در Vue به این صورت عمل میکنیم :

فرایند Event Handling در Vue
فرایند Event Handling در Vue


همین کار را در React به شکل پایین انجام میدهیم :

فرایند Event Handling در React
فرایند Event Handling در React


3- مقایسه Syntax کامپوننت ها و Props

فرض کنید بخواهیم یک کامپوننت را درون اپلیکیشن خود لود کنیم و یک ویژگی را به داخل آن پاس بدهیم.

در Vue این کار به این شکل انجام می شود :

ساختار component والد در Vue
ساختار component والد در Vue
ساختار component فرزند در Vue
ساختار component فرزند در Vue


در React این کار بدین شکل خواهد بود:

ساختار component والد در React
ساختار component والد در React


ساختار component فرزند در React
ساختار component فرزند در React


این یک مقایسه کلی بود از این دو فریمورک محبوب فرانت اند.
همه ی اینها به کنار، برای انتخاب، مهمترین فاکتور این است :

با کدامیک حال دلتان بهتر است؟

ممکن است همه دنیا طرفدار بنز و بوگاتی و مازراتی باشند، اما من پیکان جوانان گوجه ای مدل 57 ام را به دنیا نمی دهم :)

در آخر میخواهم یک فکت جالب برایتان رو کنم :

» آیا میدانستید زبان جاواسکریپت همان زبان جاواست که کوچک شده است برای وب؟

-- استاد شنبلیله


سعی میکنم در آینده، بصورت مفصل تر به مقایسه های این شکلی بپردازم.
تا درودی دیگر بدرود ...