Astro 구문
HTML을 안다면 첫 번째 Astro 컴포넌트를 작성할 준비가 된 것입니다.
Astro 컴포넌트 구문은 HTML의 상위 집합입니다. HTML이나 JSX를 작성해 본 경험이 있다면 이 구문이 친숙하게 느껴질 것입니다. 구문은 컴포넌트 및 JavaScript 표현식을 포함하는 것을 지원합니다.
JSX와 유사한 표현식
섹션 제목: JSX와 유사한 표현식Astro 컴포넌트의 두 코드 펜스(---
) 사이에 있는 프론트매터 컴포넌트 스크립트 내부에서 로컬 JavaScript 변수를 정의할 수 있습니다. 그런 다음 JSX와 유사한 표현식을 사용하여 해당 변수를 컴포넌트의 HTML 템플릿에 삽입할 수 있습니다!
이 방법을 사용하면 프론트매터에서 계산된 동적 값을 포함할 수 있습니다. 그러나 이 값은 일단 포함된 후에는 반응하지 않으며 절대 변경되지 않습니다. Astro 컴포넌트는 렌더링 단계에서 한 번만 실행되는 템플릿입니다.
Astro와 JSX의 차이점에 대한 자세한 예는 하단을 참고하세요.
중괄호 구문을 사용하여 HTML에 로컬 변수를 추가할 수 있습니다.
동적 속성
섹션 제목: 동적 속성중괄호 안에 로컬 변수를 사용하여 HTML 요소와 컴포넌트 모두에 속성 값을 전달할 수 있습니다.
HTML 속성은 문자열로 변환되므로 함수나 객체는 HTML 요소로 전달할 수 없습니다. 예를 들어 이벤트 핸들러는 Astro 컴포넌트의 HTML 요소에 할당할 수 없습니다.
대신 순수 JavaScript처럼 클라이언트 측 스크립트를 사용하여 이벤트 핸들러를 추가하세요.
동적 HTML
섹션 제목: 동적 HTMLJSX와 유사한 함수에서 로컬 변수를 사용하여 동적으로 생성된 HTML 요소를 생성할 수 있습니다.
Astro는 JSX 논리 연산자와 삼항 연산자를 사용하여 조건부로 HTML을 표시할 수 있습니다.
동적 태그
섹션 제목: 동적 태그변수에 HTML 태그 이름을 할당하거나 컴포넌트 가져오기 재할당을 통해 동적 태그를 사용할 수도 있습니다:
동적 태그를 사용할 때 다음 사항을 주의하세요.
-
변수 이름은 대문자로 시작해야 합니다. 예를 들어
element
대신Element
를 사용하세요. 그렇지 않으면 Astro는 변수 이름을 리터럴 HTML 태그로 렌더링하는 것을 시도합니다. -
수화 지시어는 지원되지 않습니다.
client:*
수화 지시어를 사용하면 Astro는 프로덕션을 위해 번들링할 컴포넌트를 알아야 하지만 동적 태그 패턴이 이를 알 수 없게 만듭니다. -
define:vars 지시어는 지원되지 않습니다. 만약 자식 요소를 감싸는 요소 (
<div>
등)를 추가할 수 없다면, 요소에style={`--myVar:${value}`}
를 수동으로 추가할 수 있습니다.
프래그먼트
섹션 제목: 프래그먼트Astro는 <> </>
표기법을 지원하며 기본적으로 <Fragment />
컴포넌트도 제공합니다. 이 컴포넌트는 HTML 문자열을 삽입하기 위해 set:*
지시어를 추가할 때 래퍼 요소를 피하는 데 유용할 수 있습니다.
다음은 <Fragment />
컴포넌트를 사용하여 단락 텍스트를 렌더링하는 예시입니다:
Astro와 JSX의 차이점
섹션 제목: Astro와 JSX의 차이점Astro 컴포넌트 구문은 HTML의 상위 집합입니다. HTML이나 JSX 경험이 있는 사람이라면 누구나 친숙하게 느낄 수 있도록 설계되었지만, .astro
파일과 JSX에는 몇 가지 주요 차이점이 있습니다.
Astro에서는 모든 HTML 속성에 JSX에서 사용되는 camelCase
대신 표준 kebab-case
형식을 사용합니다. 이는 React에서 지원하지 않는 class
에도 적용됩니다.
여러 요소
섹션 제목: 여러 요소JavaScript나 JSX에서는 모든 것을 하나의 <div>
또는 <>
로 감싸야 했습니다. 하지만 Astro 컴포넌트 템플릿에서는 그럴 필요가 없습니다.
Astro에서는 표준 HTML 주석이나 JavaScript 스타일 주석을 사용할 수 있습니다.
HTML 스타일 주석은 브라우저 DOM에 포함되지만 JS 스타일 주석은 포함되지 않습니다. TODO 메시지나 기타 개발 전용 설명을 남기려면 HTML 주석 대신 JavaScript 주석을 사용할 수 있습니다.