سلام. امیدوارم حالتون عالی باشه. من سهیل جعفری هستم. توسعه دهنده Next.js
توی این مقاله، هدف مقایسه 3 فریمورک معروف جاوااسکریپت هست.
وقتی که یه برنامه نویس وب، اچ تی ام ال و سی اس اس و جی اس رو یاد گرفت، با یه سوال مواجه میشه.
از الان به بعد، فرانت سه شاخه میشه. کدوم رو برم؟ ریکت، ویو یا انگیولار؟
توی این مقاله، اینو کامل بهتون توضیح میدم. در انتها هم میگم که کدوم بهتره و برید سمت کدوم...
نکته: قبل از هر توضیحی، نیازه که منطق single page application یا SPA رو براتون توضیح بدم.
نکته 1: ببینید توی یه وب سایت معمولی، ما برای سایت، 10 تا صفحه طراحی میکنیم. برای هر صفحه، یه مقدار html، یه مقدار cssو یه مقدار هم jsمینویسیم. اینا با هم میشن یه سایت.
توی SPAیه مقدار کار متفاوته. این طوری نیست که همه کدهای یه صفحه رو، همونجا بنویسیم بلکه، هر صفحه به کلی کامپوننت مختلف تقسیم میشه. کامپوننت یا بخش.
مثلا یه صفحه اصلی سایت،
یه کامپوننت هدر داره. توی هدر، لوگو، منو، باکس جستجو و اینا قرار میگیره.
یه کامپوننت اسلایدر اصلی داره، توش یه اسلایدر گذاشته شده.
و...
نکته 2: هر کامپوننت میتونه توی خودش، کلی کامپوننت دیگه داشته باشه. مثلا یه اسلایدر محصولات رو در نظر بگیرید، خود اسلایدر محصولات میشه یه کامپوننت، هر کدوم از تک اسلایدها، میشن یه کامپوننت. مثلا دکمه هر تک اسلاید رو هم میشه کرد یه کامپوننت و...
تا اینجاش اوکیه؟ توی spa، صفحه سایت، تشکیل میشه از کلی کامپوننت.
نکته 3: حالا ما یه صفحه اصلی داریم توی سایتمون و یه صفحه درباره ما. اگر توی صفحه اصلی باشیم و کلیک بکنیم روی لینکی که ما رو منتقل میکنه به صفحه درباره ما، چه اتفاقی می افته؟ کامپوننت های مربوط به صفحه اصلی که توی صفحه الان دارن بهمون نشون داده میشن، حذف میشن و کامپوننت های مربوط به صفحه درباره ما توی صفحه آپلود میشن. این طوری هم صفحه تغییر میکنه و هم رفرش شدن صفحه نداریم. این چیزی که گفتم، خیلی ساده شده کاری که توی spaها انجام میشه هست.
نکته 4: اگه دقیقتر بخوام بگم، توی یه وب سایت معمولی( نه spa)، ما یه چیزی داریم به اسم دام که وقتی صفحه تغییر میکنه، دام هم تغییر میکنه. ولی توی اس پی ای ها، دام ثابته. یه چیز دیگه تعریف میشه به اسم دام مجازی و تغییرات کامپوننت ها و صفحات روی اون انجام میشه. همین موضوع باعث میشه که اصلا رفرشی نداشته باشیم. دقت کنید single page app یا اپلیکیشن تک صفحه ای.
اگه نکته 4 رو نفهمیدید، ایرادی نداره. همون نکته سه رو یاد بگیرید، کافیه. بیاید و یکم مثلا با ریکت جی اس کار کنید، کامل همه چی دستتون میاد.
اما بریم سراغ معرفی فریمورک ها
1. پشتیبان انگیولار خود گوگل هست.
2. توی ایران معمولا ارگان های دولتی و اداره ها و اینا، گاهی پیش میاد که با انگیولار کد میشن.
3. کمتر ازش استفاده میشه مثلا سایت ایران تلنت با انگیولار زده شده.
4. سئو در انگیولار با angular universal انجام میشه.
5. یکی از نکاتی که در مورد انگیولار مطرحه و برخی دوستان اگیولار کار میگن، سختی کد زدن باهاشه.
1. بین سه تا فریمورک راحت ترینه. تا حدی که میگن اگه میخواید یاد گیری فریمورک رو شروع کنید، با ویو شروع کنید که بنده از همین تریبون میگم: نه خیر آقااا. چه کار مسخره ایه. من میخوام مثلا ریکت یاد بگیرم. پس باید برم یه چیز دیگه رو یاد بگیرم. بعد بیام ریکت؟!!!! خوب مستقیم میرم ریکت. چرا وقتمو تلف کنم...
2. پشتیبانش شرکت خاصی نیست. یه بنده خداییه به اسم ایوان یو. البته این آقای یو، کارمند گوگل بوده یه زمانی.
3. کم حجم و بهینهست.
4. سایت هایی مثل باسلام، کافه بازار، ایرانی کار( مرجع جدید خرید خودرو) یا ویو زده شدن.
5. سئو توی ویو جی اس، میشه فریمورک nuxt.js. یعنی شما اول باید ویو رو یاد بگیرید، بعد برید ویوی پیشرفته که ناکست هست رو یاد بگیرید.
6. آینده شغلیش به نظر بدک نمیاد اینطوری که از فضای کسب و کارها معلومه.
خوب خوب خوب
برسیم به اصل ماجرا. ریکت.
کارایی هوک چیه؟
useEffect(()=>{ console.log(x) },[ x ] )
در واقع ساختار کدنویسی یوزافکت، شبیه ساختار setInterval هست. یه یوزافکت مینویسید، داخلش دو تا المان. اولیش یه تابع که این تابع، همون تابعی هست که میخواید با تغییر مورد نظر، اجرا بشه. دومین المان هم یه آرایه هست که توش، متغیر یا متغیرهای وابسته رو میزایم. منظورم از متغیر وابسته، همون متغیر x هست که توی مورد 3 گفتم.
ببینید توی وب سایت، معمولا سئو مهمه، پس یا باید از angular universal استفاده کنیم یا nuxt.js یا next.js
پیشنهاد من نکست جی اس هست. سئوی بهتری که نکست جی اس نسبت به بقیه داره. راحتی فوق العادهش مثلا توی تعریف روت ها، سرعت خیره عالی نکست جی اس، بهینه ساز خودکار تصویر، ssr و ssg و کلی خوبیه دیگه باعث میشه که برنده این مبارزه، با اقتدار Next.js باشه.
همین خوبی ها باعث شده که وب سایت هایی مثل دیجی کالا ، فرادرس، ژاکت، ترب ، تخفیفان و کلی سایت دیگه، توی همین یک سال اخیر(1400 تا 1401 ) کامل شیفت کنند روی نکست جی اس. این موضوع رو میتونید با استفاده از افزونه wapplyzer گوگل کروم ببینید.
برای دیدن مقالات بیشتر و همچنین آموزش next.js ، میتونید به مرن فا مراجعه کنید.
خلاصهی مسیر فرانت رو اگه بخوام بهتون بگم، میشه
همین دیگه. خسته نباشید. امیدوارم براتون مفید بوده باشه.