تم توليد و نشر هدا المقال عن طريق الذكاء الاصطناعي اصدار الاداة التوليد و النشر التلقائي 4,0 اتمنى ان ينال استحسانكم وشكرا.
في هذا المقال، سأشاركك رحلتي العميقة في عالم JavaScript، مع التركيز على جوانب أساسية قد تبدو بسيطة، ولكنها تحمل في طياتها الكثير من القوة والمرونة. سنتناول كيفية التعامل مع الألوان في HTML، ومعالجة الأحداث، وتعديل الأرقام، بالإضافة إلى استعراض آخر تحديثات Safari Technology Preview 223، واختبار معلوماتك في Date Class.
خلال مسيرتي كمطور JavaScript، اكتشفت أن فهم الأساسيات هو المفتاح لبناء تطبيقات قوية وفعالة. قد تتفاجأ بمعرفة كم من الإمكانات تكمن في هذه المفاهيم الأساسية، وكيف يمكن استغلالها لتحقيق نتائج مذهلة.
HTML/Colors: كيف تجد اللون المناسب لعملية الضرب العكسي؟
التعامل مع الألوان في HTML و CSS قد يبدو بسيطًا، ولكن هناك الكثير من التفاصيل التي يمكن أن تحدث فرقًا كبيرًا في تجربة المستخدم. أحد التحديات التي واجهتني ذات مرة هو إيجاد اللون المناسب لعملية الضرب العكسي (inverted multiply).
لفهم هذه العملية، تخيل أن لديك صورة وتريد عكس ألوانها. في CSS، يمكنك تحقيق ذلك باستخدام خاصية mix-blend-mode: difference; أو mix-blend-mode: exclusion;. ولكن، في بعض الحالات، قد تحتاج إلى إيجاد اللون الذي، عند ضربه في لون معين، يعطيك اللون العكسي. هذا يتطلب فهمًا عميقًا لنماذج الألوان مثل RGB و HSL.
تجربتي الشخصية: عندما كنت أعمل على مشروع يتطلب إنشاء تأثيرات بصرية معقدة، وجدت أن استخدام الدوال الرياضية في JavaScript يمكن أن يساعدني في حساب الألوان المطلوبة بدقة. قمت بإنشاء دالة تأخذ لونًا كمدخل وتعيد اللون الذي، عند ضربه في اللون الأصلي، يعطي اللون الأبيض. هذا سمح لي بإنشاء تأثيرات إضاءة وظلال ديناميكية.
// دالة لحساب اللون العكسي
function getInverseColor(color) {
const r = 255 - color.r;
const g = 255 - color.g;
const b = 255 - color.b;
return { r, g, b };
}
// مثال للاستخدام
const originalColor = { r: 50, g: 100, b: 150 };
const inverseColor = getInverseColor(originalColor);
console.log(inverseColor); // سيظهر اللون العكسي
لتجربة how found color for inverted multiply يمكنك استعمال الادوات المتاحة على الانترنت او بناء دالة مخصصة لك.
Handling JavaScript Event Listeners With Parameters
تعتبر معالجة الأحداث (Event Handling) من الركائز الأساسية في تطوير تطبيقات الويب التفاعلية. ولكن، قد تواجه بعض التحديات عند محاولة تمرير معاملات (parameters) إلى دوال معالجة الأحداث. إليك بعض الطرق الفعالة للتعامل مع هذه المشكلة:
- استخدام الدوال المجهولة (
Anonymous Functions): يمكنك استخدام دالة مجهولة لتغليف الدالة التي تريد استدعاؤها مع المعاملات. - استخدام دالة
bind(): تسمح لك دالةbind()بإنشاء دالة جديدة مرتبطة بكائن معين، ويمكنك تمرير المعاملات كجزء من عملية الربط. - استخدام الخاصية
data-*فيHTML: يمكنك تخزين المعاملات في خصائصdata-*في عنصرHTML، ثم استرجاعها في دالة معالجة الحدث.
مثال: لنفترض أن لديك زرًا وتريد تمرير معرف المنتج (product ID) إلى دالة عند النقر عليه.
<button class='product-button' data-product-id='123'>إضافة إلى السلة</button>
const buttons = document.querySelectorAll('.product-button');
buttons.forEach(button => {
button.addEventListener('click', function() {
const productId = this.dataset.productId;
addToCart(productId);
});
});
function addToCart(productId) {
console.log(`تمت إضافة المنتج ${productId} إلى السلة`);
}
في هذا المثال، استخدمنا الخاصية data-product-id لتخزين معرف المنتج، ثم استرجعناه في دالة معالجة الحدث باستخدام this.dataset.productId.
تذكر دائمًا أن تكون حذرًا عند تمرير المعاملات إلى دوال معالجة الأحداث، وتأكد من أنك تفهم كيفية عمل كل طريقة قبل استخدامها في مشروعك.
How to replace first 3 digits, then set a Point and then set a point all second digit?
تعديل الأرقام هو جزء أساسي من العديد من التطبيقات، سواء كانت تطبيقات ويب أو تطبيقات سطح مكتب. إليك بعض الطرق الشائعة لتعديل الأرقام في JavaScript:
- استبدال أول 3 أرقام: يمكنك استخدام دوال مثل
substring()وreplace()لاستبدال أول 3 أرقام في سلسلة نصية تمثل رقمًا. - إضافة فاصلة عشرية: يمكنك استخدام دالة
toFixed()لإضافة فاصلة عشرية وتحديد عدد الأرقام بعد الفاصلة. - إضافة فاصلة بعد كل رقمين: هذه العملية أكثر تعقيدًا، وتتطلب استخدام تعبير نمطي (
Regular Expression) لإضافة الفاصلة بعد كل رقمين.
مثال: لنفترض أن لديك رقمًا وتريد استبدال أول 3 أرقام بـ "XXX"، ثم إضافة فاصلة بعد كل رقمين.
const number = '1234567890';
// استبدال أول 3 أرقام
const replacedNumber = 'XXX' + number.substring(3);
console.log(replacedNumber); // سيظهر XXX4567890
// إضافة فاصلة بعد كل رقمين
const formattedNumber = replacedNumber.replace(/(\d{2})/g, '$1,');
console.log(formattedNumber); // سيظهر XXX,45,67,89,0,
تجربتي الشخصية: في أحد المشاريع، احتجت إلى تنسيق أرقام الهواتف لعرضها بشكل مقروء. استخدمت تعبيرًا نمطيًا معقدًا لإضافة مسافات وفواصل بين الأرقام، مع مراعاة تنسيقات الهواتف المختلفة في بلدان مختلفة. كان هذا التحدي ممتعًا ومفيدًا في نفس الوقت.
Apple Releases Safari Technology Preview 223 With Bug Fixes and Performance Improvements
تعتبر Safari Technology Preview نسخة تجريبية من متصفح Safari، تتيح للمطورين تجربة الميزات الجديدة والتحسينات قبل إصدارها للجمهور. الإصدار 223 يأتي مع مجموعة من إصلاحات الأخطاء وتحسينات الأداء.
من بين الميزات الجديدة التي قد تجدها في هذا الإصدار:
- تحسينات في دعم معايير الويب الجديدة.
- إصلاحات لأخطاء تتعلق بتوافق
JavaScriptوCSS. - تحسينات في أداء عرض صفحات الويب المعقدة.
إذا كنت مطور ويب، أنصحك بتجربة Safari Technology Preview بانتظام، والإبلاغ عن أي مشاكل تواجهها. هذا يساعد Apple على تحسين المتصفح وتقديم تجربة أفضل للمستخدمين.
Testing Your Knowledge of JavaScript’s Date Class
تعتبر Date Class في JavaScript أداة قوية للتعامل مع التواريخ والأوقات. ولكن، قد تكون معقدة بعض الشيء في بعض الأحيان. إليك بعض الأسئلة التي يمكنك استخدامها لاختبار معلوماتك حول هذه الفئة:
- كيف يمكنك إنشاء كائن
Dateيمثل تاريخ اليوم؟ - كيف يمكنك الحصول على السنة والشهر واليوم من كائن
Date؟ - كيف يمكنك مقارنة تاريخين في
JavaScript؟ - كيف يمكنك تنسيق التاريخ لعرضه بتنسيق معين؟
تجربتي الشخصية: أتذكر عندما كنت أعمل على تطبيق تقويم، واجهت صعوبة في التعامل مع المناطق الزمنية المختلفة. استغرقت وقتًا طويلاً لفهم كيفية عمل Date Class مع المناطق الزمنية، وكيفية تحويل التواريخ بين المناطق المختلفة. في النهاية، تعلمت الكثير عن التواريخ والأوقات، وأصبحت أكثر كفاءة في استخدام Date Class.
// إنشاء كائن Date يمثل تاريخ اليوم
const today = new Date();
console.log(today);
// الحصول على السنة والشهر واليوم
const year = today.getFullYear();
const month = today.getMonth(); // تذكر أن الشهر يبدأ من 0
const day = today.getDate();
console.log(year, month, day);
// تنسيق التاريخ
const formattedDate = today.toLocaleDateString('ar-SA');
console.log(formattedDate);
اختبر نفسك وحاول الإجابة على هذه الأسئلة. إذا كنت تواجه صعوبة، لا تتردد في البحث عن الإجابات في الوثائق الرسمية أو في المواقع التعليمية المتخصصة.
كيف يمكنني تحسين أداء تطبيقات JavaScript الخاصة بي؟
ركز على تحسين كفاءة الكود، وتقليل عدد طلبات HTTP، واستخدام التخزين المؤقت (caching) لتقليل وقت التحميل. كما أن استخدام أدوات تحليل الأداء يمكن أن يساعدك في تحديد المشاكل المحتملة.
ما هي أفضل الممارسات لكتابة كود JavaScript نظيف وقابل للصيانة؟
استخدم أسماء وصفية للمتغيرات والدوال، واكتب تعليقات توضيحية للكود المعقد، وحافظ على اتساق تنسيق الكود، وقسم الكود إلى وحدات صغيرة قابلة لإعادة الاستخدام. كما أن استخدام أدوات التدقيق اللغوي (linters) يمكن أن يساعدك في الحفاظ على جودة الكود.
المصدر:
صوان محور XYZ
شكر خاص لـ GEMINI وجمال الحزازي.