ما المقصود بتحرير الشيفرة التعاوني؟

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

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

وصف الأداة

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

يتحقق فاحص الصياغة من صحة الشيفرة باستخدام محلل Babel (بما في ذلك وحدات ES وJSX). ويستخدم التنسيق أداة Prettier، كما يستبدل الشيفرة المنسقة الأسطر التي تغيّرت فقط، كي تبقى التعديلات التي يُدخلها الآخرون أثناء ذلك في مواضعها.

الميزات

  • التحرير في الوقت الفعلي - تظهر تغييرات الجميع فورًا، وتُدمج التعديلات عندما يكتب المشاركون في اللحظة نفسها
  • مؤشرات الكتابة والتحديدات - تعرّف على موضع كل شخص من خلال اللون الظاهر بجوار اسمه
  • التحقق - يفحص صياغة JavaScript ويعرض أول خطأ مع رقم السطر والعمود
  • التنسيق - يعيد تنسيق الشيفرة باستخدام Prettier لجميع المشاركين في الغرفة
  • النسخ والتنزيل - احتفظ بنسخة من الشيفرة في ملف .js

آلية العمل

عند فتح الصفحة، تنشئ غرفة على خادم المزامنة وتضع رابطها في شريط العنوان. وينضم كل من يفتح الرابط إلى الغرفة نفسها ويشاهد المستند نفسه.

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

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

القيود

  • تستوعب الغرفة ما يصل إلى 20 شخصًا و100,000 محرف.
  • لا يُحفظ أي شيء بعد إغلاق الغرفة. نزّل النص قبل مغادرة آخر شخص.
  • تُرفض التغييرات الكبيرة جدًا أو السريعة جدًا، مثل لصق المستند كاملًا مرات عديدة متتالية، ويعيد المحرر تحميل نص الغرفة.
  • يؤدي فتح رابط غرفة في محرر تعاوني آخر (مثل غرفة SQL في محرر JavaScript) إلى ظهور الرسالة «الغرفة غير موجودة»: فكل غرفة مخصصة للغة واحدة.
  • يتحقق فاحص الصياغة من صحة الصياغة فقط. ولا تُشغَّل الشيفرة مطلقًا.