///
Search

Script API (전략) (1)

필수 속성

src

외부 스크립트의 URL을 지정하는 경로 문자열 (절대 외부 URL 또는 내부 경로)
인라인 스크립트를 사용하지 않는 한 필수

선택 속성

beforeInteractive

스크립트가 서버에서 보내는 초기 HTML에 삽입 됨
내부 코드(Next.js 모듈)보다 먼저 다운로드
페이지에 하이드레이션이 발생하기 전 배치된 순서대로 실행
스크립트가 실행되더라도 페이지 하이드레이션이 발생하는 것을 차단하지는 않음
(...) Scripts denoted with this strategy are preloaded and fetched before any first-party code, but their execution does not block page hydration from occurring. (...)
JavaScript
복사
[Question] 어떻게 가능한거죠?? (원래 스크립트 파싱이 DOM 생성을 block 하지 않나요?)
beforeInteractive 스크립트는 루트 레이아웃 배치(app/layout.tsx)
전체 사이트에 필요한 스크립트를 로드하도록 설계되어야 함 (즉, 애플리케이션의 페이지가 서버 측에서 로드될 때 스크립트가 로드됨)
beforeInteractive 전략은 페이지와 상호 작용하기 전에 가져와야 하는 중요한 스크립트에만 사용
// app/layout.tsx import Script from 'next/script' export default function RootLayout({ children, }: { children: React.ReactNode }) { return ( <html lang="en"> <body>{children}</body> <Script src="https://example.com/script.js" strategy="beforeInteractive" /> </html> ) }
JavaScript
복사
[TIP] beforeInteractive 사용 시 항상 HTML 문서의 head에 삽입 됨 (컴포넌트 내 위치 무관)
[Example] beforeInteractive 사용 예시
봇 탐지기
쿠키 동의 관리자

afterInteractive

afterInteractive 스크립트는 HTML 클라이언트 측에 삽입
페이지에서 일부(또는 전체) 하이드레이션이 발생한 후 로드
next/script 컴포넌트의 기본 전략
가능한 한 빨리 로드해야 하지만 Next.js 코드 이후에 로드해야 하는 스크립트 대상
afterInteractive모든 페이지 또는 레이아웃 내부에 배치 가능
브라우저에서 해당 페이지(또는 페이지 그룹)가 열릴 때만 로드 및 실행
[Question] page group이 뭘까요? dynamic route?, 여러 컴포넌트?
import Script from 'next/script' export default function Page() { return ( <> <Script src="https://example.com/script.js" strategy="afterInteractive" /> </> ) }
JavaScript
복사
[Example] afterInteractive에 적절한 예
태그 매니저 (Tag managers)
[Appendix] 태그 매니저란?
애널리틱스

lazyOnload

lazyOnload 사용 시 브라우저 유휴 시간 동안 HTML 클라이언트 측에 삽입
페이지의 모든 리소스를 가져온 후에 로드
일찍 로드할 필요가 없는 백그라운드 스크립트나 우선순위가 낮은 스크립트 대상
모든 페이지 또는 레이아웃 내부에 배치 가능
해당 페이지(또는 페이지 그룹)가 브라우저에서 열릴 때만 로드 및 실행
import Script from 'next/script' export default function Page() { return ( <> <Script src="https://example.com/script.js" strategy="lazyOnload" /> </> ) }
JavaScript
복사
[Example] lazyOnload에 적절한 예시
채팅 지원 플러그인
소셜 미디어 위젯

worker

내용 중복으로 상위 문서에 작성