وبلاگ شخصی مجید غفورزاده. برنامه نویسی که عاشق گربه هاست :)
انتخاب React یا Vue ؟ یکبار برای همیشه!
برنامه نویس ها از نظر من جزء مشکل پسندترین و کمال گراترین دسته افراد روی زمین هستند. تا چشم به هم میگذاری یک فریمورک یا یک زبان برنامه نویسی جدید توسط آنها پا به عرصه ظهور میگذارد، رقابت ایجاد میکند، دعوا میشود و سرانجام یکی از آنها ترند میشود.
خیلی وقت ها از خودم می پرسم : "آیا این همه تنوع نرم افزاری واقع لازم بوده؟"
شما فکرش را بکن اگر 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 این کامپوننت به این شکل در می آید:
حال آنکه در React میتوان این شکلی این کار را انجام داد:
2- مقایسه Syntax در Event ها :
فرض کنید بخواهیم برای یک دکمه یک Event تعریف کن، که با کلیک بر روی آن یک Alert به کاربر نمایش داده شود.
برای انجام چنین کاری در Vue به این صورت عمل میکنیم :
همین کار را در React به شکل پایین انجام میدهیم :
3- مقایسه Syntax کامپوننت ها و Props
فرض کنید بخواهیم یک کامپوننت را درون اپلیکیشن خود لود کنیم و یک ویژگی را به داخل آن پاس بدهیم.
در Vue این کار به این شکل انجام می شود :
در React این کار بدین شکل خواهد بود:
این یک مقایسه کلی بود از این دو فریمورک محبوب فرانت اند.
همه ی اینها به کنار، برای انتخاب، مهمترین فاکتور این است :
با کدامیک حال دلتان بهتر است؟
ممکن است همه دنیا طرفدار بنز و بوگاتی و مازراتی باشند، اما من پیکان جوانان گوجه ای مدل 57 ام را به دنیا نمی دهم :)
در آخر میخواهم یک فکت جالب برایتان رو کنم :
» آیا میدانستید زبان جاواسکریپت همان زبان جاواست که کوچک شده است برای وب؟
-- استاد شنبلیله
سعی میکنم در آینده، بصورت مفصل تر به مقایسه های این شکلی بپردازم.
تا درودی دیگر بدرود ...
مطلبی دیگر از این انتشارات
پیاده سازی SSR (سرورساید رندرینگ)روی Vue و بررسی تاثیر بر SEO
مطلبی دیگر از این انتشارات
بیت یا گیت واسه کامپوننت ها؟
مطلبی دیگر از این انتشارات
انتشار فیلمهای آموزشی فارسی و کاملا رایگان دورههای Angular و Vue.js