방탄 웹 구성 요소 API
웹 구성 요소/사용자 정의 요소는 UX를 더욱 효율적이고 확장 가능하게 만드는 몇 가지 뛰어난 기능을 제공하지만 팀이 구성 요소에 대해 좋은 경험을 하지 못하게 할 수 있는 몇 가지 "문제"가 있습니다.
문제
맞춤 요소/웹 구성 요소의 가장 큰 장점 중 하나는 때때로 어려울 수 있습니다. 어디서나 사용할 수 있습니다. 프레임워크에서 사용되는지, 유형이 안전한 환경에서 사용되는지, PHP와 같은 언어로 서버에서 렌더링되는지, JavaScript의 creatElement 함수를 사용하여 프로그래밍 방식으로 생성되는지, 심지어 일반 HTML에서 사용되는지 알 수 없습니다.
문제는 웹 구성 요소 API가 올바르게 구현되었는지 확인할 수 있는 일관된 방법이 없다는 것입니다. 이 때문에 당사 컴포넌트 라이브러리의 PR 체크리스트 항목 중 하나는 다음과 같습니다.
✅ 속성과 속성은 설정, 해제, 잘못 설정된 경우에도 작동합니다.
예를 들어, 우리 라이브러리에는 기본 요소에는 일부 지정된 값이 있는 유형 속성이 있습니다. 라디오 및 체크박스와 같은 일부 다른 컨트롤에 대한 특정 구성 요소가 있기 때문에 동일한 옵션이 모두 동일하지는 않습니다.
/** A string specifying the type of control to render. */ @property() type: | 'color' | 'date' | 'email' | 'number' | 'password' | 'search' | 'tel' | 'text' = 'text';
참고: 코드 예시에서는 Lit를 사용하고 있지만 여기서 논의한 원칙은 다른 라이브러리 및 프레임워크에도 적용될 수 있습니다.
이 속성을 테스트할 때 일관되지 않은 결과가 나타납니다.
- 설정
- 모든 것이 예상대로 작동합니다.
<my-input type="color"></my-input> <my-input type="date"></my-input> <my-input type="email"></my-input> <my-input type="number"></my-input> <my-input type="password"></my-input> <my-input type="search"></my-input> <my-input type="tel"></my-input> <my-input type="text"></my-input>
- 설정되지 않음
- 기본값으로 인해 속성이 설정되지 않은 경우에도 구성요소가 제대로 작동합니다
- 내부 HTML 요소는 탄력적이지만 구성 요소의 사용자 정의 논리 및 유효성 검사가 중단되므로 속성이 정의되지 않은 경우 구성 요소가 올바르게 렌더링됩니다.
// When the attribute is not set <my-input></my-input> // When the property is `undefined` (example using JSX) <my-input type={undefined}></my-input>
- 설정이 잘못됨
- type 속성 값을 "rubbish"로 설정하면 텍스트 입력이 렌더링되지만 맞춤 논리와 유효성 검사도 중단됩니다.
- 유효한 HTML 입력 유형이지만 구성 요소에 대해 지정한 값이 아닌 값으로 설정하면 사용자 정의 논리 및 유효성 검사뿐 아니라 스타일/디자인도 깨뜨리는 구성 요소용 컨트롤이 아닌 컨트롤이 렌더링됩니다. .
<!-- not a real type --> <my-input type="rubbish"></my-input> <!-- we don't want users using this type --> <my-input type="range"></my-input>
여기에서 이 예를 테스트할 수 있습니다.
어떻게 해결하나요?
네이티브 HTML 요소가 "설정, 설정 해제 및 잘못 설정" 테스트를 통과한 것 같으니 이를 통해 학습할 수 있는지 살펴보겠습니다.
네이티브 입력의 속성을 잘못 설정하고 속성 값을 기록해 보니 왜 작동하는지 알 수 있었습니다.
<!-- set the value to a non-standard type --> <input type="rubbish" /> <input> <p>If an invalid value is assigned to the attribute or property, it falls back to a default value. We should be able to do the same and still maintain strong typing.</p> <p>Let's start by creating a list of valid values and a type for our property.<br> </p> <pre class="brush:php;toolbar:false">const inputTypes = [ 'color', 'date', 'email', 'number', 'password', 'search', 'tel', 'text', ] as const;
배열을 사용하여 TypeScript 유효성 검사를 위한 공용체 유형을 생성할 수 있습니다.
/** A string specifying the type of control to render. */ @property() type: | 'color' | 'date' | 'email' | 'number' | 'password' | 'search' | 'tel' | 'text' = 'text';
이제 일부 유효성 검사 논리를 사용하여 맞춤 요소 속성을 업데이트할 수 있습니다. 기존 속성을 표준 JavaScript 클래스 getter 및 setter로 변환하면 이를 수행할 수 있습니다.
<my-input type="color"></my-input> <my-input type="date"></my-input> <my-input type="email"></my-input> <my-input type="number"></my-input> <my-input type="password"></my-input> <my-input type="search"></my-input> <my-input type="tel"></my-input> <my-input type="text"></my-input>
최종 결과는 다음과 같습니다.
결론
이 새로운 유효성 검사를 통해 입력 구성 요소는 이전보다 훨씬 더 탄력적이며 필요한 경우 더 복잡한 유효성 검사도 가능합니다. 이 방법은 일부 속성, 특히 스타일링을 위한 속성에 과잉일 수도 있습니다. 이러한 시나리오에 대해서는 이 기사를 꼭 확인하세요.
위 내용은 방탄 웹 구성 요소 API의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

새로운 프로젝트가 시작될 때, Sass 컴파일은 눈을 깜박이게합니다. 특히 BrowserSync와 짝을 이루는 경우 기분이 좋습니다.

이번 주에 플랫폼 뉴스 라운드 업 RONDUP, Chrome은로드에 대한 새로운 속성, 웹 개발자를위한 접근성 사양 및 BBC Move를 소개합니다.

이것은 처음으로 HTML 요소를보고 있습니다. 나는 그것을 잠시 동안 알고 있었지만 아직 스핀을 위해 그것을 가져 갔다. 그것은 꽤 시원하고 있습니다

구매 또는 빌드는 기술 분야의 고전적인 논쟁입니다. 신용 카드 청구서에 라인 항목이 없기 때문에 물건을 구축하는 것이 저렴할 수 있지만

이번 주에 타이포그래피를 검사하기위한 편리한 북마크 인 Roundup, JavaScript 모듈과 Facebook의 Facebook 등을 어떻게 가져 오는지 땜질하기 위해 대기하는 편리한 북마크 인 Roundup과 Facebook의

한동안 iTunes는 팟 캐스팅에서 큰 개 였으므로 "Podcast 구독"을 링크 한 경우 다음과 같습니다.

사이트에서 방문자 및 사용 데이터를 추적하는 데 도움이되는 분석 플랫폼이 많이 있습니다. 아마도 널리 사용되는 Google 웹 로그 분석
