API 참조
Astro
global
섹션 제목: Astro globalAstro
global은 .astro
파일의 모든 컨텍스트에서 사용할 수 있습니다. 다음과 같은 기능이 있습니다:
Astro.glob()
섹션 제목: Astro.glob()Astro.glob()
은 정적 사이트 설정에 많은 로컬 파일을 로드하는 방법입니다.
.glob()
은 하나의 매개변수, 즉 가져오려는 로컬 파일의 상대 URL glob만 사용합니다. 비동기식이며 일치하는 파일에서 내보내기 배열을 반환합니다.
.glob()
은 정적으로 분석할 수 없기 때문에 이를 보간하는 변수나 문자열을 사용할 수 없습니다. (해결 방법은 문제 해결 안내서를 참조하세요.) 이는 Astro.glob()
이 Vite의 import.meta.glob()
의 래퍼이기 때문입니다..
Astro 프로젝트에서 import.meta.glob()
자체를 사용할 수도 있습니다. 다음과 같은 경우에 이 작업을 수행할 수 있습니다.
- API 경로와 같이
.astro
가 아닌 파일에 이 기능이 필요합니다.Astro.glob()
은.astro
파일에서만 사용할 수 있는 반면,import.meta.glob()
은 프로젝트의 어느 곳에서나 사용할 수 있습니다. - 각 파일을 즉시 로드하고 싶지는 않을 때 사용할 수 있습니다.
import.meta.glob()
은 콘텐츠 자체를 반환하는 대신 파일 콘텐츠를 가져오는 함수를 반환할 수 있습니다. 이 가져오기에는 가져온 파일의 모든 스타일과 스크립트가 포함됩니다. 이는 파일이 실제로 사용되는지 여부에 관계없이 번들로 묶여 페이지에 추가됩니다. 이는 런타임 시가 아닌 정적 분석에 의해 결정되기 때문입니다. - 각 파일의 경로에 접근하고 싶을 때 사용할 수 있습니다.
import.meta.glob()
은 파일의 콘텐츠 경로 맵을 반환하는 반면Astro.glob()
은 콘텐츠 목록을 반환합니다. - 여러 패턴을 전달하고 싶을 때 사용할 수 있습니다. 예를 들어 특정 파일을 필터링하는 “부정 패턴”을 추가하려고 합니다.
import.meta.glob()
은 선택적으로 단일 문자열이 아닌 glob 문자열 배열을 취할 수 있습니다.
Vite 문서에서 자세한 내용을 읽어보세요.
Markdown 파일
섹션 제목: Markdown 파일Astro.glob()
으로 로드된 Markdown 파일은 다음과 같은 MarkdownInstance
인터페이스를 반환합니다:
TypeScript 제네릭을 사용하여 frontmatter
변수에 대한 타입을 선택적으로 제공할 수 있습니다.
Astro 파일
섹션 제목: Astro 파일Astro 파일에는 다음과 같은 인터페이스가 있습니다:
기타 파일
섹션 제목: 기타 파일다른 파일에는 다양한 인터페이스가 있을 수 있지만, 인식할 수 없는 파일 타입에 무엇이 포함되어 있는지 정확히 아는 경우 Astro.glob()
은 TypeScript 제네릭을 허용합니다.
Astro.props
섹션 제목: Astro.propsAstro.props
는 컴포넌트 속성으로 전달된 모든 값을 포함하는 객체입니다. .md
및 .mdx
파일의 레이아웃 컴포넌트는 프런트매터 값을 props로 받습니다.
Astro.params
섹션 제목: Astro.paramsAstro.params
는 이 요청과 일치하는 동적 경로 세그먼트의 값을 포함하는 객체입니다.
정적 빌드에서 이 객체는 동적 경로 사전 렌더링에 사용되는 getStaticPaths()
에서 반환하는 params
입니다.
SSR 빌드에서는 동적 경로 패턴의 경로 세그먼트와 일치하는 모든 값이 될 수 있습니다.
함께 보기: params
Astro.request
섹션 제목: Astro.request타입: Request
Astro.request
는 표준 Request 객체입니다. url
, headers
, method
및 요청 본문을 가져오는 데 사용할 수 있습니다.
함께 보기: Astro.url
기본 output: 'static'
옵션을 사용하면 Astro.request.url
에는 ?foo=bar
와 같은 검색 매개변수가 포함되지 않습니다. 정적 빌드 중에 매개변수를 미리 결정할 수 없기 때문입니다. 그러나 output: 'server'
모드에서 Astro.request.url
은 서버 요청에서 확인할 수 있는 검색 매개변수를 포함합니다.
Astro.response
섹션 제목: Astro.response타입: ResponseInit & { readonly headers: Headers }
Astro.response
는 표준 ResponseInit
객체입니다. 다음과 같은 구조를 가지고 있습니다.
status
: 응답의 숫자 상태 코드입니다(예:200
).statusText
: 상태 코드와 관련된 상태 메시지입니다 (예:'OK'
).headers
: 응답의 HTTP 헤더를 설정하는 데 사용할 수 있는Headers
인스턴스입니다.
Astro.response
는 페이지 응답에 대한 status
, statusText
, headers
를 설정하는 데 사용됩니다.
또는 헤더를 설정하려면:
Astro.cookies
섹션 제목: Astro.cookies타입: AstroCookies
astro@1.4.0
Astro.cookies
에는 서버 측 렌더링 모드에서 쿠키를 읽고 조작하기 위한 유틸리티가 포함되어 있습니다.
get
섹션 제목: get타입: (key: string, options?: AstroCookieGetOptions) => AstroCookie | undefined
쿠키를 문자열이 아닌 타입으로 변환하기 위한 value
및 유틸리티 함수가 포함된 AstroCookie
객체로 쿠키를 가져옵니다.
has
섹션 제목: has타입: (key: string, options?: AstroCookieGetOptions) => boolean
이 쿠키가 존재하는지 여부입니다. 쿠키가 Astro.cookies.set()
을 통해 설정된 경우 true를 반환하고, 그렇지 않으면 Astro.request
에서 쿠키를 확인합니다.
set
섹션 제목: set타입: (key: string, value: string | object, options?: AstroCookieSetOptions) => void
쿠키의 key
를 주어진 값으로 설정합니다. 그러면 쿠키 값을 문자열로 변환하려고 시도합니다. 옵션은 maxAge
또는 httpOnly
와 같은 쿠키 기능을 설정하는 방법을 제공합니다.
delete
섹션 제목: delete타입: (key: string, options?: AstroCookieDeleteOptions) => void
만료 날짜를 과거 (Unix 시간에서는 0)로 설정하여 쿠키를 무효화합니다.
쿠키가 “제거되면” (만료되면) Astro.cookies.has()
는 false
를 반환하고 Astro.cookies.get()
은 value
가 undefined
인 AstroCookie
를 반환합니다. 쿠키를 삭제할 때 사용할 수 있는 옵션은 domain
, path
, httpOnly
, sameSite
및 secure
입니다.
merge
섹션 제목: merge타입: (cookies: AstroCookies) => void
새 AstroCookies
인스턴스를 현재 인스턴스에 병합합니다. 새 쿠키가 현재 인스턴스에 추가되고 같은 이름의 쿠키가 존재하면 기존 값을 덮어씁니다.
headers
섹션 제목: headers타입: () => Iterator<string>
응답과 함께 전송될 Set-Cookie
에 대한 헤더 값을 가져옵니다.
AstroCookie
섹션 제목: AstroCookieAstro.cookies.get()
을 통해 쿠키를 가져오면 AstroCookie
타입이 반환됩니다. 다음과 같은 구조를 가지고 있습니다.
value
섹션 제목: value타입: string
쿠키의 원시 문자열 값입니다.
json
섹션 제목: json타입: () => Record<string, any>
JSON.parse()
를 통해 쿠키 값을 구문 분석하여 객체를 반환합니다. 쿠키 값이 유효한 JSON이 아닌 경우 예외가 발생합니다.
number
섹션 제목: number타입: () => number
쿠키 값을 숫자로 구문 분석합니다. 유효한 숫자가 아닌 경우 NaN을 반환합니다.
boolean
섹션 제목: boolean타입: () => boolean
쿠키 값을 true 또는 false로 변환합니다.
AstroCookieGetOptions
섹션 제목: AstroCookieGetOptions
Added in:
astro@4.1.0
쿠키를 얻으면 AstroCookieGetOptions
인터페이스를 통해 옵션을 지정할 수도 있습니다.
decode
섹션 제목: decode타입: (value: string) => string
쿠키가 값으로 역직렬화되는 방식을 사용자 정의할 수 있습니다.
AstroCookieSetOptions
섹션 제목: AstroCookieSetOptions
Added in:
astro@4.1.0
Astro.cookies.set()
을 통해 쿠키를 설정하면 AstroCookieSetOptions
를 전달하여 쿠키 직렬화 방법을 맞춤설정할 수 있습니다.
domain
섹션 제목: domain타입: string
도메인을 지정합니다. 도메인이 설정되지 않은 경우 대부분의 클라이언트는 현재 도메인에 적용되도록 해석합니다.
expires
섹션 제목: expires타입: Date
쿠키가 만료되는 날짜를 지정합니다.
httpOnly
섹션 제목: httpOnly타입: boolean
true인 경우 클라이언트 측에서 쿠키에 액세스할 수 없습니다.
maxAge
섹션 제목: maxAge타입: number
쿠키가 유효한 시간 (초)을 지정합니다.
path
섹션 제목: path타입: string
쿠키가 적용되는 도메인의 하위 경로를 지정합니다.
sameSite
섹션 제목: sameSite타입: boolean | 'lax' | 'none' | 'strict'
SameSite 쿠키 헤더의 값을 지정합니다.
secure
섹션 제목: secure타입: boolean
true인 경우 쿠키는 https 사이트에만 설정됩니다.
encode
섹션 제목: encode타입: (value: string) => string
쿠키가 직렬화되는 방식을 사용자 정의할 수 있습니다.
Astro.redirect()
섹션 제목: Astro.redirect()타입: (path: string, status?: number) => Response
다른 페이지로 리디렉션할 수 있으며, 선택적으로 HTTP 응답 상태 코드를 두 번째 매개변수로 제공할 수 있습니다.
페이지 (하위 컴포넌트는 아님)에 리디렉션이 발생하려면 Astro.redirect()
결과를 return
해야 합니다.
정적으로 생성된 사이트의 경우 <meta http-equiv="refresh">
태그를 사용하여 클라이언트 리디렉션을 생성하며 상태 코드를 지원하지 않습니다.
주문형 렌더링 모드를 사용할 경우 상태 코드가 지원됩니다. Astro는 다른 코드를 지정하지 않는 한 리디렉션된 요청을 기본 HTTP 응답 상태인 302
로 처리합니다.
다음 예시는 사용자를 로그인 페이지로 리디렉션합니다:
Astro.rewrite()
섹션 제목: Astro.rewrite()타입: (rewritePayload: string | URL | Request) => Promise<Response>
astro@4.13.0
브라우저를 새 페이지로 리디렉션하지 않고 다른 URL이나 경로에서 콘텐츠를 제공할 수 있습니다.
이 메서드는 경로 위치에 대한 문자열, URL
또는 Request
중 하나를 허용합니다.
문자열을 사용하여 명시적인 경로를 제공합니다:
리라이트를 위한 URL 경로를 구성해야 하는 경우 URL
타입을 사용합니다. 다음 예시는 상대 "../"
경로에서 새 URL을 생성하여 페이지의 상위 경로를 렌더링합니다:
새 경로에 대해 서버로 전송되는 Request
를 완벽하게 제어하려면 Request
타입을 사용합니다. 다음 예시는 헤더를 제공하면서 상위 페이지를 렌더링하도록 요청을 전송합니다:
Astro.url
섹션 제목: Astro.url타입: URL
astro@1.0.0-rc
현재 Astro.request.url
URL 문자열 값에서 생성된 URL 객체입니다. pathname 및 origin과 같은 요청 URL의 개별 속성과 상호 작용하는 데 유용합니다.
new URL(Astro.request.url)
을 수행하는 것과 동일합니다.
정적 사이트 및 server
또는 hybrid
출력을 사용하는 주문형 렌더링 사이트에서 site가 구성되지 않은 경우 개발 모드에서 Astro.url
은 localhost
가 됩니다.
Astro.url
을 new URL()
에 인수로 전달하여 새 URL을 생성하는 데 사용할 수도 있습니다.
Astro.clientAddress
섹션 제목: Astro.clientAddress타입: string
astro@1.0.0-rc
요청의 IP 주소를 지정합니다. 이 속성은 SSR (서버 측 렌더링)용으로 빌드할 때만 사용할 수 있으며 정적 사이트에는 사용하면 안 됩니다.
Astro.site
섹션 제목: Astro.site타입: URL | undefined
Astro.site
는 Astro 구성의 site
에서 만들어진 URL
을 반환합니다. Astro 구성의 site
가 정의되지 않은 경우 Astro.site
가 정의되지 않습니다.
Astro.generator
섹션 제목: Astro.generator타입: string
astro@1.0.0
Astro.generator
는 <meta name="generator">
태그에 현재 버전의 Astro를 추가하는 편리한 방법입니다. "Astro v1.x.x"
형식을 따릅니다.
Astro.slots
섹션 제목: Astro.slotsAstro.slots
에는 Astro 컴포넌트의 슬롯 하위 항목을 수정하기 위한 유틸리티 함수가 포함되어 있습니다.
Astro.slots.has()
섹션 제목: Astro.slots.has()타입: (slotName: string) => boolean
Astro.slots.has()
를 사용하면 특정 슬롯 이름에 대한 콘텐츠가 존재하는지 확인할 수 있습니다. 이는 슬롯 콘텐츠를 래핑하고 싶지만 슬롯이 사용될 때만 래퍼 요소를 렌더링하려는 경우에 유용할 수 있습니다.
Astro.slots.render()
섹션 제목: Astro.slots.render()타입: (slotName: string, args?: any[]) => Promise<string>
Astro.slots.render()
를 사용하여 슬롯의 내용을 HTML 문자열로 비동기적으로 렌더링할 수 있습니다.
이는 고급 사용 사례를 위한 것입니다! 대부분의 경우 <slot />
요소를 사용하여 슬롯 콘텐츠를 렌더링하는 것이 더 간단합니다.
Astro.slots.render()
는 선택적으로 두 번째 인수, 즉 모든 함수 하위 항목에 전달될 매개변수 배열을 허용합니다. 이는 사용자 정의 유틸리티 컴포넌트에 유용할 수 있습니다.
예를 들어, 이 <Shout />
컴포넌트는 message
prop을 대문자로 변환하고 이를 기본 슬롯에 전달합니다.
<Shout />
의 하위 항목으로 전달된 콜백 함수는 모두 대문자인 message
매개변수를 받습니다:
콜백 함수는 slot
속성이 있는 래핑 HTML 요소 태그 내부의 명명된 슬롯으로 전달할 수 있습니다. 이 요소는 콜백을 명명된 슬롯으로 전송하는 데만 사용되며 페이지에 렌더링되지 않습니다.
래핑 태그에는 표준 HTML 요소를 사용하거나 컴포넌트로 해석되지 않는 소문자 태그 (예: <Fragment />
대신 <fragment>
)를 사용하세요. HTML <slot>
요소는 Astro 슬롯으로 해석되므로 사용하지 마세요.
Astro.self
섹션 제목: Astro.selfAstro.self
를 사용하면 Astro 컴포넌트를 재귀적으로 호출할 수 있습니다. 이 동작을 사용하면 컴포넌트 템플릿의 <Astro.self>
를 사용하여 Astro 컴포넌트 자체에서 Astro 컴포넌트를 렌더링할 수 있습니다. 이는 대규모 데이터 저장소와 중첩된 데이터 구조를 반복하는 데 도움이 될 수 있습니다.
그러면 이 컴포넌트는 다음과 같이 사용될 수 있습니다.
그리고 HTML을 다음과 같이 렌더링합니다.
Astro.locals
섹션 제목: Astro.locals
Added in:
astro@2.4.0
Astro.locals
는 미들웨어의 context.locals
객체의 값을 포함하는 객체입니다. 이를 사용하여 .astro
파일의 미들웨어가 반환한 데이터에 액세스합니다.
Astro.preferredLocale
섹션 제목: Astro.preferredLocale타입: string | undefined
astro@3.5.0
Astro.preferredLocale
은 사용자가 선호하는 언어를 나타내는 계산된 값입니다.
i18n.locales
배열에 구성된 언어와 Accept-Language
헤더를 통해 사용자 브라우저에서 지원하는 언어를 확인하여 계산됩니다. 일치하는 항목이 없으면 이 값은 undefined
입니다.
이 속성은 SSR (서버 측 렌더링)용으로 빌드할 때만 사용할 수 있으며 정적 사이트에는 사용하면 안 됩니다.
Astro.preferredLocaleList
섹션 제목: Astro.preferredLocaleList타입: string[] | undefined
astro@3.5.0
Astro.preferredLocaleList
는 브라우저에서 요청하고 웹사이트에서 지원하는 모든 언어의 배열을 나타냅니다. 그러면 여러분의 사이트와 방문자 간에 호환되는 모든 언어 목록이 생성됩니다.
브라우저에서 요청한 언어가 언어 배열에 없으면 값은 []
입니다. 즉, 방문자가 선호하는 언어을 지원하지 않습니다.
브라우저가 선호하는 언어를 지정하지 않으면 이 값은 i18n.locales
가 됩니다. 지원되는 모든 언어는 선호 사항이 없는 방문자가 동일하게 선호하는 것으로 간주됩니다.
이 속성은 SSR(서버 측 렌더링)용으로 빌드할 때만 사용할 수 있으며 정적 사이트에는 사용하면 안 됩니다.
Astro.currentLocale
섹션 제목: Astro.currentLocale타입: string | undefined
astro@3.5.6
locales
구성에 지정된 구문을 사용하여 현재 URL에서 계산된 언어입니다. URL에 /[locale]/
접두사가 포함되어 있지 않으면 값은 기본적으로 i18n.defaultLocale
이 됩니다.
Astro.getActionResult()
섹션 제목: Astro.getActionResult()타입: (action: TAction) => ActionReturnType<TAction> | undefined
astro@4.15.0
Astro.getActionResult()
는 액션 제출의 결과를 반환하는 함수입니다. 이 함수는 액션 함수를 인수로 받아 (예: actions.logout
) 제출이 수신되면 data
또는 error
객체를 반환합니다. 그렇지 않으면 undefined
를 반환합니다.
Astro.callAction()
섹션 제목: Astro.callAction()
Added in:
astro@4.15.0
Astro.callAction()
은 Astro 컴포넌트에서 액션 핸들러를 직접 호출하는 데 사용되는 함수입니다. 이 함수는 액션 함수를 첫 번째 인수 (예: actions.logout
)로 받고 액션이 수신하는 모든 입력을 두 번째 인수로 받습니다. 이 함수는 액션의 결과를 프로미스로 반환합니다.
엔드포인트 Context
섹션 제목: 엔드포인트 Context엔드포인트 함수는 첫 번째 매개변수로 context 객체를 받습니다. 이는 Astro
global 속성의 많은 부분을 반영합니다.
context.params
섹션 제목: context.paramscontext.params
는 이 요청과 일치하는 동적 경로 세그먼트의 값을 포함하는 객체입니다.
정적 빌드에서 이 객체는 동적 경로 사전 렌더링에 사용되는 getStaticPaths()
에서 반환하는 params
입니다.
SSR 빌드에서는 동적 경로 패턴의 경로 세그먼트와 일치하는 모든 값이 될 수 있습니다.
함께 보기: params
context.props
섹션 제목: context.props
Added in:
astro@1.5.0
context.props
는 getStaticPaths()
에서 전달된 props
를 포함하는 객체입니다. SSR (서버 측 렌더링)용으로 빌드할 때는 getStaticPaths()
가 사용되지 않으므로 context.props
는 정적 빌드에서만 사용할 수 있습니다.
함께 보기: props
를 사용한 데이터 전달
context.request
섹션 제목: context.request타입: Request
표준 Request 객체입니다. url
, headers
, method
및 요청 본문을 가져오는 데 사용할 수 있습니다.
함께 보기: Astro.request
context.cookies
섹션 제목: context.cookies타입: AstroCookies
context.cookies
에는 쿠키를 읽고 조작하는 유틸리티가 포함되어 있습니다.
함께 보기: Astro.cookies
context.url
섹션 제목: context.url타입: URL
astro@1.5.0
현재 context.request.url
URL 문자열 값에서 생성된 URL 객체.
함께 보기: Astro.url
context.clientAddress
섹션 제목: context.clientAddress타입: string
astro@1.5.0
요청의 IP 주소를 지정합니다. 이 속성은 SSR (서버 측 렌더링)용으로 빌드할 때만 사용할 수 있으며 정적 사이트에는 사용하면 안 됩니다.
함께 보기: Astro.clientAddress
context.site
섹션 제목: context.site타입: URL | undefined
astro@1.5.0
context.site
는 Astro 구성의 site
에서 만들어진 URL
을 반환합니다. 정의되지 않은 경우 localhost
에서 생성된 URL이 반환됩니다.
함께 보기: Astro.site
context.generator
섹션 제목: context.generator타입: string
astro@1.5.0
context.generator
는 프로젝트가 실행 중인 Astro 버전을 나타내는 편리한 방법입니다. "Astro v1.x.x"
형식을 따릅니다.
함께 보기: Astro.generator
context.redirect()
섹션 제목: context.redirect()타입: (path: string, status?: number) => Response
astro@1.5.0
context.redirect()
는 다른 페이지로 리디렉션할 수 있는 Response 객체를 반환합니다. 이 기능은 SSR (서버 측 렌더링)용으로 빌드할 때만 사용할 수 있으며 정적 사이트에는 사용하면 안 됩니다.
함께 보기: Astro.redirect()
context.rewrite()
섹션 제목: context.rewrite()타입: (rewritePayload: string | URL | Request) => Promise<Response>
astro@4.13.0
브라우저를 새 페이지로 리디렉션하지 않고 다른 URL이나 경로에서 콘텐츠를 제공할 수 있습니다.
이 메서드는 경로 위치에 대한 문자열, URL
, 또는 Request
중 하나를 허용합니다.
문자열을 사용하여 명시적인 경로를 제공합니다:
리라이트를 위한 URL 경로를 구성해야 하는 경우 URL
타입을 사용합니다. 다음 예시는 상대 "../"
경로에서 새 URL을 생성하여 페이지의 상위 경로를 렌더링합니다:
새 경로에 대해 서버로 전송되는 Request
를 완벽하게 제어하려면 Request
타입을 사용합니다. 다음 예시는 헤더를 제공하면서 상위 페이지를 렌더링하도록 요청을 전송합니다:
함께 보기: Astro.rewrite()
context.locals
섹션 제목: context.locals
Added in:
astro@2.4.0
context.locals
는 요청 수명 주기 동안 임의의 정보를 저장하고 액세스하는 데 사용되는 객체입니다.
미들웨어 함수는 context.locals
값을 읽고 쓸 수 있습니다.
API 엔드포인트는 context.locals
의 정보만 읽을 수 있습니다.
함께 보기: Astro.locals
context.getActionResult()
섹션 제목: context.getActionResult()타입: (action: TAction) => ActionReturnType<TAction> | undefined
astro@4.15.0
context.getActionResult()
는 액션 제출의 결과를 반환하는 함수입니다. 이 함수는 액션 함수를 인수 (예: actions.logout
)로 받고, 제출이 수신되면 data
또는 error
객체를 반환합니다. 그렇지 않으면 undefined
를 반환합니다.
Astro.getActionResult()
도 확인하세요.
context.callAction()
섹션 제목: context.callAction()
Added in:
astro@4.15.0
context.callAction()
은 Astro 컴포넌트에서 액션 핸들러를 직접 호출하는 데 사용되는 함수입니다. 이 함수는 액션 함수를 첫 번째 인수로 받고 (예: actions.logout
), 액션이 수신하는 모든 입력을 두 번째 인수로 받습니다. 이 함수는 액션의 결과를 프로미스로 반환합니다.
Astro.callAction()
도 확인하세요.
getStaticPaths()
섹션 제목: getStaticPaths()타입: (options: GetStaticPathsOptions) => Promise<GetStaticPathsResult> | GetStaticPathsResult
페이지가 파일 이름에 동적 매개변수를 사용하는 경우 해당 컴포넌트는 getStaticPaths()
함수를 내보내야 합니다.
Astro는 정적 사이트 빌더이기 때문에 이 기능이 필요합니다. 이는 전체 사이트가 미리 빌드되었음을 의미합니다. Astro가 빌드 시 페이지를 생성하는 방법을 모른다면 사용자가 사이트를 방문할 때 해당 페이지를 볼 수 없습니다.
getStaticPaths()
함수는 Astro가 어떤 경로를 미리 렌더링할지 결정하기 위해 객체 배열을 반환해야 합니다.
동적 라우팅을 위한 정적 파일 엔드포인트에서도 사용할 수 있습니다.
TypeScript를 사용하는 경우, GetStaticPaths
타입 유틸리티를 사용하여 params
및 props
의 타입 안전 액세스를 보장하세요.
getStaticPaths()
함수는 페이지가 로드되기 전에 격리된 범위에서 한 번 실행됩니다. 따라서 파일 가져오기 외에는 상위 범위에서 어떤 것도 참조할 수 없습니다. 이 요구 사항을 위반하면 컴파일러에서 경고합니다.
params
섹션 제목: params반환된 모든 객체의 params
키는 Astro에게 어떤 경로를 빌드할지 알려줍니다. 반환된 매개변수는 컴포넌트 파일 경로에 정의된 동적 매개변수 및 나머지 매개변수에 다시 매핑되어야 합니다.
params
는 URL로 인코딩되므로 문자열만 값으로 지원됩니다. 각 params
객체의 값은 페이지 이름에 사용된 매개변수와 일치해야 합니다.
예를 들어 src/pages/posts/[id].astro
에 페이지가 있다고 가정합니다. 이 페이지에서 getStaticPaths
를 내보내고 경로에 대해 다음을 반환하는 경우:
그러면 Astro는 빌드 시 posts/1
, posts/2
, posts/3
을 정적으로 생성합니다.
props
를 사용한 데이터 전달
섹션 제목: props를 사용한 데이터 전달생성된 각 페이지에 추가 데이터를 전달하려면 반환된 모든 경로 객체에 props
값을 설정할 수도 있습니다. params
와 달리 props
는 URL로 인코딩되지 않으므로 문자열로만 제한되지 않습니다.
예를 들어, 원격 API에서 가져온 데이터를 기반으로 페이지를 생성한다고 가정해 보겠습니다. getStaticPaths
의 페이지 컴포넌트에 전체 데이터 객체를 전달할 수 있습니다.
알려진 경로 목록을 생성하거나 스텁할 때 도움이 될 수 있는 일반 배열을 전달할 수도 있습니다.
그런 다음 Astro는 pages/posts/[id].astro
의 페이지 컴포넌트를 사용하여 빌드 시 posts/1
, posts/2
를 정적으로 생성합니다. 페이지는 Astro.props
를 사용하여 이 데이터를 참조할 수 있습니다.
paginate()
섹션 제목: paginate()페이지네이션은 Astro가 paginate()
함수를 통해 기본적으로 지원하는 웹사이트의 일반적인 사용 사례입니다. paginate()
는 페이지가 매겨진 컬렉션의 모든 페이지에 대해 하나의 URL을 생성하는 getStaticPaths()
에서 반환할 배열을 자동으로 생성합니다. 페이지 번호는 매개변수로 전달되고, 페이지 데이터는 page
prop으로 전달됩니다.
paginate()
에는 다음 인수가 있습니다:
data
-paginate()
함수로 전달한 페이지의 데이터를 포함하는 배열options
- 다음 속성을 가진 선택적 객체입니다:pageSize
- 페이지당 표시되는 항목 수 (기본값은10
)params
- 동적 경로 생성을 위한 추가 매개변수 보내기props
- 각 페이지에서 사용할 수 있도록 추가 props 보내기
paginate()
는 [page].astro
또는 [...page].astro
라는 파일 이름을 가정합니다. page
매개변수는 URL의 페이지 번호가 됩니다.
/posts/[page].astro
는/posts/1
,/posts/2
,/posts/3
등의 URL을 생성합니다./posts/[...page].astro
는/posts
,/posts/2
,/posts/3
등의 URL을 생성합니다.
페이지네이션의 page
prop
섹션 제목: 페이지네이션의 page prop타입: Page<TData>
페이지네이션은 페이지 컬렉션의 단일 데이터 페이지를 나타내는 모든 렌더링된 페이지에 page
prop을 전달합니다. 여기에는 페이지를 매긴 데이터 (page.data
)와 페이지의 메타데이터 (page.url
, page.start
, page.end
, page.total
등)가 포함됩니다. 이 메타데이터는 “다음 페이지” 버튼이나 “100개 중 1-10개 표시” 메시지 등을 표시하는데 유용합니다.
page.data
섹션 제목: page.data타입: Array<TData>
현재 페이지에 대해 paginate()
함수에서 반환된 데이터 배열입니다.
page.start
섹션 제목: page.start타입: number
현재 페이지의 첫 번째 항목 색인으로 0
부터 시작합니다. (예: pageSize: 25
인 경우 1페이지에서는 0
, 2페이지에서는 25
입니다.)
page.end
섹션 제목: page.end타입: number
현재 페이지의 마지막 항목 색인입니다.
page.size
섹션 제목: page.size타입: number
기본값: 10
페이지당 항목 수입니다.
page.total
섹션 제목: page.total타입: number
모든 페이지의 총 항목 수입니다.
page.currentPage
섹션 제목: page.currentPage타입: number
1
부터 시작하는 현재 페이지 번호입니다.
page.lastPage
섹션 제목: page.lastPage타입: number
총 페이지 수입니다.
page.url.current
섹션 제목: page.url.current타입: string
현재 페이지의 URL을 가져옵니다 (표준 URL에 유용함).
page.url.prev
섹션 제목: page.url.prev타입: string | undefined
이전 페이지의 URL을 가져옵니다 (1페이지인 경우 undefined
). base
에 값이 설정된 경우 기본 경로를 URL 앞에 추가하세요.
page.url.next
섹션 제목: page.url.next타입: string | undefined
다음 페이지의 URL을 가져옵니다 (더 이상 페이지가 없으면 undefined
). base
에 값이 설정된 경우 기본 경로를 URL 앞에 추가하세요.
page.url.first
섹션 제목: page.url.first타입: string | undefined
astro@4.12.0
첫 페이지의 URL을 가져옵니다 (1페이지에 있는 경우 undefined
). base
의 값이 설정된 경우 URL 앞에 기본 경로를 추가하세요.
page.url.last
섹션 제목: page.url.last타입: string | undefined
astro@4.12.0
마지막 페이지의 URL을 가져옵니다 (더이상의 페이지가 존재하지 않는 경우 undefined
). base
의 값이 설정된 경우 URL 앞에 기본 경로를 추가하세요.
import.meta
섹션 제목: import.meta모든 ESM 모듈에는 import.meta
속성이 포함되어 있습니다. Astro는 Vite를 통해 import.meta.env
를 추가합니다.
import.meta.env.SSR
을 사용하면 서버에서 렌더링할 때 알 수 있습니다. 때로는 클라이언트에서만 렌더링되어야 하는 컴포넌트와 같은 다른 로직을 원할 수도 있습니다.
이미지 (astro:assets
)
섹션 제목: 이미지 (astro:assets)getImage()
섹션 제목: getImage()타입: (options: UnresolvedImageTransform) => Promise<GetImageResult>
getImage()
는 서버 전용 API에 의존하며 클라이언트에서 사용될 때 빌드를 중단합니다.
getImage()
함수는 HTML이 아닌 다른 곳 (예: API 경로)에서 사용할 이미지를 생성하기 위한 것입니다. 또한 사용자 정의 <Image />
컴포넌트를 만들 수도 있습니다.
getImage()
는 Image 컴포넌트와 동일한 속성을 가진 옵션 객체를 사용합니다 (alt
제외).
다음 타입을 가진 객체를 반환합니다.
콘텐츠 컬렉션 (astro:content
)
섹션 제목: 콘텐츠 컬렉션 (astro:content)
Added in:
astro@2.0.0
콘텐츠 컬렉션은 src/content/
에서 Markdown 또는 MDX 문서를 구성하고 쿼리하는 API를 제공합니다. 기능 및 사용 예시는 콘텐츠 컬렉션 안내서를 참조하세요.
defineCollection()
섹션 제목: defineCollection()타입: (input: CollectionConfig) => CollectionConfig
defineCollection()
은 src/content/config.*
파일에 컬렉션을 구성하는 유틸리티입니다.
이 함수는 다음 속성을 허용합니다.
type
섹션 제목: type타입: 'content' | 'data'
기본값: 'content'
astro@2.5.0
type
은 컬렉션에 저장된 항목의 형식을 정의하는 문자열입니다.
'content'
- Markdown (.md
), MDX (.mdx
), Markdoc (.mdoc
)와 같은 콘텐츠 작성 형식'data'
- JSON (.json
) 또는 YAML (.yaml
)과 같은 데이터 전용 형식의 경우
즉, 컬렉션은 콘텐츠와 데이터 형식을 혼합하여 저장할 수 없습니다. 이러한 항목을 유형별로 별도의 컬렉션으로 분할해야 합니다.
schema
섹션 제목: schema타입: ZodType | (context: SchemaContext) => ZodType
schema
는 컬렉션에 대한 문서 프런트매터의 타입과 모양을 구성하는 선택적 Zod 객체입니다. 각 값은 Zod 유효성 검사기를 사용해야 합니다.
사용 예시는 콘텐츠 컬렉션
안내서를 참조하세요.
reference()
섹션 제목: reference()타입: (collection: string) => ZodEffects<ZodString, { collection, id: string } | { collection, slug: string }>
astro@2.5.0
reference()
함수는 콘텐츠 구성에서 한 컬렉션에서 다른 컬렉션으로의 관계 또는 “reference”를 정의하는 데 사용됩니다. 이는 컬렉션 이름을 전달받고 콘텐츠 프런트매터 또는 데이터 파일에 지정된 항목 식별자의 유효성을 검사합니다.
이 예시에서는 authors
컬렉션에 대한 블로그 작성자의 참조와 동일한 blog
컬렉션에 대한 관련 게시물 배열을 정의합니다.
사용 예는 콘텐츠 컬렉션
안내서를 참조하세요.
getCollection()
섹션 제목: getCollection()타입: (collection: string, filter?: (entry: CollectionEntry<TCollectionName>) => boolean) => CollectionEntry<TCollectionName>[]
getCollection()
은 컬렉션 이름별로 콘텐츠 컬렉션 항목 목록을 검색하는 함수입니다.
기본적으로 컬렉션의 모든 항목을 반환하고 항목 속성별로 범위를 좁힐 수 있는 선택적 filter
함수를 허용합니다. 이를 통해 data
객체를 통해 id
, slug
또는 프런트매터 값을 기반으로 컬렉션의 일부 항목만 쿼리할 수 있습니다.
사용 예시는 콘텐츠 컬렉션
안내서를 참조하세요.
getEntry()
섹션 제목: getEntry()
Added in:
astro@2.5.0
타입:
(collection: string, contentSlugOrDataId: string) => CollectionEntry<TCollectionName>
({ collection: string, id: string }) => CollectionEntry<TCollectionName>
({ collection: string, slug: string }) => CollectionEntry<TCollectionName>
getEntry()
는 컬렉션 이름과 항목 id
(type: 'data'
컬렉션의 경우) 또는 항목 slug
(type: 'content'
컬렉션의 경우)로 단일 컬렉션 항목을 검색하는 함수입니다. getEntry()
는 data
, body
, render()
속성에 액세스하기 위해 참조된 항목을 가져오는 데에도 사용할 수 있습니다.
컬렉션 항목 쿼리의 예시는 콘텐츠 컬렉션
안내서를 참조하세요.
getEntries()
섹션 제목: getEntries()
Added in:
astro@2.5.0
타입:
(Array<{ collection: string, id: string }>) => CollectionEntry<TCollectionName>[]
(Array<{ collection: string, slug: string }>) => CollectionEntry<TCollectionName>[]
getEntries()
는 동일한 컬렉션에서 여러 컬렉션 항목을 검색하는 함수입니다. 이는 참조된 항목의 배열을 반환하여 관련 data
, body
, render()
속성에 액세스하는 데 유용합니다.
getEntryBySlug()
섹션 제목: getEntryBySlug()타입: (collection: string, slug: string) => Promise<CollectionEntry<TCollectionName>>
콘텐츠 항목을 쿼리하려면 getEntry()
함수를 사용하세요. 이는 getEntryBySlug()
와 동일한 인수를 허용하며 JSON 또는 YAML 컬렉션에 대해 id
를 통한 쿼리를 지원합니다.
getEntryBySlug()
는 컬렉션 이름과 항목 slug
로 단일 컬렉션 항목을 검색하는 함수입니다.
사용 예시는 콘텐츠 컬렉션
안내서를 참조하세요.
getDataEntryById()
섹션 제목: getDataEntryById()타입: (collection: string, id: string) => Promise<CollectionEntry<TCollectionName>>
astro@2.5.0
데이터 항목을 쿼리하려면 getEntry()
함수를 사용합니다. 이 함수는 getDataEntryById()
와 동일한 인수를 전달받으며, Markdown과 같은 콘텐츠 작성 형식의 경우 slug
로 쿼리할 수 있습니다.
getDataEntryById()
는 컬렉션 이름과 항목 id
로 단일 컬렉션 항목을 검색하는 함수입니다.
컬렉션 항목 타입
섹션 제목: 컬렉션 항목 타입getCollection()
, getEntry()
, getEntries()
를 포함한 쿼리 함수는 각각 CollectionEntry
타입의 항목을 반환합니다. 이 타입은 astro:content
에서 유틸리티로 사용할 수 있습니다.
CollectionEntry<TCollectionName>
타입은 다음 값을 갖는 객체입니다. TCollectionName
은 쿼리 중인 컬렉션의 이름입니다 (예: CollectionEntry<'blog'>
).
사용 가능 대상: type: 'content'
및 type: 'data'
컬렉션
타입 예시:
- 콘텐츠 컬렉션:
'entry-1.md' | 'entry-2.md' | ...
- 데이터 컬렉션:
'author-1' | 'author-2' | ...
src/content/[collection]
에 상대적인 파일 경로를 사용하는 고유 ID입니다. 컬렉션 항목 파일 경로를 기반으로 가능한 모든 문자열 값을 열거합니다. type: 'content'
로 정의된 컬렉션은 ID에 파일 확장자를 포함하지만 type: 'data'
로 정의된 컬렉션은 포함하지 않습니다.
collection
섹션 제목: collection사용 가능 대상: type: 'content'
및 type: 'data'
컬렉션
타입 예시: 'blog' | 'authors' | ...
항목이 위치한 src/content/
아래의 최상위 폴더 이름입니다. 이는 스키마 및 쿼리 함수에서 컬렉션을 참조하는 데 사용되는 이름입니다.
data
섹션 제목: data사용 가능 대상: type: 'content'
및 type: 'data'
컬렉션
타입: CollectionSchema<TCollectionName>
컬렉션 스키마에서 추론된 프런트매터 속성의 객체입니다 (defineCollection()
참조를 확인하세요). 스키마가 구성되지 않은 경우 기본값은 any
입니다.
slug
섹션 제목: slug사용 가능 대상: type: 'content'
컬렉션 전용
타입 예시: 'entry-1' | 'entry-2' | ...
Markdown 또는 MDX 문서용 URL 지원 슬러그입니다. 파일 확장자가 없는 id
가 기본값이지만 파일의 프런트매터에서 slug
속성을 설정하여 재정의할 수 있습니다.
body
섹션 제목: body사용 가능 대상: type: 'content'
컬렉션 전용
타입: string
Markdown 또는 MDX 문서의 컴파일되지 않은 원시 본문을 포함하는 문자열입니다.
render()
섹션 제목: render()사용 가능 대상: type: 'content'
컬렉션 전용
타입: () => Promise<RenderedEntry>
렌더링을 위해 지정된 Markdown 또는 MDX 문서를 컴파일하는 기능입니다. 그러면 다음 속성이 반환됩니다.
<Content />
- Astro 파일에서 문서의 내용을 렌더링하는 데 사용되는 컴포넌트입니다.headings
- Markdown 및 MDX 가져오기에 대해 생성된 제목 목록, Astro의getHeadings()
유틸리티 미러링.remarkPluginFrontmatter
- remark 또는 rehype 플러그인이 적용된 후 수정된 frontmatter 객체.any
타입으로 설정합니다.
사용 예시는 콘텐츠 컬렉션
안내서를 참조하세요.
기타 콘텐츠 컬렉션 타입
섹션 제목: 기타 콘텐츠 컬렉션 타입astro:content
모듈은 Astro 프로젝트에서 사용할 수 있도록 다음 타입도 내보냅니다.
CollectionKey
섹션 제목: CollectionKey
Added in:
astro@3.1.0
src/content/config.*
파일에 정의된 모든 컬렉션 이름의 문자열 통합입니다. 이 타입은 모든 컬렉션 이름을 허용하는 일반 함수를 정의할 때 유용할 수 있습니다.
ContentCollectionKey
섹션 제목: ContentCollectionKey
Added in:
astro@3.1.0
src/content/config.*
파일에 정의된 type: 'content'
컬렉션의 모든 이름에 대한 문자열 통합입니다.
DataCollectionKey
섹션 제목: DataCollectionKey
Added in:
astro@3.1.0
src/content/config.*
파일에 정의된 type: 'data'
컬렉션의 모든 이름에 대한 문자열 통합입니다.
SchemaContext
섹션 제목: SchemaContextdefineCollection
이 schema
의 함수 모양을 위해 사용하는 context
객체입니다. 이 타입은 여러 컬렉션에 대해 재사용 가능한 스키마를 구축할 때 유용할 수 있습니다.
여기에는 다음 속성이 포함됩니다.
image
- 콘텐츠 컬렉션에서 로컬 이미지를 사용할 수 있게 해주는image()
스키마 도우미
미들웨어 (astro:middleware
)
섹션 제목: 미들웨어 (astro:middleware)
Added in:
astro@2.6.0
미들웨어를 사용하면 페이지나 엔드포인트가 렌더링될 때마다 요청과 응답을 가로채고 동작을 동적으로 주입할 수 있습니다. 기능 및 사용 예시는 미들웨어 안내서 참조를 확인하세요.
onRequest()
섹션 제목: onRequest()타입: (context: APIContext, next: MiddlewareNext) => Promise<Response> | Response | Promise<void> | void
모든 페이지 또는 API 경로를 렌더링하기 전에 호출되는 src/middleware.js
에서 내보낸 필수 함수입니다. 두 개의 인수 context 및 next()를 전달받습니다. onRequest()
는 Response
를 직접 반환하거나 next()
를 호출하여 반환해야 합니다.
context
섹션 제목: context타입: APIContext
onRequest()
의 첫 번째 인수는 컨텍스트 객체입니다. 이는 많은 Astro
전역 프로퍼티를 반영합니다.
next()
섹션 제목: next()타입: (rewritePayload?: string | URL | Request) => Promise<Response>
onRequest()
의 두 번째 인수는 체인의 모든 후속 미들웨어를 호출하고 Response
를 반환하는 함수입니다. 예를 들어, 다른 미들웨어가 응답의 HTML 본문을 수정할 수 있으며 next()
의 결과를 기다리면 미들웨어가 이러한 변경 사항에 응답할 수 있습니다.
Astro v4.13.0부터 next()
는 새 렌더링 단계를 다시 트리거하지 않고 현재 요청을 리라이트하기 위해 문자열 형식의 선택적 URL 경로 매개 변수인 URL
또는 Request
를 허용합니다.
sequence()
섹션 제목: sequence()타입: (...handlers: MiddlewareHandler[]) => MiddlewareHandler
미들웨어 함수를 인수로 받아들이고 전달된 순서대로 실행하는 함수입니다.
createContext()
섹션 제목: createContext()타입: (context: CreateContext) => APIContext
astro@2.8.0
Astro 미들웨어 onRequest()
함수에 전달될 APIContext
를 생성하는 저수준 API입니다.
이 함수는 Astro 미들웨어를 프로그래밍 방식으로 실행하기 위해 통합/어댑터에서 사용할 수 있습니다.
trySerializeLocals()
섹션 제목: trySerializeLocals()타입: (value: unknown) => string
astro@2.8.0
모든 값을 받아들여 해당 값의 직렬화된 버전 (문자열)을 반환하려고 시도하는 저수준 API입니다. 값을 직렬화할 수 없으면 함수에서 런타임 오류가 발생합니다.
국제화 (astro:i18n
)
섹션 제목: 국제화 (astro:i18n)
Added in:
astro@3.5.0
이 모듈은 프로젝트에 구성된 로케일을 사용하여 URL을 생성하는 데 도움이 되는 함수를 제공합니다.
i18n 라우터를 사용하여 프로젝트에 대한 경로를 생성하는 것은 페이지 경로에 영향을 주는 특정 구성 값에 따라 달라집니다. 이러한 함수를 사용하여 경로를 생성할 때 다음에 대한 개별 설정을 고려해야 합니다.
또한 defaultLocale
에 대해 이러한 함수에서 반환된 URL은 i18n.routing
구성을 반영합니다.
기능 및 사용 예시는 i18n 라우팅 가이드를 참조하세요.
getRelativeLocaleUrl()
섹션 제목: getRelativeLocaleUrl()타입: (locale: string, path?: string, options?: GetLocaleOptions) => string
이 함수를 사용하여 로케일의 상대 경로를 검색합니다. 해당 로케일이 존재하지 않으면 Astro는 오류를 발생시킵니다.
getAbsoluteLocaleUrl()
섹션 제목: getAbsoluteLocaleUrl()타입: (locale: string, path: string, options?: GetLocaleOptions) => string
[site
]의 값이 존재할 때 로케일의 절대 경로를 검색하려면 이 함수를 사용하세요. [site
]가 구성되지 않은 경우 함수는 상대 URL을 반환합니다. 해당 로케일이 존재하지 않으면 Astro는 오류를 발생시킵니다.
getRelativeLocaleUrlList()
섹션 제목: getRelativeLocaleUrlList()타입: (path?: string, options?: GetLocaleOptions) => string[]
모든 로케일에 대한 상대 경로 목록을 반환하려면 getRelativeLocaleUrl
처럼 이 함수를 사용하세요.
getAbsoluteLocaleUrlList()
섹션 제목: getAbsoluteLocaleUrlList()타입: (path?: string, options?: GetLocaleOptions) => string[]
모든 로케일에 대한 절대 경로 목록을 반환하려면 getAbsoluteLocaleUrl
처럼 이 함수를 사용하세요.
getPathByLocale()
섹션 제목: getPathByLocale()타입: (locale: string) => string
사용자 정의 로케일 경로가 구성된 경우 하나 이상의 codes
와 연결된 path
를 반환하는 함수입니다.
getLocaleByPath()
섹션 제목: getLocaleByPath()타입: (path: string) => string
로케일 path
와 연관된 code
를 반환하는 함수입니다.
redirectToDefaultLocale()
섹션 제목: redirectToDefaultLocale()타입: (context: APIContext, statusCode?: ValidRedirectStatus) => Promise<Response>
astro@4.6.0
i18n.routing
이 "manual"
로 설정된 경우에만 사용할 수 있습니다.
구성된 defaultLocale
로 리디렉션되는 Response
를 반환하는 함수입니다. 유효한 리디렉션 상태 코드를 선택적으로 허용합니다.
redirectToFallback()
섹션 제목: redirectToFallback()타입: (context: APIContext, response: Response) => Promise<Response>
astro@4.6.0
i18n.routing
이 "manual"
로 설정된 경우에만 사용할 수 있습니다.
자체 미들웨어에서 i18n.fallback
구성을 사용할 수 있게 해주는 함수입니다.
notFound()
섹션 제목: notFound()타입: (context: APIContext, response?: Response) => Promise<Response> | undefined
astro@4.6.0
i18n.routing
이 "manual"
로 설정된 경우에만 사용할 수 있습니다.
다음과 같은 경우 라우팅 미들웨어에서 이 함수를 사용하여 404를 반환합니다.
- 현재 경로가 루트가 아닌 경우. 예를 들어
/
또는/<base>
- URL에 로케일이 포함되어 있지 않은 경우
Response
가 전달되면 이 함수에서 내보낸 새 Response
에는 원래 응답과 동일한 헤더가 포함됩니다.
middleware()
섹션 제목: middleware()타입: (options: { prefixDefaultLocale: boolean, redirectToDefaultLocale: boolean }) => MiddlewareHandler
astro@4.6.0
i18n.routing
이 "manual"
로 설정된 경우에만 사용할 수 있습니다.
Astro i18n 미들웨어를 프로그래밍 방식으로 생성할 수 있는 함수입니다.
이는 기본 i18n 로직을 계속 사용하고 싶지만 웹 사이트에 몇 가지 예외만 추가하려는 경우에 유용합니다.
requestHasLocale()
섹션 제목: requestHasLocale()타입: (context: APIContext) => boolean
astro@4.6.0
i18n.routing
이 "manual"
로 설정된 경우에만 사용할 수 있습니다.
현재 URL에 구성된 로케일이 포함되어 있는지 확인합니다. 내부적으로 이 함수는 APIContext#url.pathname
을 사용합니다.
View Transitions 클라이언트 API (astro:transitions/client
)
섹션 제목: View Transitions 클라이언트 API (astro:transitions/client)
Added in:
astro@3.2.0
이 모듈은 View Transitions API 및 클라이언트 측 라우터를 제어하고 상호 작용하는 함수를 제공합니다.
기능 및 사용 예시는 View Transitions 가이드를 참조하세요.
navigate()
섹션 제목: navigate()타입: (href: string, options?: Options) => void
astro@3.2.0
View Transitions API를 사용하여 지정된 href
로 탐색을 실행하는 함수입니다.
이 함수 시그니처는 브라우저 Navigation API의 navigate
함수를 기반으로 합니다. 이 함수는 Navigation API를 기반으로 하지만, 페이지를 다시 로드하지 않고 탐색할 수 있도록 History API 위에 구현되어 있습니다.
history
옵션
섹션 제목: history 옵션타입: 'auto' | 'push' | 'replace'
기본값: 'auto'
astro@3.2.0
이 탐색을 브라우저 기록에 추가하는 방법을 정의합니다.
'push'
: 라우터는history.pushState
를 사용하여 브라우저 기록에 새 항목을 생성합니다.'replace'
: 라우터는history.replaceState
를 사용하여 탐색에 새 항목을 추가하지 않고 URL을 업데이트합니다.'auto'
(기본값): 라우터는history.pushState
를 시도하지만, URL을 전환할 수 없는 경우 현재 URL은 브라우저 기록을 변경하지 않고 그대로 유지됩니다.
이 옵션은 브라우저 Navigation API의 history
옵션을 따르지만, Astro 프로젝트에서 발생할 수 있는 경우를 위해 단순화되었습니다.
formData
옵션
섹션 제목: formData 옵션타입: FormData
astro@3.5.0
POST
요청을 위한 FormData
객체입니다.
이 옵션을 제공하면 탐색 대상 페이지에 대한 요청이 양식 데이터 객체를 콘텐츠로 하는 POST
요청으로 전송됩니다.
view transitions가 활성화된 HTML 양식을 제출하면 페이지 새로 고침이 있는 기본 탐색 대신 이 메서드가 사용됩니다. 이 메서드를 호출하면 프로그래밍 방식으로 동일한 동작을 트리거할 수 있습니다.
info
옵션
섹션 제목: info 옵션타입: any
astro@3.6.0
이 탐색으로 인해 발생하는 astro:before-preparation
및 astro:before-swap
이벤트에 포함될 임의의 데이터입니다.
이 옵션은 브라우저 Navigation API의 info
옵션을 모방합니다.
state
옵션
섹션 제목: state 옵션타입: any
astro@3.6.0
이 탐색에서 생성된 NavitationHistoryEntry
객체에 연결할 임의의 데이터입니다. 이 데이터는 History API의 history.getState
함수를 사용하여 검색할 수 있습니다.
이 옵션은 브라우저 Navigation API의 state
옵션을 모방합니다.
sourceElement
옵션
섹션 제목: sourceElement 옵션타입: Element
astro@3.6.0
이 탐색을 트리거한 요소 (있는 경우)입니다. 이 요소는 다음 이벤트에서 사용할 수 있습니다:
astro:before-preparation
astro:before-swap
supportsViewTransitions
섹션 제목: supportsViewTransitions타입: boolean
astro@3.2.0
현재 브라우저에서 view transitions가 지원되고 활성화되어 있는지 여부입니다.
transitionEnabledOnThisPage
섹션 제목: transitionEnabledOnThisPage타입: boolean
astro@3.2.0
현재 페이지에 클라이언트 측 탐색을 위한 view transitions가 활성화되어 있는지 여부입니다. view transitions가 있는 페이지에서 사용할 때 다르게 동작하는 컴포넌트를 만드는 데 사용할 수 있습니다.
getFallback
섹션 제목: getFallback타입: () => 'none' | 'animate' | 'swap'
astro@3.6.0
view transitions를 지원하지 않는 브라우저에서 사용할 대체 전략을 반환합니다.
대체 동작을 선택하고 구성하는 방법은 대체 제어 가이드를 참조하세요.
astro:before-preparation
이벤트
섹션 제목: astro:before-preparation 이벤트View Transitions를 사용하여 탐색을 시작할 때 전송되는 이벤트입니다. 이 이벤트는 요청이 이루어지고 브라우저 상태가 변경되기 전에 발생합니다.
이 이벤트에는 속성이 있습니다:
이 이벤트의 사용 방법에 대한 자세한 내용은 View Transitions 가이드에서 확인하세요.
astro:after-preparation
이벤트
섹션 제목: astro:after-preparation 이벤트View Transitions를 사용하는 탐색에서 다음 페이지가 로드된 후에 전송되는 이벤트입니다.
이 이벤트에는 속성이 없습니다.
이 이벤트의 사용 방법에 대한 자세한 내용은 View Transitions 가이드에서 확인하세요.
astro:before-swap
이벤트
섹션 제목: astro:before-swap 이벤트다음 페이지가 구문 분석되고, 준비되고, 트랜지션을 준비하면서 문서에 링크된 후, 문서 간 콘텐츠가 교환되기 전에 전송되는 이벤트입니다.
이 이벤트는 취소할 수 없습니다. preventDefault()
를 호출하는 것은 아무 작업도 하지 않습니다.
이 이벤트에는 속성이 있습니다:
이 이벤트의 사용 방법에 대한 자세한 내용은 View Transitions 가이드에서 확인하세요.
astro:after-swap
이벤트
섹션 제목: astro:after-swap 이벤트페이지의 콘텐츠가 교체된 후, view transition이 끝나기 전에 전달되는 이벤트입니다.
이 이벤트가 트리거될 때는, 이미 기록 항목과 스크롤 위치가 업데이트된 후입니다.
astro:page-load
이벤트
섹션 제목: astro:page-load 이벤트view transitions을 사용한 탐색이나 브라우저의 기본 기능으로 페이지 로드가 완료된 후 전달되는 이벤트입니다.
페이지에서 view transitions가 활성화되면 일반적으로 DOMContentLoaded
에서 실행되는 코드가 이 이벤트에서 실행되도록 변경되어야 합니다.
View Transitions 이벤트 속성
섹션 제목: View Transitions 이벤트 속성
Added in:
astro@3.6.0
info
섹션 제목: info타입: URL
탐색 중에 정의된 임의의 데이터입니다.
이는 navigate()
함수의 info
옵션에 전달된 리터럴 값입니다.
sourceElement
섹션 제목: sourceElement타입: Element | undefined
탐색을 트리거한 요소입니다. 예를 들어 클릭된 <a>
요소가 될 수 있습니다.
navigate()
함수를 사용할 때, 이는 호출에서 지정된 요소가 됩니다.
newDocument
섹션 제목: newDocument타입: Document
탐색의 다음 페이지에 대한 문서입니다. 이 문서의 내용은 현재 문서의 내용 대신 교체됩니다.
navigationType
섹션 제목: navigationType타입: 'push' | 'replace' | 'traverse'
어떤 종류의 기록 탐색이 일어나고 있나요.
push
: 새 페이지에 대한 새NavigationHistoryEntry
가 만들어지고 있습니다.replace
: 현재NavigationHistoryEntry
가 새 페이지의 항목으로 대체됩니다.traverse
:NavigationHistoryEntry
이 생성되지 않습니다. 히스토리 내 위치가 변경됩니다. 순회 방향은direction
속성에 지정됩니다.
direction
섹션 제목: direction타입: Direction
트랜지션 방향입니다.
forward
: 기록의 다음 페이지 또는 새 페이지로 이동합니다.back
: 기록의 이전 페이지로 이동합니다.- 다른 리스너가 설정했을 수 있는 기타 모든 항목.
from
섹션 제목: from타입: URL
탐색을 시작하는 페이지의 URL입니다.
타입: URL
탐색 중인 페이지의 URL입니다. 이 속성은 수정할 수 있으며, 라이프사이클이 끝날 때의 값이 다음 페이지의 NavigationHistoryEntry
에 사용됩니다.
formData
섹션 제목: formData타입: FormData | undefined
POST
요청을 위한 FormData
객체입니다.
이 속성을 설정하면 일반적인 GET
요청 대신 지정된 양식 데이터 객체를 콘텐츠로 하는 POST
요청이 to
URL로 전송됩니다.
view transitions가 활성화된 HTML 양식을 제출할 때 이 필드는 양식의 데이터로 자동 설정됩니다. navigate()
함수를 사용하는 경우 이 값은 옵션에 지정된 것과 동일합니다.
loader
섹션 제목: loader타입: () => Promise<void>
탐색에서 다음 단계 (다음 페이지 로딩)를 구현합니다. 이 구현을 재정의하여 동작을 추가할 수 있습니다.
viewTransition
섹션 제목: viewTransition타입: ViewTransition
이 탐색에 사용된 view transition 객체입니다. View Transitions API를 지원하지 않는 브라우저에서는 편의를 위해 동일한 API를 구현하지만 DOM 통합이 없는 객체입니다.
swap
섹션 제목: swap타입: () => void
문서 스왑 로직 구현.
나만의 사용자 지정 스왑 함수를 구축하는 방법에 대한 자세한 내용은 View Transitions 가이드를 참조하세요.
기본적으로 이 구현은 다음 함수를 순서대로 호출합니다:
deselectScripts()
섹션 제목: deselectScripts()타입: (newDocument: Document) => void
새 문서에서 실행해서는 안 되는 스크립트를 표시합니다. 이러한 스크립트는 이미 현재 문서에 있으며 data-astro-rerun
을 사용하여 다시 실행하도록 플래그가 지정되지 않습니다.
swapRootAttributes()
섹션 제목: swapRootAttributes()타입: (newDocument: Document) => void
lang
속성과 같은 문서 루트 간 속성을 스왑합니다. 여기에는 data-astro-transition
과 같은 Astro에서 삽입한 내부 속성도 포함되어 있어, 트랜지션 방향을 Astro에서 생성된 CSS 규칙에 사용할 수 있습니다.
사용자 지정 스왑 함수를 만들 때, view transition의 애니메이션이 깨지지 않도록 이 함수를 호출하는 것이 중요합니다.
swapHeadElements()
섹션 제목: swapHeadElements()타입: (newDocument: Document) => void
현재 문서의 <head>
에서 새 문서에 유지되지 않는 모든 요소를 제거합니다. 그런 다음 새 문서의 <head>
에 있는 모든 새 요소를 현재 문서의 <head>
에 추가합니다.
saveFocus()
섹션 제목: saveFocus()타입: () => () => void
현재 페이지에서 초점이 맞춰진 요소를 저장하고 호출 시 초점이 맞춰진 요소가 유지된 경우 해당 요소에 초점을 반환하는 함수를 반환합니다.
swapBodyElements()
섹션 제목: swapBodyElements()타입: (newBody: Element, oldBody: Element) => void
이전 body를 새 body로 교체합니다. 그런 다음 이전 body에서 유지되어야 하는 모든 요소를 검토하고 새 body에서 일치하는 요소를 찾아 이전 요소를 다시 제자리로 바꿉니다.
액션 (astro:actions
)
섹션 제목: 액션 (astro:actions)
Added in:
astro@4.15.0
액션을 사용하면 클라이언트 코드 및 HTML 양식에서 호출할 수 있는 타입 안정성을 갖춘 백엔드를 구축할 수 있습니다. 액션을 정의하고 호출하는 모든 유틸리티는 astro:actions
모듈에 의해 노출됩니다. 예시 및 사용 지침은 액션 가이드를 참조하세요.
defineAction()
섹션 제목: defineAction()
Added in:
astro@4.15.0
defineAction()
유틸리티는 src/actions/index.ts
파일에서 새 액션을 정의하는 데 사용됩니다. 이 함수는 실행할 서버 로직이 포함된 handler()
함수와 런타임에 입력 매개변수를 검사하는 선택적인 input
속성을 받습니다.
handler()
속성
섹션 제목: handler() 속성타입: (input, context) => any
defineAction()
에는 액션이 호출될 때 실행할 서버 로직이 포함된 handler()
함수가 필요합니다. 핸들러에서 반환된 데이터는 자동으로 직렬화되어 호출자에게 전송됩니다.
handler()
는 사용자 입력을 첫 번째 인수로 받아 호출됩니다. input
유효성 검사기가 설정되어 있으면 사용자 입력은 핸들러로 전달되기 전에 유효성이 검사됩니다. 두 번째 인수는 getActionResult()
, callAction()
및 redirect()
를 제외한 대부분의 Astro 표준 엔드포인트 컨텍스트를 포함하는 context
객체입니다.
반환 값은 devalue 라이브러리를 사용하여 구문 분석됩니다. 이 라이브러리는 Date()
, Map()
, Set()
및 URL()
의 인스턴스와 JSON 값을 지원합니다.
input
유효성 검사기
섹션 제목: input 유효성 검사기타입: ZodType | undefined
선택적 input
속성은 런타임에 핸들러 입력의 유효성을 검사하기 위해 Zod 유효성 검사기를 전달받습니다. 액션이 유효성 검사에 실패하면 BAD_REQUEST
오류가 반환되고 handler
가 호출되지 않습니다.
input
을 생략하면 handler
는 JSON 요청의 경우 unknown
타입의 입력을, 양식 요청의 경우 FormData
타입의 입력을 받습니다.
accept: 'form'
과 함께 사용
섹션 제목: accept: 'form'과 함께 사용액션이 양식 입력을 전달받는 경우 z.object()
유효성 검사기를 사용하여 양식 데이터를 타입이 정해진 객체로 자동 구문 분석합니다. 양식 데이터 필드에 지원되는 유효성 검사기는 다음과 같습니다:
number
유형의 입력은z.number()
를 사용하여 검증할 수 있습니다.checkbox
유형의 입력은z.boolean()
을 사용하여 검증할 수 있습니다.file
유형의 입력은z.instanceof(File)
을 사용하여 검증할 수 있습니다.- 동일한
name
의 여러 입력은z.array(/* validator */)
를 사용하여 검증할 수 있습니다. - 다른 모든 입력은
z.string()
을 사용하여 검증할 수 있습니다.
.refine()
, .transform()
, .pipe()
를 포함한 확장 함수도 z.object()
유효성 검사기에서 지원됩니다.
서로 다른 유효성 검사기의 조합을 적용하려면 z.discriminatedUnion()
래퍼를 사용하여 특정 양식 필드를 기준으로 타입을 좁히세요. 이 예시는 사용자 “생성” 또는 “업데이트” 중 하나로 양식 제출을 처리하며, type
이라는 이름의 양식 필드를 사용하여 어떤 객체에 대해 유효성 검사를 수행할지 결정합니다.
isInputError()
섹션 제목: isInputError()타입: (error?: unknown | ActionError) => boolean
astro@4.15.0
isInputError()
유틸리티는 ActionError
가 입력 유효성 검사 오류인지 확인하는 데 사용됩니다. input
유효성 검사기가 z.object()
인 경우 입력 오류에는 이름별로 그룹화된 오류 메시지가 있는 fields
객체가 포함됩니다.
isInputError()
사용에 대한 자세한 내용을 참조하세요.
ActionError
섹션 제목: ActionError
Added in:
astro@4.15.0
액션 handler
가 던지는 오류를 생성하는 데 ActionError()
생성자가 사용됩니다. 이는 발생한 오류 (예: "UNAUTHORIZED"
)를 설명하는 code
속성과 추가 세부정보가 포함된 선택적 message
속성을 허용합니다.
code
섹션 제목: code
Added in:
astro@4.15.0
code
속성은 모든 HTTP 상태 코드의 사람이 읽을 수 있는 버전을 허용합니다. 지원되는 코드는 다음과 같습니다:
BAD_REQUEST
(400): 클라이언트가 잘못된 입력을 보냈습니다. 이 오류는 액션input
유효성 검사기가 유효성 검사에 실패할 때 발생합니다.UNAUTHORIZED
(401): 클라이언트에 유효한 인증 자격 증명이 없습니다.FORBIDDEN
(403): 클라이언트가 리소스에 액세스할 수 있는 권한이 없습니다.NOT_FOUND
(404): 서버가 요청된 리소스를 찾을 수 없습니다.METHOD_NOT_SUPPORTED
(405): 서버가 요청된 메서드를 지원하지 않습니다.TIMEOUT
(408): 서버가 요청을 처리하는 동안 시간 초과가 발생했습니다.CONFLICT
(409): 충돌로 인해 서버에서 리소스를 업데이트할 수 없습니다.PRECONDITION_FAILED
(412): 서버가 요청의 전제 조건을 충족하지 않습니다.PAYLOAD_TOO_LARGE
(413): 페이로드가 너무 커서 서버가 요청을 처리할 수 없습니다.UNSUPPORTED_MEDIA_TYPE
(415): 서버가 요청의 미디어 유형을 지원하지 않습니다. 참고: 액션은 이미 JSON 및 양식 요청에 대해Content-Type
헤더를 확인하므로 이 코드를 수동으로 사용할 필요가 없을 것입니다.UNPROCESSABLE_CONTENT
(422): 시멘틱 오류로 인해 서버가 요청을 처리할 수 없습니다.TOO_MANY_REQUESTS
(429): 서버가 지정된 속도 제한을 초과했습니다.CLIENT_CLOSED_REQUEST
(499): 서버가 응답하기 전에 클라이언트가 요청을 종료했습니다.INTERNAL_SERVER_ERROR
(500): 서버가 예기치 않게 실패했습니다.NOT_IMPLEMENTED
(501): 서버가 요청된 기능을 지원하지 않습니다.BAD_GATEWAY
(502): 서버가 업스트림 서버로부터 잘못된 응답을 받았습니다.SERVICE_UNAVAILABLE
(503): 서버를 일시적으로 사용할 수 없습니다.GATEWAY_TIMEOUT
(504): 서버가 업스트림 서버로부터 시간 초과를 받았습니다.
message
섹션 제목: message
Added in:
astro@4.15.0
message
속성은 문자열을 받습니다. (예: “사용자는 로그인해야 합니다.“)
내장 컴포넌트
섹션 제목: 내장 컴포넌트Astro에는 프로젝트에 사용할 수 있는 여러 내장 컴포넌트가 포함되어 있습니다. 모든 내장 컴포넌트는 import {} from 'astro:components';
를 통해 .astro
파일에서 사용할 수 있습니다.
ComponentProp
타입 유틸리티를 사용하여 이 컴포넌트의 Props
를 참조할 수 있습니다.
<Code />
섹션 제목: <Code />이 컴포넌트는 빌드 시 코드 블록에 구문 강조 표시를 제공합니다 (클라이언트 측 JavaScript는 포함되지 않음). 이 컴포넌트는 Shiki에 의해 내부적으로 구동되며 모든 인기 있는 테마 및 언어를 지원합니다. 또한 사용자 정의 테마, 언어, transformers 및 기본 색상을 각각 theme
, lang
, transformers
, defaultColor
속성에 전달하여 추가할 수 있습니다.
이 컴포넌트는 Shiki 구성에서 설정을 상속하지 않습니다. 반드시 컴포넌트 props를 사용하여 설정해야 합니다.
Transformers
섹션 제목: Transformers
Added in:
astro@4.11.0
Shiki transformers는 transformers
속성에 배열로 전달하여 선택적으로 코드에 적용할 수 있습니다. Astro v4.14.0부터는 Shiki의 meta
속성에 문자열을 제공하여 트랜스포머에 옵션을 전달할 수도 있습니다.
transformers
는 단지 클래스만 적용하며 코드 블록의 요소를 대상으로 지정하려면 자체 CSS 규칙을 제공해야 합니다.
<Fragment />
섹션 제목: <Fragment />추가 래핑 요소 없이 HTML 콘텐츠를 렌더링하기 위해 set:*
지시어와 함께 사용되는 컴포넌트:
Astro 구문의 프래그먼트 사용에 대해 자세히 알아보세요.
<Prism />
섹션 제목: <Prism />Prism
구문 강조 컴포넌트를 사용하려면 먼저 @astrojs/prism
패키지를 설치하세요.
이 컴포넌트는 Prism의 CSS 클래스를 적용하여 코드 블록에 대한 언어별 구문 강조를 제공합니다. 구문 강조를 표시하려면 Prism CSS 스타일시트를 제공 (또는 자신만의 스타일시트)해야합니다! 자세한 내용은 Prism 구성 섹션을 참조하세요.
언어에 해당하는 별칭을 찾을 수 있도록 Prism이 지원하는 언어 목록을 참조하세요. 그리고 lang="astro"
를 사용하여 Astro 코드 블록을 표시할 수도 있습니다!
<Image />
섹션 제목: <Image />- src (필수)
- alt (필수)
- width 및 height (
public/
및 원격 이미지를 사용하는 경우 필수) - format
- quality
- densities
- widths
위 속성 외에도 <Image />
컴포넌트는 HTML <img>
태그에서 허용하는 모든 속성을 허용합니다.
이미지 안내서에서 자세한 내용을 확인하세요.
<Picture />
섹션 제목: <Picture />
Added in:
astro@3.3.0
다양한 형식 및/또는 크기로 반응형 이미지를 표시하려면 내장된 <Picture />
Astro 컴포넌트를 사용하세요.
이미지 안내서에서 자세한 내용을 확인하세요.
<Picture />
는 <Image />
컴포넌트의 모든 속성과 함께 다음을 허용합니다.
formats
섹션 제목: formats<source>
태그에 사용할 이미지 형식의 배열입니다. 기본적으로 ['webp']
로 설정되어 있습니다.
fallbackFormat
섹션 제목: fallbackFormat<img>
태그에 대한 대체 값으로 사용할 형식입니다. 정적 이미지의 경우 기본값은 .png
, 애니메이션 이미지의 경우 .gif
, SVG 파일의 경우 .svg
입니다.
pictureAttributes
섹션 제목: pictureAttributes<picture>
태그에 추가될 속성의 객체입니다. 이 속성을 사용하여 외부 <picture>
요소 자체에 속성을 적용합니다. <Picture />
컴포넌트에 직접 적용된 속성은 이미지 변환에 사용되는 속성을 제외하고 내부 <img>
요소에 적용됩니다.
<Content />
섹션 제목: <Content />콘텐츠 컬렉션 항목의 콘텐츠를 렌더링하는 데 사용되는 일반 컴포넌트입니다.
먼저 getCollection()
또는 getEntry()
를 사용하여 하나 이상의 항목을 쿼리합니다. 그런 다음 entry.render()
함수는 .astro
파일 템플릿에 사용할 <Content />
컴포넌트를 반환할 수 있습니다.
<ViewTransitions />
섹션 제목: <ViewTransitions />
Added in:
astro@2.9.0
원하는 모든 페이지의 <head>
에 <ViewTransitions />
라우팅 컴포넌트를 가져오고 추가하여 개별 페이지에서 view transitions를 사용하도록 선택합니다.
페이지 요소 및 컴포넌트에 라우터 제어 및 전환 지시어 추가 방법에 대해 자세히 알아보세요.
<Debug />
섹션 제목: <Debug />이 컴포넌트는 JavaScript 없이 클라이언트 측에서 값을 검사하는 방법을 제공합니다.
Reference