الفرق بين المراجعتين ل"React/code splitting"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:تقسيم الشيفرة}}</noinclude>')
 
سطر 1: سطر 1:
 
<noinclude>{{DISPLAYTITLE:تقسيم الشيفرة}}</noinclude>
 
<noinclude>{{DISPLAYTITLE:تقسيم الشيفرة}}</noinclude>
 +
 +
== التحزيم (Bundling) ==
 +
تكون معظم الملفّات في تطبيقات React مُحزَّمة باستخدام أدوات مثل Webpack أو Browserify. التحزيم هو عملية تتبّع الملفّات المستوردة ودمجها في ملف واحد وهو الحزمة (Bundle). يُمكِن بعدها تضمين هذه الحزمة في صفحة ويب لتحميل كامل التطبيق دفعة واحدة.
 +
 +
=== مثال ===
 +
شيفرة التطبيق هي:<syntaxhighlight lang="javascript">
 +
// app.js
 +
import { add } from './math.js';
 +
 +
console.log(add(16, 26)); // 42
 +
 +
</syntaxhighlight>شيفرة الحزمة هي:<syntaxhighlight lang="javascript">
 +
function add(a, b) {
 +
  return a + b;
 +
}
 +
 +
console.log(add(16, 26)); // 42
 +
 +
</syntaxhighlight>'''ملاحظة:''' سينتهي مظهر الحزم لديك إلى شكلٍ مختلف عن هذا.
 +
 +
إن كنت تستخدم <code>create-react-app</code>، أو Next.js، أو Gatsby، أو أي أداة مشابهة، فسيكون لديك إعداد Webpack جاهز لتحزيم تطبيقك.
 +
 +
أمّا إن لم تكن تستخدم أي من هذه الأدوات فستحتاج إلى إعداد التحزيم بنفسك. انظر إلى دليل التثبيت ودليل البدء في توثيق Webpack.
 +
 +
== تقسيم الشيفرة ==
 +
يكون التحزيم رائعًا، ولكن عندما يكبر تطبيقك ستكبر الحزمة لديك أيضًا، خاصّة إن كنت تُضمِّن مكتبات طرف ثالث كبيرة الحجم. يجب الانتباه إلى الشيفرة التي تُضمِّنها في حزمتك لكي لا تجعلها كبيرة من غير قصد لدرجة أن يستغرق تطبيقك زمنًا طويلًا للتحميل.
 +
 +
لتجنّب الحصول على حزمة كبيرة من الأفضل استباق حصول المشكلة والبدء في تقسيم حزمتك. تقسيم الشيفرة (Code-Splitting) هو ميّزة مدعومة من قبل المُحزِّمات مثل Webpack و Browserify (عبر <code>factor-bundle</code>) والتي تستطيع إنشاء حزم متعددة يُمكِن تحميلها بشكل ديناميكي في زمن التنفيذ.
 +
 +
يُساعدك تقسيم شيفرة تطبيقك على إجراء تحميل مُتأخّر (Lazy Load) للأشياء التي يحتاجها المستخدم حاليًّا فقط، ممّا يُحسِّن بشكل كبير أداء تطبيقك. وفي حين أنّك لم تُقلِّل الحجم الكلي لشيفرة تطبيقك، فقد تجنّبت تحميل شيفرة قد لا يحتاجها المستخدم أبدًا وقلّلتَ حجم الشيفرة التي تحتاج إلى تحميلها في البداية.
 +
 +
== <code>import()‎</code> ==
 +
أفضل طريقة لتقديم تقسيم الشيفرة إلى تطبيقك هي عبر استخدام صياغة <code>import()‎</code> الديناميكية.
 +
 +
الشيفرة قبل الاستخدام:

مراجعة 08:38، 30 أغسطس 2018


التحزيم (Bundling)

تكون معظم الملفّات في تطبيقات React مُحزَّمة باستخدام أدوات مثل Webpack أو Browserify. التحزيم هو عملية تتبّع الملفّات المستوردة ودمجها في ملف واحد وهو الحزمة (Bundle). يُمكِن بعدها تضمين هذه الحزمة في صفحة ويب لتحميل كامل التطبيق دفعة واحدة.

مثال

شيفرة التطبيق هي:

// app.js
import { add } from './math.js';

console.log(add(16, 26)); // 42

شيفرة الحزمة هي:

function add(a, b) {
  return a + b;
}

console.log(add(16, 26)); // 42

ملاحظة: سينتهي مظهر الحزم لديك إلى شكلٍ مختلف عن هذا.

إن كنت تستخدم create-react-app، أو Next.js، أو Gatsby، أو أي أداة مشابهة، فسيكون لديك إعداد Webpack جاهز لتحزيم تطبيقك.

أمّا إن لم تكن تستخدم أي من هذه الأدوات فستحتاج إلى إعداد التحزيم بنفسك. انظر إلى دليل التثبيت ودليل البدء في توثيق Webpack.

تقسيم الشيفرة

يكون التحزيم رائعًا، ولكن عندما يكبر تطبيقك ستكبر الحزمة لديك أيضًا، خاصّة إن كنت تُضمِّن مكتبات طرف ثالث كبيرة الحجم. يجب الانتباه إلى الشيفرة التي تُضمِّنها في حزمتك لكي لا تجعلها كبيرة من غير قصد لدرجة أن يستغرق تطبيقك زمنًا طويلًا للتحميل.

لتجنّب الحصول على حزمة كبيرة من الأفضل استباق حصول المشكلة والبدء في تقسيم حزمتك. تقسيم الشيفرة (Code-Splitting) هو ميّزة مدعومة من قبل المُحزِّمات مثل Webpack و Browserify (عبر factor-bundle) والتي تستطيع إنشاء حزم متعددة يُمكِن تحميلها بشكل ديناميكي في زمن التنفيذ.

يُساعدك تقسيم شيفرة تطبيقك على إجراء تحميل مُتأخّر (Lazy Load) للأشياء التي يحتاجها المستخدم حاليًّا فقط، ممّا يُحسِّن بشكل كبير أداء تطبيقك. وفي حين أنّك لم تُقلِّل الحجم الكلي لشيفرة تطبيقك، فقد تجنّبت تحميل شيفرة قد لا يحتاجها المستخدم أبدًا وقلّلتَ حجم الشيفرة التي تحتاج إلى تحميلها في البداية.

import()‎

أفضل طريقة لتقديم تقسيم الشيفرة إلى تطبيقك هي عبر استخدام صياغة import()‎ الديناميكية.

الشيفرة قبل الاستخدام: