كيفية استخدام مترجم CoffeeScript عبر الإنترنت
- اكتب شيفرة CoffeeScript أو الصقها في المحرر. يستعيد زر إعادة ضبط المثال الشيفرة الابتدائية التي تضم دوال وتعبير تجميع (comprehension) وتسلسلًا هرميًا صغيرًا للأصناف.
- اضغط تشغيل أو استخدم Ctrl + Enter (⌘ + Enter على جهاز Mac).
- يحوّل مترجم CoffeeScript الرسمي شيفرتك إلى JavaScript. وإذا كان هناك خطأ في الصياغة، فإن الرسالة تعرض سطره وعموده ولا يُشغَّل شيء.
- إذا نجحت الترجمة، تُشغَّل JavaScript في محرك JavaScript بمتصفحك. ويظهر ناتج
console.logفي لوحة المخرجات، مع عرض الكائنات والمصفوفات منسّقة بصيغة JSON. افتح شيفرة JavaScript المُولَّدة أسفل المخرجات لترى الشيفرة المترجمة. - اختر الحدّ الزمني: 5 أو 15 أو 60 ثانية، أو اضغط إيقاف لإنهاء التشغيل مبكرًا.
استخدم نسخ أو main.coffee لحفظ شيفرتك المصدرية. ويبدّل زر التخطيط بين اللوحات المتجاورة والمتراصة.
تتم الترجمة والتشغيل معًا في Web Worker داخل متصفحك، ولا تُرسل شيفرتك إلى خادم أبدًا. ويحفظ المحرر آخر شيفرة لك تلقائيًا في متصفحك، بصورة منفصلة لكل مترجم.
نبذة عن CoffeeScript 2
CoffeeScript لغة صغيرة تُترجم إلى JavaScript. وصياغتها مستوحاة من Ruby وPython: إزاحة بدلًا من الأقواس المعقوفة، وأقواس اختيارية، و-> للدوال، وإرجاع ضمني للقيم. وقد أصبحت أفكار عدة منها، مثل الدوال السهمية والأصناف والتفكيك (destructuring) ودمج القيم في النصوص، جزءًا من JavaScript القياسية لاحقًا.
تستخدم هذه الصفحة CoffeeScript 2.7 في وضع bare، فلا يُغلَّف الناتج بدالة إضافية. وتولّد CoffeeScript 2 شيفرة حديثة بمعيار ES2015+. فتصبح أصنافها أصنافَ JavaScript، ويصبح => دالة سهمية، وتصبح أي دالة تحتوي على await دالة async.
ما المدعوم
- لغة CoffeeScript 2 كاملة: أصناف مع
extendsوsuper، والاختصار@، ودمج القيم في النصوص بالصيغة"#{...}"، والنطاقات مثل[1..5]، والتفكيك، وعامل التوسعة (splats)، وعامل الوجود?، وasync/await. - الكائنات المدمجة القياسية في JavaScript مثل
MathوJSONودوالArrayوPromise.
القيود:
- لا DOM: تعمل الشيفرة في worker، لذا فإن
documentوwindowغير متاحين. - لا
requireولاimportولا حزم npm، ولا واجهات Node.js البرمجية. - لا مربع إدخال. عرّف بيانات الاختبار في الشيفرة.
مثال تطبيقي: تعبيرات التجميع و@
evens = (n for n in [1..10] when n % 2 is 0)
console.log evens # [2, 4, 6, 8, 10]
class Basket
constructor: (@owner) ->
@items = []
addAll: (list) ->
list.forEach (item) => @items.push item
this
basket = new Basket('Ada').addAll ['tea', 'milk']
console.log "#{basket.owner} has #{basket.items.length} items"
يحفظ (@owner) في الدالة البانية الوسيط بوصفه this.owner. وتستخدم دالة الاستدعاء الرجعي =>، فيظل @items يشير إلى السلة. أما مع السهم النحيف -> فسيشير إلى شيء آخر وسيفشل الاستدعاء. افتح شيفرة JavaScript المُولَّدة لترى كيف يتحول تعبير التجميع إلى حلقة ويتحول الصنف إلى صنف ES.
مزالق شائعة
- المسافات البيضاء لها دلالة. تحدد الإزاحة الكتل، لذا فإن سطرًا غير محاذى يغيّر المعنى أو يفشل في الترجمة.
- الإرجاع الضمني. تُرجع الدالة قيمة آخر تعبير فيها. والحلقة في نهاية الدالة تجمع نتائجها في مصفوفة. أضف
returnصريحًا إذا كنت لا تريد ذلك. inمقابلof. تمرfor x in arrayعلى القيم، بينما تمرfor key, value of objectعلى الخصائص. وهذا عكس ما قد يتوقعه مطوّر JavaScript.- تعبيرات التجميع تحتاج إلى أقواس عندما تُسنِدها أو تطبعها. فبدونها، تُسند
evens = n for n in listكل عنصر إلىevensبالتتابع، فينتهي بك الأمر إلى العنصر الأخير بدلًا من مصفوفة. - لا
varولاlet. فإسناد قيمة إلى اسم موجود في نطاق خارجي يحدّث ذلك المتغير بدلًا من إنشاء متغير جديد. - الكلمات
isوisntوandوorوnotأسماء بديلة، ويُترجم==إلى===الصارم.
CoffeeScript أم TypeScript اليوم؟
في المشاريع الجديدة، يختار معظم الفرق TypeScript أو JavaScript الحديثة، لأنهما توفران أنواعًا ثابتة ودعمًا أوسع في المحررات والمكتبات. ولا تزال CoffeeScript مفيدة لصيانة الشيفرات القائمة، مثل تطبيقات Ruby on Rails الأقدم، وللسكربتات السريعة الموجزة. وعند الترحيل، تكون JavaScript المولَّدة نقطة انطلاق جيدة. نظّفها بـ منسّق JavaScript وأداة ضغطه، أو جرّب الناتج في مترجم TypeScript عبر الإنترنت.
الأسئلة الشائعة
هل يمكنني تحويل CoffeeScript إلى JavaScript هنا؟
نعم. شغّل شيفرتك، وافتح شيفرة JavaScript المُولَّدة وانسخ الناتج. يُنتَج بواسطة مترجم CoffeeScript 2.7 الرسمي في وضع bare.
لماذا تُرجع دالتي مصفوفة لم أتوقعها؟
بسبب الإرجاع الضمني. فإذا كانت الحلقة آخر تعبير في الدالة، تُجمع نتائجها وتُرجَع. أنهِ الدالة بـ return أو بقيمة أخرى لتجنب ذلك.
أين يمكنني تشغيل JavaScript مباشرةً؟
استخدم مترجم JavaScript عبر الإنترنت، أو تصفّح كل المترجمات البرمجية عبر الإنترنت.
آخر تحديث
التعليقات
سجّل الدخول لتقييم هذه الأداة.
شارك نصيحة أو اطرح سؤالًا أو أخبر الآخرين كيف عملت الأداة معك.
لا توجد تعليقات بعد. كن أول من يشارك تجربته.