Script Optimization

Application Scripts

Tüm rotalar için üçüncü taraf bir komut dosyası yüklemek için next/script adresini içe aktarın ve komut dosyasını doğrudan özel _app adresinize ekleyin:

pages/_app.js
import Script from 'next/script'
 
export default function MyApp({ Component, pageProps }) {
  return (
    <>
      <Component {...pageProps} />
      <Script src="https://example.com/script.js" />
    </>
  )
}

Bu komut dosyası, uygulamanızdaki herhangi bir rotaya erişildiğinde yüklenir ve yürütülür. Next.js, kullanıcı birden fazla sayfa arasında gezinse bile betiğin yalnızca bir kez yüklenmesini sağlayacaktır.

Öneri: Performans üzerindeki gereksiz etkiyi en aza indirmek için üçüncü taraf komut dosyalarını yalnızca belirli sayfalara veya düzenlere eklemenizi öneririz.

Strategy

next/script 'un varsayılan davranışı herhangi bir sayfa veya mizanpajda üçüncü taraf komut dosyalarını yüklemenize izin verse de, strategy özelliğini kullanarak yükleme davranışında ince ayar yapabilirsiniz:

Bakınız next/script Her bir strateji ve kullanım durumları hakkında daha fazla bilgi edinmek için API referans belgelerini inceleyin.

Offloading Scripts To A Web Worker (Experimental)

Uyarı: worker stratejisi henüz kararlı değildir ve henüz app dizin. Dikkatli kullanın.

worker stratejisini kullanan komut dosyaları boşaltılır ve Partytown ile bir web çalışanı içinde yürütülür. Bu, ana iş parçacığını uygulama kodunuzun geri kalanına ayırarak sitenizin performansını artırabilir.

Bu strateji hala deneyseldir ve yalnızca nextScriptWorkers bayrağı next.config.js adresinde etkinleştirilmişse kullanılabilir:

next.config.js
module.exports = {
  experimental: {
    nextScriptWorkers: true,
  },
}

Ardından, next (normalde npm run dev veya yarn dev) adresini çalıştırın ve Next.js kurulumu tamamlamak için gerekli paketlerin kurulumunda size rehberlik edecektir:

Terminal
npm run dev

Bunun gibi talimatlar göreceksiniz: Lütfen Partytown'ı şu komutu çalıştırarak yükleyin npm install @builder.io/partytown

Kurulum tamamlandıktan sonra, strategy="worker" adresinin tanımlanması Partytown'ı uygulamanızda otomatik olarak başlatacak ve komut dosyasını bir web çalışanına yükleyecektir.

pages/home.tsx
import Script from 'next/script'
 
export default function Home() {
  return (
    <>
      <Script src="https://example.com/script.js" strategy="worker" />
    </>
  )
}

Bir web çalışanına üçüncü taraf bir komut dosyası yüklerken dikkate alınması gereken bir dizi ödünleşme vardır. Daha fazla bilgi için lütfen Partytown'ın ödünleşim belgesine bakın.

Inline Scripts

Satır içi komut dosyaları veya harici bir dosyadan yüklenmeyen komut dosyaları da Komut Dosyası bileşeni tarafından desteklenir. JavaScript'i küme parantezleri içine yerleştirerek yazılabilirler:

<Script id="show-banner">
  {`document.getElementById('banner').classList.remove('hidden')`}
</Script>

Ya da dangerouslySetInnerHTML özelliğini kullanarak:

<Script
  id="show-banner"
  dangerouslySetInnerHTML={{
    __html: `document.getElementById('banner').classList.remove('hidden')`,
  }}
/>

Uyarı: Next.js'nin komut dosyasını izlemesi ve optimize etmesi için satır içi komut dosyaları için bir id özelliği atanmalıdır.

Executing Additional Code

Olay işleyicileri, belirli bir olay gerçekleştikten sonra ek kod çalıştırmak için Script bileşeniyle birlikte kullanılabilir:

Bu işleyiciler yalnızca next/script içe aktarıldığında ve "use client" adresinin ilk kod satırı olarak tanımlandığı bir İstemci Bileşeni içinde kullanıldığında çalışacaktır:

pages/index.tsx
import Script from 'next/script'
 
export default function Page() {
  return (
    <>
      <Script
        src="https://example.com/script.js"
        onLoad={() => {
          console.log('Script has loaded')
        }}
      />
    </>
  )
}

Bakınız next/script Her bir olay işleyici hakkında daha fazla bilgi edinmek ve örnekleri görüntülemek için API referansı.

Additional Attributes

Bir <script> öğesine atanabilen ve Script bileşeni tarafından kullanılmayan birçok DOM özniteliği vardır, örneğin nonce veya özel veri nitelikleri. Herhangi bir ek niteliğin eklenmesi, otomatik olarak HTML'ye dahil edilen son, optimize edilmiş <script> öğesine iletecektir.

pages/index.tsx
import Script from 'next/script'
 
export default function Page() {
  return (
    <>
      <Script
        src="https://example.com/script.js"
        id="example-script"
        nonce="XUENAJFW"
        data-test="script"
      />
    </>
  )
}