كيفية تحسين أداء المكتبات الخارجية

@next/third-parties هي مكتبة توفر مجموعة من المكونات والأدوات التي تعمل على تحسين الأداء وتجربة المطور عند تحميل المكتبات الخارجية الشهيرة في تطبيق Next.js الخاص بك.

جميع تكاملات المكتبات الخارجية المقدمة من @next/third-parties تم تحسينها للأداء وسهولة الاستخدام.

البدء

للبدء، قم بتثبيت مكتبة @next/third-parties:

Terminal
npm install @next/third-parties@latest next@latest

@next/third-parties هي حاليًا مكتبة تجريبية قيد التطوير النشط. نوصي بتثبيتها باستخدام علامات latest أو canary بينما نعمل على إضافة المزيد من تكاملات المكتبات الخارجية.

مكتبات جوجل الخارجية

جميع المكتبات الخارجية المدعومة من جوجل يمكن استيرادها من @next/third-parties/google.

مدير علامات جوجل

يمكن استخدام مكون GoogleTagManager لإنشاء حاوية مدير علامات جوجل في صفحتك. بشكل افتراضي، يقوم بجلب النص البرمجي المضمن الأصلي بعد حدوث التمييه (hydration) في الصفحة.

لتحميل مدير علامات جوجل لجميع المسارات، قم بتضمين المكون مباشرة في تخطيط الجذر الخاص بك ومرر معرف حاوية GTM:

import { GoogleTagManager } from '@next/third-parties/google'

export default function RootLayout({
  children,
}: {
  children: React.ReactNode
}) {
  return (
    <html lang="en">
      <GoogleTagManager gtmId="GTM-XYZ" />
      <body>{children}</body>
    </html>
  )
}
import { GoogleTagManager } from '@next/third-parties/google'

export default function RootLayout({ children }) {
  return (
    <html lang="en">
      <GoogleTagManager gtmId="GTM-XYZ" />
      <body>{children}</body>
    </html>
  )
}

لتحميل مدير علامات جوجل لمسار واحد، قم بتضمين المكون في ملف الصفحة الخاص بك:

app/page.js
import { GoogleTagManager } from '@next/third-parties/google'

export default function Page() {
  return <GoogleTagManager gtmId="GTM-XYZ" />
}

إرسال الأحداث

يمكن استخدام دالة sendGTMEvent لتتبع تفاعلات المستخدم على صفحتك عن طريق إرسال أحداث باستخدام كائن dataLayer. لكي تعمل هذه الدالة، يجب تضمين مكون <GoogleTagManager /> إما في تخطيط رئيسي، صفحة، أو مكون، أو مباشرة في نفس الملف.

app/page.js
'use client'

import { sendGTMEvent } from '@next/third-parties/google'

export function EventButton() {
  return (
    <div>
      <button
        onClick={() => sendGTMEvent({ event: 'buttonClicked', value: 'xyz' })}
      >
        إرسال حدث
      </button>
    </div>
  )
}

راجع توثيق المطور لمدير العلامات لمعرفة المزيد عن المتغيرات والأحداث المختلفة التي يمكن تمريرها إلى الدالة.

وضع العلامات من جانب الخادم

إذا كنت تستخدم مدير علامات من جانب الخادم وتقدم نصوص gtm.js من خادم العلامات الخاص بك، يمكنك استخدام خيار gtmScriptUrl لتحديد عنوان URL للنص البرمجي.

الخيارات

خيارات لتمريرها إلى مدير علامات جوجل. للحصول على قائمة كاملة بالخيارات، اقرأ وثائق مدير علامات جوجل.

الاسمالنوعالوصف
gtmIdمطلوبمعرف حاوية GTM الخاص بك. عادةً ما يبدأ بـ GTM-.
gtmScriptUrlاختياريعنوان URL لنص GTM. الافتراضي هو https://www.googletagmanager.com/gtm.js.
dataLayerاختياريكائن طبقة البيانات لإنشاء الحاوية به.
dataLayerNameاختيارياسم طبقة البيانات. الافتراضي هو dataLayer.
authاختياريقيمة معلمة المصادقة (gtm_auth) لمقتطفات البيئة.
previewاختياريقيمة معلمة المعاينة (gtm_preview) لمقتطفات البيئة.

تحليلات جوجل

يمكن استخدام مكون GoogleAnalytics لتضمين تحليلات جوجل 4 في صفحتك عبر علامة جوجل (gtag.js). بشكل افتراضي، يقوم بجلب النصوص البرمجية الأصلية بعد حدوث التمييه في الصفحة.

توصية: إذا كان مدير علامات جوجل مضمنًا بالفعل في تطبيقك، يمكنك تكوين تحليلات جوجل مباشرة باستخدامه، بدلاً من تضمين تحليلات جوجل كمكون منفصل. راجع الوثائق لمعرفة المزيد عن الاختلافات بين مدير العلامات و gtag.js.

لتحميل تحليلات جوجل لجميع المسارات، قم بتضمين المكون مباشرة في تخطيط الجذر الخاص بك ومرر معرف القياس الخاص بك:

import { GoogleAnalytics } from '@next/third-parties/google'

export default function RootLayout({
  children,
}: {
  children: React.ReactNode
}) {
  return (
    <html lang="en">
      <body>{children}</body>
      <GoogleAnalytics gaId="G-XYZ" />
    </html>
  )
}
import { GoogleAnalytics } from '@next/third-parties/google'

export default function RootLayout({ children }) {
  return (
    <html lang="en">
      <body>{children}</body>
      <GoogleAnalytics gaId="G-XYZ" />
    </html>
  )
}

لتحميل تحليلات جوجل لمسار واحد، قم بتضمين المكون في ملف الصفحة الخاص بك:

app/page.js
import { GoogleAnalytics } from '@next/third-parties/google'

export default function Page() {
  return <GoogleAnalytics gaId="G-XYZ" />
}

إرسال الأحداث

يمكن استخدام دالة sendGAEvent لقياس تفاعلات المستخدم على صفحتك عن طريق إرسال أحداث باستخدام كائن dataLayer. لكي تعمل هذه الدالة، يجب تضمين مكون <GoogleAnalytics /> إما في تخطيط رئيسي، صفحة، أو مكون، أو مباشرة في نفس الملف.

app/page.js
'use client'

import { sendGAEvent } from '@next/third-parties/google'

export function EventButton() {
  return (
    <div>
      <button
        onClick={() => sendGAEvent('event', 'buttonClicked', { value: 'xyz' })}
      >
        إرسال حدث
      </button>
    </div>
  )
}

راجع توثيق المطور لتحليلات جوجل لمعرفة المزيد عن معلمات الأحداث.

تتبع مشاهدات الصفحات

تقوم تحليلات جوجل تلقائيًا بتتبع مشاهدات الصفحات عند تغيير حالة سجل المتصفح. هذا يعني أن التنقلات من جانب العميل بين مسارات Next.js سترسل بيانات مشاهدات الصفحات دون أي تكوين.

للتأكد من أن التنقلات من جانب العميل يتم قياسها بشكل صحيح، تحقق من تمكين خاصية "القياس المعزز" في لوحة التحكم الخاصة بك وتم تحديد خانة الاختيار "تغييرات الصفحة بناءً على أحداث سجل المتصفح".

ملاحظة: إذا قررت إرسال أحداث مشاهدات الصفحات يدويًا، تأكد من تعطيل قياس مشاهدات الصفحات الافتراضي لتجنب وجود بيانات مكررة. راجع توثيق المطور لتحليلات جوجل لمعرفة المزيد.

الخيارات

خيارات لتمريرها إلى مكون <GoogleAnalytics>.

الاسمالنوعالوصف
gaIdمطلوبمعرف القياس الخاص بك. عادةً ما يبدأ بـ G-.
dataLayerNameاختيارياسم طبقة البيانات. الافتراضي هو dataLayer.
nonceاختياريnonce.

تضمين خرائط جوجل

يمكن استخدام مكون GoogleMapsEmbed لإضافة تضمين خرائط جوجل إلى صفحتك. بشكل افتراضي، يستخدم سمة loading لتحميل التضمين بكسل عند الوصول إليه.

app/page.js
import { GoogleMapsEmbed } from '@next/third-parties/google'

export default function Page() {
  return (
    <GoogleMapsEmbed
      apiKey="XYZ"
      height={200}
      width="100%"
      mode="place"
      q="Brooklyn+Bridge,New+York,NY"
    />
  )
}

الخيارات

خيارات لتمريرها إلى تضمين خرائط جوجل. للحصول على قائمة كاملة بالخيارات، اقرأ وثائق تضمين خرائط جوجل.

الاسمالنوعالوصف
apiKeyمطلوبمفتاح API الخاص بك.
modeمطلوبوضع الخريطة
heightاختياريارتفاع التضمين. الافتراضي هو auto.
widthاختياريعرض التضمين. الافتراضي هو auto.
styleاختياريتمرير أنماط إلى iframe.
allowfullscreenاختياريخاصية للسماح لأجزاء معينة من الخريطة بالذهاب إلى وضع ملء الشاشة.
loadingاختياريالافتراضي هو lazy. فكر في تغييره إذا كنت تعلم أن التضمين الخاص بك سيكون فوق الطي.
qاختيارييحدد موقع علامة الخريطة. قد يكون هذا مطلوبًا اعتمادًا على وضع الخريطة.
centerاختيارييحدد مركز عرض الخريطة.
zoomاختيارييحدد مستوى التكبير الأولي للخريطة.
maptypeاختيارييحدد نوع بلاط الخريطة للتحميل.
languageاختيارييحدد اللغة المستخدمة لعناصر واجهة المستخدم وعرض التسميات على بلاط الخريطة.
regionاختيارييحدد الحدود والتسميات المناسبة للعرض، بناءً على الحساسيات الجيوسياسية.

تضمين يوتيوب

يمكن استخدام مكون YouTubeEmbed لتحميل وعرض تضمين يوتيوب. يقوم هذا المكون بالتحميل بشكل أسرع باستخدام lite-youtube-embed في الخلفية.

app/page.js
import { YouTubeEmbed } from '@next/third-parties/google'

export default function Page() {
  return <YouTubeEmbed videoid="ogfYd705cRs" height={400} params="controls=0" />
}

الخيارات

الاسمالنوعالوصف
videoidمطلوبمعرف فيديو يوتيوب.
widthاختياريعرض حاوية الفيديو. القيمة الافتراضية auto
heightاختياريارتفاع حاوية الفيديو. القيمة الافتراضية auto
playlabelاختياريتسمية مخفية بصريًا لزر التشغيل لإمكانية الوصول.
paramsاختياريمعلمات مشغل الفيديو المحددة هنا.
يتم تمرير المعلمات كسلسلة استعلام.
مثال: params="controls=0&start=10&end=30"
styleاختيارييستخدم لتطبيق الأنماط على حاوية الفيديو.