دليل شامل لدمج محرر CodeMirror في مشاريع الويب
كمطور ويب، هل تساءلت يومًا عن كيفية إنشاء محرر أكواد متقدم مثل الموجود في منصات التدوين أو أدوات التطوير؟ محرر CodeMirror هو الحل الأمثل لمثل هذه المهام. في هذا الدليل الشامل، سنتعلم كيفية دمج هذا المحرر القوي في مشاريعنا خطوة بخطوة.
ما هو CodeMirror؟
CodeMirror هو محرر نصوص متطور مكتوب بلغة JavaScript، مصمم خصيصًا لتحرير الأكواد البرمجية في المتصفح. يتميز بواجهة نظيفة وسلسة تدعم العديد من لغات البرمجة.
المميزات الرئيسية:
- دعم لأكثر من 100 لغة جاهزة للاستخدام
- نظام وضع اللغة القوي والقابل للتأليف
- الإكمال التلقائي ( XML )
- طي الكود
- اختصارات لوحة المفاتيح القابلة للتكوين
- روابط Vim و Emacs و Sublime Text
- واجهة البحث والاستبدال
- مطابقة الأقواس والعلامات​
- دعم للعرض المنقسم
- تكامل لنتر
- خلط أحجام وأنماط الخطوط
- مواضيع متنوعة
- القدرة على تغيير الحجم لتناسب المحتوى
- أدوات واجهة المستخدم المضمنة والمكشوفة
- المزاريب القابلة للبرمجة
- إنشاء نطاقات من النصوص المصممة للقراءة فقط أو الذرية
- دعم النص ثنائي الاتجاه
- العديد من الطرق والإضافات الأخرى ...
دعم المحرر
-
6+ IE
-
5+ Chrome
-
4+ Firefox
-
4+ Safari
-
10+ Opera
-
all Browser
-
2.2+ android
-
all touch
كيفية التركيب
لبدء استخدام CodeMirror، تحتاج إلى إضافة ملفاته إلى مشروعك. يمكنك تحميلها أو استخدام روابط CDN:
<!-- خطوط Google -->
<link href="https://fonts.googleapis.com/css2?family=Tajawal:wght@400;500;700&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;500&display=swap" rel="stylesheet">
<!-- روابط CSS -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/6.65.7/codemirror.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/6.65.7/theme/dracula.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/6.65.7/addon/fold/foldgutter.min.css">
<!-- مكتبات JavaScript -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/6.65.7/codemirror.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/6.65.7/mode/htmlmixed/htmlmixed.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/6.65.7/mode/css/css.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/6.65.7/mode/javascript/javascript.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/6.65.7/mode/xml/xml.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/6.65.7/addon/edit/matchbrackets.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/6.65.7/addon/fold/foldcode.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/6.65.7/addon/fold/foldgutter.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/6.65.7/addon/fold/brace-fold.min.js"></script>
الشرح الوافي لمحرر الأكواد الذهبي
الهيكل العام للكود
يتكون المشروع من عدة أجزاء رئيسية:
- بنية
HTML
الأساسية: تحتوي على واجهة المستخدم وعناصر التحكم - تنسيقات
CSS
تتحكم في المظهر البصري للمحرر - وظائف
JavaScript
تضيف التفاعلية والميزات المتقدمة
الشرح التفصيلي
قسم الرأس (Header)
<header class="header">
<h1>مُحرر الأكواد الذهبي</h1>
<p>أداة متكاملة لكتابة وتحرير الأكواد باحترافية</p>
</header>
- يعرض عنواناً رئيسياً ووصفاً للمحرر
- يتميز بتصميم متدرج اللون مع خط ذهبي
- يحتوي على شريط ذهبي في الأسفل للتأكيد البصري
شريط الأدوات (Toolbar)
<div class="editor-toolbar">
<div class="control-group">
<label for="theme_codemirror">الثيم:</label>
<select id="theme_codemirror">
<option value="default">وضع فاتح</option>
<option value="dracula">وضع مظلم</option>
</select>
</div>
</div>
- يحتوي على عناصر تحكم لتخصيص المحرر
- اختيار الثيم (مظهر المحرر)
- اختيار لغة البرمجة
- زر لتحميل الكود
منطقة المحرر الرئيسية
<textarea id="textareacode" style="display:none;">
<!DOCTYPE html>
<!-- محتوى HTML افتراضي -->
</textarea>
- عنصر textarea مخفي يستخدم كحاوية لتهيئة محرر CodeMirror
- يحتوي على نموذج HTML افتراضي يظهر عند فتح المحرر
تنسيقات CSS الرئيسية
:root {
--primary: #4361ee;
--primary-dark: #3a0ca3;
--gold: #ffd700;
--dark: #1a1a2e;
--light: #f8f9fa;
}
- تعريف متغيرات الألوان لإعادة استخدامها
- تصميم متجاوب يعمل على جميع أحجام الشاشات
- تأثيرات حركية عند التحويم على الأزرار
تهيئة محرر CodeMirror
const editor = CodeMirror.fromTextArea(
document.getElementById("textareacode"), {
mode: "htmlmixed",
theme: "default",
lineNumbers: true,
// خيارات أخرى
});
- تحويل عنصر textarea إلى محرر أكواد متقدم
- خيارات التهيئة تشمل:
mode
: لغة البرمجة الافتراضية (HTML مختلط)theme
: المظهر الافتراضي (فاتح)lineNumbers
: عرض أرقام الأسطر
وظائف JavaScript الرئيسية
تغيير الثيم
document.getElementById("theme_codemirror")
.addEventListener("change", function() {
editor.setOption("theme", this.value);
});
تغيير لغة البرمجة
document.getElementById("mode_codemirror")
.addEventListener("change", function() {
editor.setOption("mode", this.value);
});
حفظ الكود
function saveCode() {
const code = editor.getValue();
const blob = new Blob([code],
{ type: "text/plain;charset=utf-8" });
// إنشاء رابط تحميل
}
وضع ملء الشاشة
function toggleFullscreen() {
if (!document.fullscreenElement) {
document.documentElement.requestFullscreen();
} else {
document.exitFullscreen();
}
}
مكتبات CodeMirror المستخدمة
<!-- المكتبة الأساسية -->
<script src="https://cdnjs.cloudflare.com/.../codemirror.min.js"></script>
<!-- أوضاع اللغات -->
<script src="https://cdnjs.cloudflare.com/.../htmlmixed.min.js"></script>
<script src="https://cdnjs.cloudflare.com/.../javascript.min.js"></script>
ميزات إضافية
- اختصارات لوحة المفاتيح:
- Ctrl+S: لحفظ الكود
- Ctrl+Q: لطي/فك الأكواد
- F11: لتفعيل وضع ملء الشاشة
- إشعارات المستخدم: تظهر عند تنفيذ الإجراءات
- تصميم متجاوب: يعمل على جميع الأجهزة
- دعم متعدد للغات: HTML, CSS, JavaScript, XML
هذا المحرر يوفر بيئة متكاملة لكتابة الأكواد البرمجية مع ميزات متقدمة تتيح للمطورين العمل بكفاءة واحترافية.