دوال القوالب الموسومة
عالجوا أجزاء القالب باستخدام دوال الوسم.
دوال القوالب الموسومة درس مجاني في JavaScript Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في JavaScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة JavaScript Academy 4 دروس في المجموع.
ما دالة الوسم؟
القالب النصي الموسوم هو استدعاء دالة يوضع فيه اسم الدالة مباشرةً قبل القالب النصي. وتتلقى الدالة أجزاء القالب المحلَّلة ويمكنها تحويلها.
function tag(strings, value) {
return strings[0] + value.toUpperCase() + strings[1]
}
console.log(tag(["Hi ", "!"], "bob"))مصفوفة السلاسل النصية
الوسيط الأول الذي تتلقاه دالة الوسم هو مصفوفة الأجزاء النصية الحرفية. وهذه هي مقاطع النص الواقعة بين العناصر النائبة وحولها.
function tag(strings) {
return strings.join("|")
}
console.log(tag(["a", "b", "c"]))القيم
بعد مصفوفة السلاسل النصية، تتلقى دالة الوسم كل قيمة مستوفاة كوسيط منفصل. ويؤدي استخدام معاملات rest إلى جمعها في مصفوفة.
function tag(strings, ...values) {
return values.join(",")
}
console.log(tag(["", " and ", ""], "x", "y"))إعادة تجميع السلسلة النصية
تتنقل دالة الوسم النموذجية في مصفوفة السلاسل النصية وتُدخل كل قيمة بين الأجزاء، ثم تعيد بناء السلسلة النهائية باستخدام أي تحويل تريدونه.
function tag(strings, ...values) {
let out = ""
strings.forEach(function (s, i) {
out += s + (values[i] !== undefined ? values[i] : "")
})
return out
}
console.log(tag(["A", "B", "C"], 1, 2))قاعدة طول السلاسل النصية
تحتوي مصفوفة السلاسل النصية دائمًا على عنصر واحد إضافي مقارنةً بمصفوفة القيم. فهناك نص قبل العنصر النائب الأول وبعد الأخير، حتى إذا كانت بعض الأجزاء فارغة.
function tag(strings, ...values) {
return "strings=" + strings.length + " values=" + values.length
}
console.log(tag(["", "", ""], 1, 2))تحويل القيم
بما أن الوسم يتحكم في كيفية إدراج القيم، يمكنكم تنسيقها. في هذا المثال، تُضاعف كل قيمة عددية قبل إدراجها.
function dbl(strings, ...values) {
let out = ""
strings.forEach(function (s, i) {
out += s + (values[i] !== undefined ? values[i] * 2 : "")
})
return out
}
console.log(dbl(["", " ", ""], 3, 4))إرجاع قيم غير نصية
لا يشترط أن تعيد دالة الوسم سلسلة نصية. إذ يمكنها إعادة أي قيمة، مثل كائن أو مصفوفة مبنية من أجزاء القالب.
function parts(strings, ...values) {
return { strings: strings, values: values }
}
const r = parts(["a", "b"], 9)
console.log(r.values[0])الخاصية raw
تحمل مصفوفة السلاسل النصية أيضًا خاصية raw، التي تحتوي على السلاسل من دون معالجة تسلسلات الهروب. وهذه هي الطريقة التي تعمل بها String.raw.
console.log(String.raw({ raw: ["a\\n", "b"] }, "X"))تحويل القيم interpolated إلى أحرف كبيرة
تعمل دالة وسم شائعة في العروض التوضيحية على تحويل كل قيمة interpolated إلى أحرف كبيرة، مع إبقاء النص الثابت دون تغيير.
function loud(strings, ...values) {
let out = ""
strings.forEach(function (s, i) {
out += s + (values[i] !== undefined ? String(values[i]).toUpperCase() : "")
})
return out
}
console.log(loud(["name is ", "."], "alice"))لماذا نستخدم دوال الوسم
تتيح دوال الوسم أنماطًا قوية، مثل تهريب المدخلات غير الموثوقة، والتدويل، وبناء SQL أو الاستعلامات، والتنسيق المخصص، وكل ذلك اعتمادًا على بنية القالب.
function highlight(strings, ...values) {
let out = ""
strings.forEach(function (s, i) {
out += s + (values[i] !== undefined ? "[" + values[i] + "]" : "")
})
return out
}
console.log(highlight(["score: ", " pts"], 42))تجاهل القيم
يمكن للوسم أن يختار تجاهل القيم interpolated بالكامل وإنشاء مخرجات اعتمادًا على الأجزاء الثابتة فقط، وهو أمر مفيد للتحليل أو التسجيل.
function onlyStatic(strings) {
return strings.filter(function (s) { return s.length > 0 }).join(" ")
}
console.log(onlyStatic(["Hello ", " world ", ""]))اختبار سريع
اختبروا معرفتكم بدوال الوسم.
مراجعة
مراجعة: تستدعي القوالب الموسومة دالةً مع أجزاء القالب التي جرى تحليلها.
- الوسيط الأول هو مصفوفة السلاسل
- الوسائط المتبقية هي القيم interpolated
- تحتوي strings على عنصر واحد أكثر من values
- تحتوي الخاصية raw على النص غير المعالج
function tag(s, ...v) { return s[0] + v[0] }
console.log(tag(["go "], "fast"))الأسئلة الشائعة
هل درس «دوال القوالب الموسومة» مجاني؟
نعم — نص درس «دوال القوالب الموسومة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة JavaScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة JavaScript Academy 4 دروس في المجموع.
ماذا ستتعلم في «دوال القوالب الموسومة»؟
عالجوا أجزاء القالب باستخدام دوال الوسم. تتمرن على JavaScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ JavaScript Academy؟
لا تُشترط خبرة سابقة. JavaScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «دوال القوالب الموسومة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس JavaScript Academy هذا؟
نعم. كل درس في JavaScript Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- أساسيات استيفاء السلاسل النصية
- السلاسل النصية متعددة الأسطر
- دوال القوالب الموسومة
- حالات استخدام عملية للقوالب الموسومة