generateViewport

يمكنك تخصيص منفذ العرض الأولي للصفحة باستخدام كائن viewport الثابت أو وظيفة generateViewport الديناميكية.

معلومة مفيدة:

  • تصديرات كائن viewport ووظيفة generateViewport مدعومة فقط في مكونات الخادم (Server Components).
  • لا يمكنك تصدير كائن viewport ووظيفة generateViewport من نفس مقطع المسار.
  • إذا كنت تقوم بالترحيل من تصديرات metadata، يمكنك استخدام أداة metadata-to-viewport-export codemod لتحديث التغييرات الخاصة بك.

كائن viewport

لتحديد خيارات منفذ العرض، قم بتصدير كائن viewport من ملف layout.jsx أو page.jsx.

import type { Viewport } from 'next'

export const viewport: Viewport = {
  themeColor: 'black',
}

export default function Page() {}
export const viewport = {
  themeColor: 'black',
}

export default function Page() {}

وظيفة generateViewport

يجب أن تُرجع generateViewport كائن Viewport يحتوي على حقل واحد أو أكثر من حقول منفذ العرض.

export function generateViewport({ params }) {
  return {
    themeColor: '...',
  }
}
export function generateViewport({ params }) {
  return {
    themeColor: '...',
  }
}

معلومة مفيدة:

  • إذا كان منفذ العرض لا يعتمد على معلومات وقت التشغيل، فيجب تحديده باستخدام كائن viewport الثابت بدلاً من generateViewport.

حقول منفذ العرض

themeColor

تعرف على المزيد حول theme-color.

لون المظهر البسيط

import type { Viewport } from 'next'

export const viewport: Viewport = {
  themeColor: 'black',
}
export const viewport = {
  themeColor: 'black',
}
<head> output
<meta name="theme-color" content="black" />

مع سمة media

import type { Viewport } from 'next'

export const viewport: Viewport = {
  themeColor: [
    { media: '(prefers-color-scheme: light)', color: 'cyan' },
    { media: '(prefers-color-scheme: dark)', color: 'black' },
  ],
}
export const viewport = {
  themeColor: [
    { media: '(prefers-color-scheme: light)', color: 'cyan' },
    { media: '(prefers-color-scheme: dark)', color: 'black' },
  ],
}
<head> output
<meta name="theme-color" media="(prefers-color-scheme: light)" content="cyan" />
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="black" />

width، initialScale، maximumScale و userScalable

معلومة مفيدة: يتم تعيين وسم meta viewport تلقائيًا، وعادةً لا تكون هناك حاجة للتكوين اليدوي لأن الإعدادات الافتراضية كافية. ومع ذلك، يتم توفير المعلومات للاكتمال.

import type { Viewport } from 'next'

export const viewport: Viewport = {
  width: 'device-width',
  initialScale: 1,
  maximumScale: 1,
  userScalable: false,
  // مدعوم أيضًا ولكن أقل استخدامًا
  // interactiveWidget: 'resizes-visual',
}
export const viewport = {
  width: 'device-width',
  initialScale: 1,
  maximumScale: 1,
  userScalable: false,
  // مدعوم أيضًا ولكن أقل استخدامًا
  // interactiveWidget: 'resizes-visual',
}
<head> output
<meta
  name="viewport"
  content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"
/>

colorScheme

تعرف على المزيد حول color-scheme.

import type { Viewport } from 'next'

export const viewport: Viewport = {
  colorScheme: 'dark',
}
export const viewport = {
  colorScheme: 'dark',
}
<head> output
<meta name="color-scheme" content="dark" />

الأنواع

يمكنك إضافة أمان النوع إلى كائن منفذ العرض الخاص بك باستخدام النوع Viewport. إذا كنت تستخدم الإضافة المدمجة لـ TypeScript في بيئة التطوير الخاصة بك، فلن تحتاج إلى إضافة النوع يدويًا، ولكن لا يزال بإمكانك إضافته صراحةً إذا كنت تريد.

كائن viewport

import type { Viewport } from 'next'

export const viewport: Viewport = {
  themeColor: 'black',
}

وظيفة generateViewport

وظيفة عادية

import type { Viewport } from 'next'

export function generateViewport(): Viewport {
  return {
    themeColor: 'black',
  }
}

مع خصائص المقطع

import type { Viewport } from 'next'

type Props = {
  params: Promise<{ id: string }>
  searchParams: Promise<{ [key: string]: string | string[] | undefined }>
}

export function generateViewport({ params, searchParams }: Props): Viewport {
  return {
    themeColor: 'black',
  }
}

export default function Page({ params, searchParams }: Props) {}

مشاريع JavaScript

لمشاريع JavaScript، يمكنك استخدام JSDoc لإضافة أمان النوع.

/** @type {import("next").Viewport} */
export const viewport = {
  themeColor: 'black',
}

سجل الإصدارات

الإصدارالتغييرات
v14.0.0تم تقديم viewport و generateViewport.