구성 요소는 HTML 요소를 확장하고 재사용 가능한 코드를 캡슐화할 수 있으며, vue.js의 컴파일러는 일부 경우에 구성 요소에 특수 기능을 추가할 수 있습니다. 또한 is 속성으로 확장된 기본 HTML 요소의 형태여야 합니다.
Vue.js 구성 요소는 사전 정의된 동작을 갖춘 ViewModel 클래스로 이해될 수 있습니다. 구성 요소는 많은 옵션을 미리 정의할 수 있지만 핵심 옵션은 다음과 같습니다.
템플릿(템플릿): 템플릿은 최종적으로 사용자에게 표시되는 데이터와 DOM 간의 매핑 관계를 선언합니다.
초기 데이터(data): 컴포넌트의 초기 데이터 상태입니다. 재사용 가능한 구성 요소의 경우 일반적으로 비공개 상태입니다.
외부 매개변수(props) 허용: 매개변수를 통해 구성요소 간에 데이터가 전송되고 공유됩니다. 매개변수는 기본적으로 단방향(하향식)으로 바인딩되지만 양방향으로 명시적으로 선언할 수도 있습니다.
메서드: 데이터에 대한 수정 작업은 일반적으로 구성 요소의 메서드 내에서 수행됩니다. 사용자 입력 이벤트 및 구성 요소 메서드는 v-on 지시문을 통해 바인딩될 수 있습니다.
수명 주기 후크: 구성 요소는 생성, 연결, 삭제 등과 같은 여러 수명 주기 후크 기능을 트리거합니다. 이러한 후크 함수에서는 일부 사용자 정의 논리를 캡슐화할 수 있습니다. 기존 MVC와 비교하면 컨트롤러의 로직이 이러한 후크 기능으로 분산되어 있다는 것을 이해할 수 있습니다.
전용 리소스(자산): Vue.js에서는 사용자가 정의한 명령어, 필터, 구성 요소 등을 총칭하여 리소스라고 합니다. 전역적으로 등록된 리소스는 쉽게 이름 충돌을 일으킬 수 있으므로 구성 요소는 자체 개인 리소스를 선언할 수 있습니다. 개인 리소스는 구성 요소와 해당 하위 구성 요소에 의해서만 호출될 수 있습니다.
또한 동일한 구성 요소 트리 내의 구성 요소는 내장된 이벤트 API를 통해 통신할 수도 있습니다. Vue.js는 구성 요소 정의, 재사용 및 중첩을 위한 완전한 API를 제공하므로 개발자는 구성 요소를 사용하여 빌딩 블록과 같은 전체 애플리케이션 인터페이스를 구축할 수 있습니다.
구성 요소는 코드의 효율성, 유지 관리성 및 재사용성을 크게 향상시킵니다.
컴포넌트를 사용하여 등록
1. 컴포넌트 생성자 생성:
var MyComponent = Vue.extend({
//选项
})
로그인 후 복사
2 . 생성자를 구성 요소로 사용하고 Vue.comComponent(tag,constructor)에 등록합니다:
Vue.component('my-component',MyComponent)
로그인 후 복사
3. , 자체적으로 사용하십시오.
<div id = "example">
<my-component></my-component>
</div>
Vue 생성자에 전달된 대부분의 옵션은 또한 Vue.extend()에서는 data와 el 외에도 단순히 객체를 data 옵션으로 Vue.extend()에 전달하면 모든 인스턴스가 동일한 데이터 객체를 공유하므로 함수를 data 옵션을 선택하면 이 함수가 새 개체를 반환하도록 합니다.
var MyComponent = Vue.extend({
data: function () {
return { a: 1 }
}
})
로그인 후 복사
템플릿 구문 분석
Vue의 템플릿은 다음을 사용하는 DOM 템플릿입니다. 브라우저의 기본 템플릿 파서이므로 유효한 HTML 조각이어야 합니다. 일부 HTML 요소에는 내부에 배치할 수 있는 요소에 대한 제한이 있습니다.
a는 다른 대화형 요소(예: 버튼, 링크)를 포함할 수 없습니다. )
ul 및 ol은 li만 직접 포함할 수 있습니다.
select는 option과 optgroup만 포함할 수 있습니다.
table은 thead, tbody, tfoot, tr, caption, col만 직접 포함할 수 있습니다. , colgroup
tr은 th와 td만 직접 포함할 수 있습니다
실제로 이러한 제한으로 인해 예상치 못한 결과가 발생할 수 있습니다. 간단한 경우에는 작동할 수 있지만 브라우저가 유효성을 검사하기 전에는 사용자 정의 구성 요소의 확장 결과에 의존할 수 없습니다. 예를 들어
는 my-select 구성 요소가 결국 다음으로 확장되더라도 유효한 템플릿이 아닙니다. <선택>..선택>.
또 다른 결과는 맞춤 태그(, , 와 같은 맞춤 요소 및 특수 태그 포함)를 ul, select, table 등 내에서 사용할 수 없다는 것입니다. 제한된 태그 내에 있습니다. 이러한 요소 내부에 배치된 맞춤 태그는 요소 외부로 들어올려져 잘못 렌더링됩니다.
Vue.component('activate-example', {
activate: function (done) {
var self = this
loadDataAsync(function (data) {
self.someData = data
done()
})
}
})
Vue 프레임워크를 사용하여 프런트엔드 프로젝트를 개발할 때 배포 시 여러 환경을 배포하게 되는데, 개발 환경, 테스트 환경, 온라인 환경에서 호출되는 인터페이스 도메인 이름이 다른 경우가 많습니다. 어떻게 구별할 수 있나요? 그것은 환경 변수와 패턴을 사용하는 것입니다.
Ace는 JavaScript로 작성된 내장형 코드 편집기입니다. Sublime, Vim 및 TextMate와 같은 기본 편집기의 기능 및 성능과 일치합니다. 모든 웹페이지와 JavaScript 애플리케이션에 쉽게 삽입할 수 있습니다. Ace는 Cloud9 IDE의 메인 편집자로 유지되며 Mozilla Skywriter(Bespin) 프로젝트의 후속 버전입니다.
구성요소화와 모듈화의 차이점: 모듈화는 코드 논리의 관점에서 구분되며, 코드 계층 개발을 용이하게 하고 각 기능 모듈의 기능이 일관되게 유지되도록 합니다. 컴포넌트화는 UI 인터페이스 관점에서 계획하는 것으로 프런트엔드의 컴포넌트화는 UI 컴포넌트의 재사용을 용이하게 합니다.
vscode 자체는 Vue 파일 구성 요소를 지원하여 정의로 이동하지만 지원은 매우 약합니다. vue-cli 구성에 따라 다양한 유연한 사용법을 작성할 수 있어 생산 효율성을 향상시킬 수 있습니다. 그러나 vscode 자체에서 제공하는 기능이 파일 정의로 점프하는 것을 지원하지 못하게 하는 것은 이러한 유연한 쓰기 방법입니다. 이러한 유연한 작성 방법과 호환되고 작업 효율성을 높이기 위해 Vue 파일을 지원하는 vscode 플러그인을 작성하여 정의로 이동했습니다.
Vue.js는 오늘날 프런트엔드 개발에서 매우 인기 있는 프레임워크가 되었습니다. Vue.js가 계속 발전함에 따라 단위 테스트는 점점 더 중요해지고 있습니다. 오늘은 Vue.js 3에서 단위 테스트를 작성하는 방법을 살펴보고 몇 가지 모범 사례와 일반적인 문제 및 솔루션을 제공하겠습니다.