:: # دورة تنمية مهارات الإبداع والإشراف في بيئة العمل#16 فبراير 2025م #اسطنبول#metc (آخر رد :جهاد سعيد)       :: # دورة الأعمال المساحية وحساب الكميات واستخدام نظام تحديد المواقع العالمي #26 يناير 2 (آخر رد :جهاد سعيد)       :: دورة : التقنيات الحديثة في صيانة المولدات والمحركات الكهربائية (آخر رد :محمد بادر)       :: دورة : الإتجاهات الحديثة في العلاقات العامة والإعلام الإقناعي (آخر رد :محمد بادر)       :: دورة : تخطيط القوى العاملة وإعادة هندسة العمليات وتقييم الاداء (آخر رد :محمد بادر)       :: # دورة هندسة التآكل بالتعدين #16 فبراير 2025م #القاهرة#metc (آخر رد :جهاد سعيد)       :: # دورة التخليص الجمركي والشحن والتصدير #23 فبراير 2025م #دبي #metc (آخر رد :جهاد سعيد)       :: المحامية رباب المعبي تناقش رسالة الدكتوراة بعنوان (حقوق الملكية الفكرية في للمصنفات ا (آخر رد :جاسر صفوان)       :: دورة إستراتيجيات التعاقد والتفاوض للمشتريات - مستوى متقدم (آخر رد :هاجر صبري)       :: مكتب ترجمة معتمد بمدينة نصر: دليلك الشامل لاختيار الأفضل (آخر رد :عمر شحات)      
اختر لونك:
وَقُلِ اعْمَلُوا فَسَيَرَى اللَّهُ عَمَلَكُمْ وَرَسُولُهُ وَالْمُؤْمِنُونَ ۖ وَسَتُرَدُّونَ إِلَىٰ عَالِمِ الْغَيْبِ وَالشَّهَادَةِ فَيُنَبِّئُكُم بِمَا كُنتُمْ تَعْمَلُونَ [ التوبة : ( 105 )] كلمة الإدارة

يرجى إختيار القسم المناسب قبل النشر وسيعاقب المخالف بإنذار أول مرة وسيتم حظره إذا تكرر ذلك كلمة الإدارة

يُمنع كتابة مواضيع السحر والشعوذة والروحانيات والابراج بكافة الأشكال والمخالف سيعاقب بحظر مؤقت وإذا تكرر سيكون حظر دائم تنبيه هام جداً



أضف رد جديد
 
LinkBack أدوات الموضوع انواع عرض الموضوع

قديم 01-04-2019, 06:05 PM   #1
تاريخ التسجيل: Feb 2019
العمر: 38
المشاركات: 1,149
التقييم: 10
تاريخ التسجيل: Feb 2019
العمر: 38
المشاركات: 1,149
التقييم: 10
افتراضي كيفية تنسيق المكونات في React.js

في مشاريع React.js، يمكن تنسيق المكونات (Components) بعدة طرق مختلفة، واختيار طريقة دون غيرها يعتمد على رغبة المطور ومدى ارتياحه لها. وقد تكون الإستعانة بطريقة معينة أفضل في حالات محددة بحسب درجة تعقيد وحجم المكون.
في هذا الدرس، سنكتشف معا هذه الطرق الأربعة لتنسيق وإضافة أكواد CSS لمكونات تطبيقات React.js، وأنا متأكد بأن المطور سيعرف تلقائيا الطريقة التي عليه استخدامها بحسب حالة وحجم المكون أو المشروع الذي يشتغل عليه.
1. استدعاء ملف CSS

تعتمد هذه الطريقة على إنشاء ملف CSS واستدعائه من داخل ملف جافاسكريبت الخاص بالمكون المراد تنسيقه.







import React from 'react'; import './Alert.css';
const Alert = () => ( <div className="alert-box danger"> <span className="alert-message">This an alert message!</span> </div> );
export default Alert;



view raw Alert.js hosted with by GitHub


كما تلاحظون نقوم باستيراد ملف CSS تماما كما نقوم باستيراد وحدات الجافاسكريبت..
شكرا Webpack






.alert-box { padding: 15px; border: 1px solid #b71d1d; } .alert-box.danger { background: #aae9fb; } .alert-box.danger .alert-message { color: #b71d1d; }



view raw Alert.css hosted with by GitHub


هذه الطريقة يمكن مقارنتها مع الطريقة التي تستخدم في مشاريع أنجولار (Angular) حيث أن لكل مكون ملفات CSS الخاصة به ويتم استدعاؤها فقط عندما يقع الطلب على هذا المكون.
2. طريقة Inline styling

جميعنا نعرف طريقة Inline Styling التي تستخدم لتنسيق عناصر html في تطبيقات الويب.
React.js يتيح لنا كذلك استخدام هذه الطريقة لإضافة أكواد CSS لمكوناته، ولكن الفرق أن التنسيق يكون على شكل كائن جافاسكريبت وليس string كما جرت العادة في مقاييس HTML الإعتيادية.






import React from 'react';
const alertBoxStyle = { padding: '15px', border: '1px solid #b71d1d' }; const alertMessageStyle = { backgoundColor: '#aae9fb', color: '#b71d1d' };
const Alert = () => ( <div style={alertBoxStyle}> <span style={alertMessageStyle}>This is an alert message!</span> </div> );
export default Alert;



view raw Alert.js hosted with by GitHub


كتابة تنسيقات Inline Styles في React على شكل كائنات جافاسكريبت أمر منطقي إذا علمنا أن قالب المكون هو في النهاية مجرد أكواد جافاسكريبت تظهر وكأنها html عادي، ولكنها في الحقيقة ليست كذلك.
تلك الأكواد التي تشبه html هي مجرد تركيب يدعى JSX يتم تحويله فيما بعد بواسطة Babel و Webpack إلى أكواد جافاسكريبت عادية في مرحلة البناء أو Bundling.
3. طريقة وحدات CSS أو CSS Modules

ما هي Css modules ؟

بحسب المستودع الرسمي لمشروع وحدات Css، فإن تعريف الأخيرة هو :
CSS files in which all class names and animation names are scoped locally by default.
وحدات CSS ليست مشروعا رسميا من هيئة W3.org ولا يوجد له أي دعم أصلي من أي من المتصفحات المعروفة، بل هي فقط عملية تتم أثناء مرحلة بناء ملفات الجافاسكريبت الخاصة بمشروعنا (باستخدام Webpack مثلا) ويتم خلالها تغيير أسماء كلاسات ومحددات CSS و HTML حتى يتم استخدامها وفق نطاق (Scope) محدد. والهدف هو حماية أكواد داخل نطاق المكون الذي قام باستدعائها.
إليكم كيفية استخدام وحدات ال CSS داخل مكون React.js :






import React from 'react'; import styles from './Alert.css';
const Alert = () => ( <div className={[styles.alertBox, styles.danger].join(' ')}> <span className={styles.alertMessage}>This an alert message!</span> </div> );
export default Alert;



view raw Alert.js hosted with by GitHub


نلاحظ أننا قمنا باستدعاء ملف Alert.css وكأنه ملف جافاسكريبت، ونقوم باستهداف الكلاسات داخله وكأنها خصائص داخل كائن جافاسكريبت.
وملف CSS سيكوم على هذا الشكل :






:local(.alertBox) { padding: 15px; border: 1px solid #b71d1d; } :local(.alertBox.danger) { background: #aae9fb; } :local(.alertBox.danger .alertMessage) { color: #b71d1d; }



view raw Alert.css hosted with by GitHub


وفي مرحلة ال Bundling سيقوم Webpack (بعد إعداده) بتوليد أسماء جديدة للكلاسات التي تم استخدامها، ما يعني أن الأسماء التي قمنا بكتابتها لا يتم استخدامها أبدا في المتصفح، فقد تم تعويضها بالأسماء الجديدة كما ستلاحظون في الصورة التالية :
كيفية تنسيق المكونات React.js
عندما تقوم بإنشاء مشروع React.js باستخدام الحزمة create-react-app فإن Webpack يكون معد لدعم خاصية CSS modules ولكن بشرط إحاطة المحددات ب ()local: كما في المثال أعلاه.
أما إذا تم إنشاء المشروع بطريقة أخرى فسيكون علينا إعداد Webpack ليدعم هذه الميزة. والإعداد بسيط لا يحتاج سوى لإضافة هذه الأسطر :
{ loader: require.resolve('css-loader'), options: { importLoaders: 1, modules: true, localIdentName: "[name]__[local]___[hash:base64:5]" }, }
1
2
3
4
5
6
7
8

{
loader: require.resolve('css-loader'),
options: {
importLoaders: 1,
modules: true,
localIdentName: "[name]__[local]___[hash:base64:5]"
},
}



حينذاك لا نكون مجبرين على استخدام ()local:، بل نكتب كلاسات CSS كما نفعل دائما في أي ملف css عادي.
4. استخدام styled-components

styled-components هي مكتبة موجهة ل React.js لإضافة تنسيقات على شكل مكونات (Components) يتم إنشاؤها باستخدام خليط من الجافاسكريبت و css.






import React from 'react'; import styles from './Alert.css';
import styled from 'styled-components';
const themes = { danger : { bgColor: '#aae9fb' } }
const AlertBox = styled.div` padding: 15px; border: 1px solid #b71d1d; background: ${props => props.type.bgColor}; `;
const AlertMessage = styled.span` color: #b71d1d; `;
const Alert = () => ( <AlertBox type={themes.danger}> <AlertMessage>This an alert message!</AlertMessage> </AlertBox> );
export default Alert;



view raw Alert.js hosted with by GitHub


  1. أولا نقوم بتحميل مكتبة style-components بطبيعة الحال عن طريق مدير الحزم npm.
  2. بعد ذلك نقوم بتعريف وإنشاء مكون التنسيق الخاص بنا وتحديد عنصر html الذي يمثله في واجهة المستخدم (div و span في حالتينا).
  3. في الأخير نقوم باستعمال أسماء مكونات التنسيق التي أنشأناها (AlertBox و AlertMessage) ونقوم بطلبها واستدعائها تماما كما نفعل مع مكونات React.js في الحالات العادية.


raheel غير متواجد حالياً   اقتباس
أضف رد جديد


الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1)
 

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة


المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
طرق تنسيق المكونات في React.js raheel قسم تطوير المواقع ومحركات البحث والسيو Seo والووردبريس WordPress 0 10-04-2019 08:26 PM
كيفية استعمال مكتبة Redux في مشاريع React.js raheel قسم تطوير المواقع ومحركات البحث والسيو Seo والووردبريس WordPress 0 01-04-2019 06:18 PM
كيفية إعداد مشروع React.js باستخدام Webpack 4 و Babel raheel قسم تطوير المواقع ومحركات البحث والسيو Seo والووردبريس WordPress 0 01-04-2019 06:04 PM
تعرف علي الكتب الممتازة التي تساعدك علي تعلم React.js في 2019 raheel قسم تطوير المواقع ومحركات البحث والسيو Seo والووردبريس WordPress 0 01-04-2019 05:27 PM
ما هي وظائف دورة الحياة (Lifecycle Methods) في React.js raheel قسم تطوير المواقع ومحركات البحث والسيو Seo والووردبريس WordPress 0 01-04-2019 05:24 PM


الساعة الآن 03:32 AM

 


Content Relevant URLs by vBSEO ©2010, Crawlability, Inc.