تعریف و مقایسه ی بک اند و فرانت اند
برای اینکه در دنیای وب موفق شوید نیاز است که شما با دو مفهوم مهم و کاربردی در دنیای وب، Frontend و Backend و تفاوت بین این دو آشنا باشید و بتوانید با توجه به نیازتان از آن ها بهره مند شوید.اگر تازه شروع به یادگیری توسعه وب کرده اید ویا به آن علاقه دارید ، احتمالا در مورد frontend و backend زیاد شنیده اید. اما دقیقاً منظورچیست ؟ اگر شما یک مبتدی در این زمینه هستید، شناخت نسبت به آن ها و اینکه هر کدام چه مواردی را پوشش می دهند مشکل است.
توسعه فرانت اند (Frontend) چیست ؟
برای پاسخ دادن به سوال تفاوت فرانت اند و بک اند میخواهیم در ابتدا دربارهی فرانت اند (Front End) صحبت کنیم و ببینیم که واقعا چه معنایی دارد.
یکی از کارهایی که شما برای توسعهی وب میتوانید انجام دهید، طراحی/برنامه نویسی فرانت اند است. این تخصص را با نام های طراح وب، فرانت اند کار، برنامه نویس فرانت اند و… نیز میشناسند. معادل انگلیسی این تخصص Front End Developer یا Front End Designer میباشد. توسعه Front End بخشی از توسعه وب سایت است که عناصر ظاهری یک وب سایت را کد گذاری و ایجاد می کند ، این ویژگی هایی هستند که توسط کاربر نهایی یا مشتری به طور مستقیم قابل مشاهده و دسترسی هستند. اساساً ، یک توسعه فرانت اند (Frontend) مسئول همه چیزهایی است که می بینید و برای اطمینان از یکپارچه بودن تجربه کاربر ، تلاش می کند.فرانت اند کدهای غیر قابل فهم برای کاربران را در قالب ظاهری گرافیکی و بصری به آنها نمایش میدهد تا استفاده از بخشهای مختلف سایت برایشان سادهتر شود. در این بخش فرمهای ورودی اطلاعات، صداها، تصاویر، ویدیوها و به صورت کلی هر چیز دیگری که برای کاربر قابل درک باشد، قرار میگیرد.
ابزارها و مهارتهای مورد نیاز توسعه دهنده فرانت اند چیست؟
توسعهدهندگان فرانتاند باید در سه مهارت کلیدی اچتیامال، سیاساس و برنامهنویسی جاوا اسکریپت تسلط داشته باشند.
علاوه بر نیاز به تسلط بر این سه زبان، لازم است توسعهدهندگان با فریمورکهایی چون بوتاسترپ (Bootstrap)، فاندیشن (Foundation)، بکبون (Backbone)، انگولارجیاس (AngularJs) و امبرجیاس (EmberJS) آشنایی داشته باشند. این فریمورکها مستقل از نوع دستگاه مورد استفاده، ارائه محتوا با ظاهری آراسته و زیبا را تضمین میکنند.
همچنین استفاده از کتابخانههایی مثل جیکوئری (jQuery) و لِس (LESS) که کد را به شکلی کاربردیتر قالببندی کرده و باعث صرفهجویی زمانی میشوند نیز ضروری به نظر میرسد. علاوه بر این، در بسیاری از آگهیهای شغلی نیاز به آشنایی با ایجکس (Ajax) هم عنوان شده است که در سطح وسیعی در جاوا اسکریپت کاربرد دارد. Ajax با دانلود دادههای سرور در پسزمینه، امکان بارگذاری صفحات را به صورت پویا (دینامیک | Dynamic) فراهم میکند. با استفاده از این ابزارها، توسعهدهندگان فرانتاند همکاری نزدیکی با یک تحلیلگر تجربهکاربری خواهند داشت تا نمونههای آزمایشی یا استخوانبندی لازم را از مرحله توسعه تا تحویل فراهم کنند.
توسعه دهنده بک اند (back end) چیست ؟
بک اند (backend) به عنوان قسمت سمت سرور شناخته میشود. به طوری که برای شما قابل مشاهده و تعامل نیست. به طور کلی هر اتفاقی که در پشت سایت میافتد عاملی است برای آنچه که در صفحهی مانیتور میبینید. بک اند (backend) بیشتر شبیه یک پشتیبان غیر مستقیم برای کار فرانت اند است. و بخشیست که کاربران با آن تماس مستقیم ندارند. بر خلاف فرانت اند این قسمت در سمت سرور است و برای اطمینان از اینکه این بخش به درستی کار میکند با آن در ارتباط است.
بک اند “Backend” عموما از سه بخش تشکیل می شود: یک سرور، یک برنامه و یک پایگاه داده ها (دیتا بیس). اگر به عنوان مثال قصد خرید یک بلیت از وب سایتی را داشته باشید، معمولا سایت را باز میکنید و با فرانت اند “Frontend” تعامل می کنید. زمانی که اطلاعات را وارد کردید، برنامه آن اطلاعات را در پایگاه داده هایی که روی سرور قرار دارد ذخیره می کند.تمام اطلاعاتی که وارد کردید در سرور باقی می مانند و مثلا زمانی که برای پرینت بلیت دوباره وارد حساب کاربری آن وب سایت شوید، تمام آنها برای شما قابل مشاهده می باشند.
ابزارها و مهارتهای مورد نیاز توسعه دهنده بک اند چیست؟
برای مرتبط کردن سرور، اپلیکیشن و پایگاهداده، توسعهدهندگان بکاند از ابزارهای متعددی استفاده میکنند. زبانهای سمت سرور مانند پیاچپی (PHP)، روبی (Ruby)، پایتون (Python)، جاوا (Java) و چارچوب وب داتنت (Net.)، برای ساخت اپلیکیشن استفاده میشوند و ابزارهایی همچون MySQL، اوراکل (Oracle) و SQL Server برای جستجو، ذخیره یا تغییر دادهها و بازگرداندن آنها به کاربر در کدهای فرانتاند به کار گرفته میشوند.
در آگهیهای استخدام مربوط به فرصتهای شغلی توسعهدهندگان بکاند، نیاز به داشتن تجربه در کار با فریمورکهایی مانند پیاچپی زند (Zend)، سمفونی (Symfony | سیمفونی) و کیکپیاچپی (CakePHP) عنوان شده است. همچنین، آشنایی با نرمافزارهای «کنترل نسخه» (Version Control) مثل اسویان (SVN)، سیاسوی (CSV) یا گیت (Git) و همینطور داشتن تجربه در کار با «لینوکس» (Linux)، به عنوان یک سیستم توسعه و استقرار، معمولا لازم است.
مقایسه ی فرانت و بک اند
توسعه دهندگان Front-End بر روی آنچه کاربر می تواند ببیند کار می کنند در حالی که توسعه دهندگان back-end زیرساخت هایی را پشتیبانی می کنند که قابل دید برای کاربر نیست .
هر دو مولفه مولفه های لازم برای یک برنامه کاربردی یا وب سایت با عملکرد بالا هستند.
توسعه دهندگان Front-End و Back-End به طور همزمان برای ایجاد سیستم های لازم برای عملکرد صحیح یک برنامه یا وب سایت کار می کنند. با این حال ، آنها نگرانی های مخالف دارند.
اصطلاح “front-end” به رابط کاربری اشاره دارد ، در حالی که “back-end” به معنی سرور ، برنامه و پایگاه داده است که در پشت صحنه کار می کنند تا اطلاعات را به کاربر تحویل دهند.
کاربر از طریق رابط کاربری درخواست را وارد می کندسپس تأیید شده و به سرور منتقل می شود ، که داده های لازم را از پایگاه داده بیرون می کشد و آنها را به کاربر می فرستد.
همانطور که در بالا مشاهده کردید ، توسعه وب Front-End و توسعه وب Back-End تفاوتهای زیادی دارند.
در حالی که Front-End به شدت به طراحی وب سایت شما برای جذابیت هرچه بیشتر وب مبتنی است ، Back-End با همه موارد پیچیده و ناموزونی که در واقع باعث می شود وب سایت شما اجرا شود (مانند عملیات پایگاه داده ، تأیید اعتبار کاربر ، منطق برنامه و غیره) سرو کار دارد. به همین دلیل است که front-end اغلب به عنوان سمت مشتری شناخته می شود در حالی که back-end معمولاً به عنوان server-side برای یک برنامه وب شناخته می شود.علی رغم اختلافاتی که بین Front-End Web Development و Back-End Web Development وجود دارد ، آنها در واقع دو روی یک سکه هستند !!! هر دوی آنها به یک اندازه مهم هستند و یک وب سایت فقط وقتی به طور همزمان کار می کند که درست کار کند.
کدام یک را باید یاد بگیرم؟
اگر علاقه مند به یادگیری وب سایت هستید اما در انتخاب frontend وbackend مطمئن نیستید، درنظر گرفتن وظایف روزانه هر کدام حائز اهمیت است. اگر شما علاقه مند به ایجاد طرح های بصری واعمال آن ها در زندگی وایجاد یک تجربه کاربری درجه اول هستید، پس احتمالاً کار frontend برای شما لذت بخش است.
اگر از کار کردن با داده ها، بدست آوردن الگوریتم ها و پیش بردن راه هایی برای بهینه سازی سیستم های پیچیده لذت می برید، احتمالاً ترجیح می دهید به عنوان یک توسعه دهنده backend کار کنید.
با این حال، تمایز بین frontend و backend همیشه خیلی واضح نیست. برخی از توسعه دهندگان هم در frontend و هم در backend مهارت دارند؛ این افراد تحت عنوان full stack developers شناخته می شوند.