6P by xguru 3달전 | favorite | 댓글 3개
  • 이번 마이너 릴리스에는 내부 개선 사항과 유용한 새로운 기능이 포함, 호환성을 깨는 변경 사항은 없음

Reactivity 시스템 최적화

  • Vue의 반응형 시스템이 대규모로 리팩터링되어 성능 향상 및 메모리 사용량(-56%) 개선을 이루었으며 동작 변경 사항은 없음
  • 리팩터링으로 SSR 중 계산값 및 메모리 문제 해결
  • 3.5에서는 크고 깊이 있는 반응형 배열에 대한 반응성 추적을 최적화하여 일부 경우 최대 10배 더 빨라짐

Reactive Props Destructure

  • 반응형 Props 구조 분해가 3.5에서 안정화되었으며 기본적으로 활성화됨
  • <script setup>에서 defineProps 호출에서 구조 분해된 변수는 이제 반응형임
  • 이 기능은 JavaScript의 기본 기본값 구문을 활용하여 기본값이 있는 props를 선언하는 것을 크게 단순화함

SSR 개선 사항

Lazy Hydration

  • 비동기 컴포넌트는 이제 defineAsyncComponent() API의 hydrate 옵션을 통해 전략을 지정하여 하이드레이션 시점을 제어할 수 있음

useId()

  • useId()는 서버와 클라이언트 렌더링에서 안정적으로 보장되는 애플리케이션당 고유 ID를 생성하는 데 사용할 수 있는 API
  • 폼 요소 및 접근성 속성에 대한 ID를 생성하는 데 사용할 수 있으며 하이드레이션 불일치 없이 SSR 애플리케이션에서 사용할 수 있음

data-allow-mismatch

  • 클라이언트 값이 서버 값과 다를 수밖에 없는 경우(예: 날짜) data-allow-mismatch 속성으로 하이드레이션 불일치 경고를 억제할 수 있음
  • 속성에 값을 제공하여 허용되는 불일치 유형을 제한할 수도 있음(text, children, class, style, attribute)

커스텀 엘리먼트 개선 사항

  • 3.5는 defineCustomElement() API와 관련된 많은 장기적인 문제를 수정하고 Vue로 커스텀 엘리먼트를 작성하기 위한 여러 새로운 기능을 추가함
  • configureApp 옵션을 통해 커스텀 엘리먼트에 대한 앱 구성을 지원
  • useHost(), useShadowRoot()this.$host API를 추가하여 커스텀 엘리먼트의 호스트 엘리먼트 및 shadow root에 액세스
  • shadowRoot: false를 전달하여 Shadow DOM 없이 커스텀 엘리먼트를 마운트하는 것을 지원
  • nonce 옵션 제공을 지원하며, 이는 커스텀 엘리먼트에 의해 주입된 <style> 태그에 첨부됨

기타 주목할 만한 기능

useTemplateRef()

  • 3.5는 useTemplateRef() API를 통해 템플릿 참조를 얻는 새로운 방법을 도입
  • 3.5 이전에는 변수 이름을 정적 ref 속성과 일치시키는 일반 참조를 사용하는 것이 권장되었음
  • 이전 접근 방식은 ref 속성을 컴파일러에서 분석할 수 있어야 했기 때문에 정적 ref 속성으로 제한되었음
  • 이에 비해 useTemplateRef()는 런타임 문자열 ID를 통해 참조를 일치시키므로 변경되는 ID에 대한 동적 참조 바인딩을 지원함

지연 Teleport

  • 내장 <Teleport> 컴포넌트의 알려진 제약 조건은 teleport 컴포넌트가 마운트될 때 대상 요소가 존재해야 한다는 것
  • 이로 인해 사용자가 Vue에 의해 렌더링된 다른 요소로 콘텐츠를 teleport하는 것이 방지되었음
  • 3.5에서는 현재 렌더링 주기 이후에 마운트되는 <Teleport>에 대한 defer prop을 도입했으므로 이제 이것이 작동함

onWatcherCleanup()

  • 3.5는 감시자(watcher)에서 정리 콜백을 등록하기 위한 전역으로 가져온 API인 onWatcherCleanup()을 도입함

이번 버전 이름은 "천원돌파 그렌라간" 이군요. (명작이죠! 제가 본 가이낙스 꺼는 이게 마지막인듯)

Vue 는 전통적?으로 만화 제목을 가져다 썼습니다. 1.0은 에반게리온, 2.0은 공각 기동대, 3.0은 원피스, 3.3은 바람의 검심, 3.4는 슬램덩크
https://en.wikipedia.org/wiki/Vue.js#Versions

고질적이었던 Vue와 Vite 콤비네이션의 SSR 대환장 환경이 점차 개선해 나가고 있으니 기대가 됩니다. Quasar 프레임워를 다시금 꺼내게 만드는군요.

이번 릴리스는 실제 컴포넌트 개발할때 편의성이 엄청 올라가긴 했네요