vue에서 v-model에 대한 심층적인 이해를 가져보세요!
V모델을 아시나요? 다음 글은 vue의 v-model을 소개하고 v-model에 대한 심층적인 이해를 돕겠습니다.
먼저 학습에서 v-model의 역할이 무엇인지 이해해야 합니다.
구성 요소의 v-model
默认会利用名为 value
的 prop 和名为 input
的事件,但是像单选框、复选框等类型的输入控件可能会将 value
attribute 用于不同的目的。model
옵션을 사용하면 이러한 충돌을 피할 수 있습니다. --- 이것이 찾은 답변입니다. vue 공식 홈페이지에서
두 번째로, 우리는 v-model의 본질과 그 구현 원리를 알아야 합니다.
제 생각에는 v-model 자체가 syntactic sugar이며, 이는 실제로 우리에게 vue 내장 지침을 제공합니다. , 이 방법은 코드를 단순화할 뿐만 아니라 이 명령을 사용하는 방법을 이해할 수 있게 해줍니다
v-model 명령을 사용하면 입력 상자에 입력한 내용을 직접 얻을 수 있고 입력 내용을 다음으로 변환할 수 있습니다. 입력 값이 변경되면 데이터가 자동으로 업데이트되고 해당 뷰가 업데이트되어 렌더링됩니다.
<div> <p>{{model}}</p> <!-- v-model --> <input> </div> <script> export default { data() { return { model:'', } }, } </script>
양방향 바인딩 MVVM원칙은 실제로 데이터를 모니터링한 다음 데이터가 변경되면 페이지 보기를 업데이트하는 것입니다.
MVVM 흐름도
다음 그림은 양방향 바인딩의 원리이며, 데이터 하이재킹과 템플릿 구문 분석을 통해 단계별 프로세스를 통해 데이터 업데이트 보기를 모니터링합니다.
Observer 데이터 하이재킹 관련 코드
Observer는 실제로 루프 순회를 통해 데이터의 각 항목을 모니터링하며, 데이터가 변경되면 notify 메소드를 통해 구독자에게 업데이트가 전송됩니다. 동시에
Compile은 일부 뷰를 업데이트하기 위해 텍스트 컴파일을 수행합니다. class Observe {
constructor(vm) {
this.walk(vm.data)
}
// 循环遍历 让 data 里每一个key 都监听
walk(data) {
Object.keys(data).forEach( key => {
this.defineReactive(data, key, data[key])
})
}
// 定义响应式 这个函数也是响应式的核心函数
defineReactive(data, key, value) {
let dep = new Dep()
Object.defineProperty(data, key, {
get() {
console.log('触发 get 收集依赖');
// 收集依赖
if( Dep.target ) {
// 添加订阅者
dep.addSub(Dep.target)
}
return value
},
set(newValue) {
console.log(value, '触发 set 派发更新');
// 新值覆盖旧值
value = newValue
// 派发更新
dep.notify()
},
})
}
}
Watcher는 우리의 구독자이고, update 메소드
constructor(vm, exp, cb ) { this.vm = vm; this.exp = exp; this.cb = cb; this.value = this.get() } // 更新 update() { this.run() } // 更新 DOM run() { const value = this.get() // 新旧值进行比对 if( value !== this.value ) { // 调用回调函数 this.cb.call(this.vm, value) } } // 收集依赖 get() { Dep.target = this let value = this.vm.data[this.exp] Dep.target = null; return value } }
를 통해 뷰가 업데이트됩니다. 이것은 양방향 바인딩에 대한 제가 이해한 일부이며, 글은 다음과 같습니다. 충분히 포괄적이지 않습니다. 모두가 저를 비판하고 바로잡을 수 있기를 바랍니다. 감사합니다. 【관련 추천:
vue.js tutorial】
위 내용은 vue에서 v-model에 대한 심층적인 이해를 가져보세요!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

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

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

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

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

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

뜨거운 주제











vue.js에서 JS 파일을 참조하는 세 가지 방법이 있습니다. & lt; script & gt; 꼬리표;; mounted () 라이프 사이클 후크를 사용한 동적 가져 오기; Vuex State Management Library를 통해 수입.

vue.js의 시계 옵션을 사용하면 개발자가 특정 데이터의 변경 사항을들을 수 있습니다. 데이터가 변경되면 콜백 기능을 트리거하여 업데이트보기 또는 기타 작업을 수행합니다. 구성 옵션에는 즉시 콜백을 실행할지 여부와 DEEP를 지정하는 즉시 포함되며, 이는 객체 또는 어레이에 대한 변경 사항을 재귀 적으로 듣는 지 여부를 지정합니다.

vue.js에서 bootstrap 사용은 5 단계로 나뉩니다 : Bootstrap 설치. main.js.의 부트 스트랩 가져 오기 부트 스트랩 구성 요소를 템플릿에서 직접 사용하십시오. 선택 사항 : 사용자 정의 스타일. 선택 사항 : 플러그인을 사용하십시오.

HTML 템플릿의 버튼을 메소드에 바인딩하여 VUE 버튼에 함수를 추가 할 수 있습니다. 메소드를 정의하고 VUE 인스턴스에서 기능 로직을 작성하십시오.

CSS 애니메이션 또는 타사 라이브러리를 사용하여 VUE에서 Marquee/Text Scrolling Effects를 구현하십시오. 이 기사는 CSS 애니메이션 사용 방법을 소개합니다. & lt; div & gt; CSS 애니메이션을 정의하고 오버플로를 설정하십시오 : 숨겨진, 너비 및 애니메이션. 키 프레임을 정의하고 변환을 설정하십시오 : Translatex () 애니메이션의 시작과 끝에서. 지속 시간, 스크롤 속도 및 방향과 같은 애니메이션 속성을 조정하십시오.

vue.js에서 게으른 로딩을 사용하면 필요에 따라 부품 또는 리소스를 동적으로로드 할 수 있으므로 초기 페이지로드 시간을 줄이고 성능을 향상시킵니다. 특정 구현 방법에는 & lt; keep-alive & gt를 사용하는 것이 포함됩니다. & lt; 구성 요소는 & gt; 구성 요소. 게으른 하중은 FOUC (Splash Screen) 문제를 일으킬 수 있으며 불필요한 성능 오버 헤드를 피하기 위해 게으른 하중이 필요한 구성 요소에만 사용해야합니다.

vue.js는 이전 페이지로 돌아갈 수있는 네 가지 방법이 있습니다. $ router.go (-1) $ router.back () 사용 & lt; router-link to = & quot;/quot; Component Window.history.back () 및 메소드 선택은 장면에 따라 다릅니다.

Vue DevTools를 사용하여 브라우저 콘솔에서 vue 탭을 보면 VUE 버전을 쿼리 할 수 있습니다. npm을 사용하여 "npm list -g vue"명령을 실행하십시오. package.json 파일의 "종속성"객체에서 vue 항목을 찾으십시오. Vue Cli 프로젝트의 경우 "vue -version"명령을 실행하십시오. & lt; script & gt에서 버전 정보를 확인하십시오. vue 파일을 나타내는 html 파일의 태그.
