الفرق بين Frontend و Backend Web Development

في هذا المنشور أريد أن أساعدك من الناحية النظرية على الانتقال من الواجهة الأمامية إلى الخلفية ، في سياق تطوير الويب.

دعنا أولاً نحدد ما هي الواجهة الأمامية. الواجهة الأمامية هي المصطلح الذي نستخدمه لتعريف البرمجة داخل المتصفح. نسميها أيضًا تطوير الويب من جانب العميل.

في الجانب الأمامي ، تقلق بشأن إنشاء وتوزيع تطبيق يتم تشغيله على جهاز العملاء الخاص بك ، والذي يمكن أن يكون جهاز كمبيوتر محمول أو كمبيوتر مكتبي أو جهاز محمول. أنت تنشئ شيئًا توزعه ثم يتم تشغيله داخل كل متصفح عميل.

في الجانب الخلفي ، تقوم بتصميم وبناء تطبيق يتم تشغيله على خادم واحد (في البداية) ، ويصل كل عميل إلى هذا التطبيق. يعمل التطبيق في الخادم ، وهي بيئة تتحكم فيها ، ثم ترسل إلى المتصفح تطبيقًا باستخدام عرض من جانب الخادم للتطبيق ، أو تنشئ واجهة برمجة تطبيقات تقوم فقط بتوزيع بيانات JSON على العملاء (شيء شائع جدًا مؤخرًا ، يقترن بشكل خاص بأطر / مكتبات الواجهة الأمامية مثل React و Vue وغيرها).

يمكنك أن ترى بالفعل أن هناك تداخلًا هنا. يمكن استخدام الواجهة الخلفية لخدمة التطبيق المواجه للواجهة الأمامية والذي سيتم تشغيله في المتصفح.

HTML ، CSS ، JavaScript ، الصور ، الرسوم المتحركة ، React ، Vue ، Svelte ، CSS-in-JS ، إدارة الحالة في الواجهة الأمامية ، تحسين الأداء ، كل هذه الموضوعات (وغيرها الكثير!) مرتبطة ببرمجة الواجهة الأمامية.

بعض أنواع التطبيقات تحتاج فقط إلى الجزء الأمامي. موقع الويب الخاص بي ، على سبيل المثال ، ليس له خلفية. إنه موقع ويب ثابت تم إنشاؤه باستخدام Hugo ، وكل العمل الذي أقوم به يعتبر برمجة الواجهة الأمامية: CSS ، الترميز ، JavaScript الذي أستخدمه لتشغيل البحث ، على سبيل المثال.

تتميز برمجة الواجهة الأمامية بمجموعتها الفريدة من التحديات: على سبيل المثال دعم المتصفح للميزات. أو أداء تطبيق على جهاز منخفض النهاية. بناء تطبيقات من صفحة واحدة.

تطوير الواجهة الخلفية مختلف تمامًا عن الواجهة الأمامية. أولاً ، تخرج من بيئة المتصفح ، والتي تتحرر من ناحية ، ولكنها قد تكون أيضًا مربكة.

لماذا؟ حسنًا ، لديك المزيد من الخيارات.

في المتصفح ، يكون اختيار لغة البرمجة دائمًا هو JavaScript. أو لغة يتم تجميعها إلى JavaScript ، مثل TypeScript و Elm وغيرها.

في الخلفية يمكنك استخدام أي شيء تريده. خياري المعتاد هو Node.js ، نظرًا لكوني مبنيًا على JavaScript ، فيمكنني أن أكون خبيرًا بلغة واحدة ، وأعمل في كل من الواجهة الأمامية والخلفية باستخدام JavaScript.

لكن يمكنك استخدام أطر مثل:

  • Django الذي يعتمد على بايثون
  • Laravel الذي يعتمد على PHP
  • ريلز التي تعتمد على روبي
  • العنقاء الذي يقوم على الإكسير
  • دينو الذي يعتمد على TypeScript

والعديد من الأنظمة الأخرى ، بما في ذلك المزيد من الأنظمة البيئية الموجهة نحو المؤسسات مثل Java و .NET.

وأنا لا أذكر حتى Go and Rust ، خياران رائعان.

ربما تكون هذه هي أعظم قوة في البرمجة الخلفية: لديك الكثير من الخيارات في اللغة التي يمكنك استخدامها ، لذا يمكنك استخدام اللغة التي تفضلها. ولكن يمكن أن يؤدي أيضًا إلى "شلل التحليل" إذا لم تكن متأكدًا مما تفضله حتى الآن.

في الواجهة الخلفية ، لا نواجه المشاكل التي نحتاج إلى مواجهتها في الواجهة الأمامية. الشيء الوحيد الذي أسمعه كثيرًا هو أن تطوير الواجهة الأمامية يسير بسرعة كبيرة. تظهر أشياء جديدة كل يوم وتتغير أفضل أداة من شهر لآخر. وهو ليس بيانا خاطئا. تبدو الواجهة الخلفية في المقارنة أكثر نظامًا إيكولوجيًا منخفض السرعة ، خاصة في البيئات والأدوات المعروفة والناضجة ، ويمكن أن تشعر الخلفية المكتوبة جيدًا بأنها حديثة لسنوات ، بينما لا يمكننا قول الشيء نفسه في الواجهة الأمامية.

في الخلفية لدينا مجموعة من القضايا الخاصة بها ، بالطبع. على سبيل المثال ، كيفية تخزين البيانات في قاعدة بيانات. كيفية اختيار قاعدة البيانات الصحيحة. SQL مقابل NoSQL. Microservices مقابل monoliths. كيفية نشر تطبيقنا وأين. كيفية التعامل مع المزيد من حركة المرور. كيفية التعامل بأمان مع البيانات والطلبات. كيفية اختبار ومعالجة الخطأ. كيفية اختيار العمارة المناسبة.

ثم لدينا موضوعات تتداخل مع DevOps مثل كيفية استخدام Docker و Kubernetes ، وكيفية إعداد سير عمل التكامل المستمر والتسليم المستمر ، وكيفية التعامل مع Linux والبنية التحتية والشبكات على مستوى الخادم. نحتاج إلى مواجهة خيارات مثل استخدام خوادم VPS الخاصة بنا أو استخدام PAAS مثل Heroku ، أو عدم استخدام خادم AWS Lambda. اعتمادًا على الشركة والفريق الذي تعمل فيه ، قد تحتاج إلى أن تكون مستعدًا للتعامل مع هذه الموضوعات أيضًا.

ونحن بحاجة لمعرفة كيفية ربط الواجهة الخلفية بالواجهة الأمامية بالطبع. كيفية بناء API. GraphQL مقابل REST. كيفية التعامل مع المصادقة. كيفية جعل API سريعًا على نطاق واسع. هذه هي الموضوعات التي تنطوي على كل من الواجهة الأمامية والخلفية في السعي لجعلهم يتحدثون مع بعضهم البعض.

إنه الكثير من الأشياء ويمكنك العثور على كتب كاملة حول هذه الموضوعات ، ولهذا السبب لدينا الفصل بين مطوري الواجهة الأمامية والخلفية ، ولماذا يعد كونك مطورًا متكاملًا يمكنه التنقل عبر كل هذه المشكلات مهارة قيمة يجب امتلاكها .

وبالطبع لا يتعين عليك معرفة كل هذه الأشياء لتكون مؤهلاً كمطور للواجهة الأمامية أو الخلفية. تحتاج إلى معرفة هذه الأشياء على مستوى عالٍ ، للحصول على فكرة عما لا تعرفه (حتى الآن). لكنها فكرة رائعة أيضًا أن تتخصص في مكانة معينة وأن تصبح رائعًا في ذلك.

على سبيل المثال ، يمكنك أن تكون مطورًا خلفيًا لا يعرف كيفية التعامل مع تهيئة Linux المتقدمة ، ويعتمد على PAAS مثل Heroku للقيام بذلك نيابة عنك. أو استخدم AWS Lambda لتجنب ذلك تمامًا.

الشيء المهم في اعتقادي هو معرفة متى يكون من الأفضل التعلم والقيام بذلك بنفسك مقابل استخدام الأدوات التي تدعم عملك.