> 웹 프론트엔드 > View.js > Watch Listener, 계산된 속성, Vue-cli 및 Vue의 구성 요소에 대한 간략한 분석

Watch Listener, 계산된 속성, Vue-cli 및 Vue의 구성 요소에 대한 간략한 분석

青灯夜游
풀어 주다: 2022-05-27 20:21:12
앞으로
2129명이 탐색했습니다.

이 글은 Vue를 계속해서 학습하는데 도움이 될 것이며, Vue를 시작하기 위한 필수 지식 중 Watch Listener, 계산된 속성, Vue-cli 및 Vue 구성 요소를 자세히 소개하는 글이 모든 분들께 도움이 되기를 바랍니다!

Watch Listener, 계산된 속성, Vue-cli 및 Vue의 구성 요소에 대한 간략한 분석

1. 감시 리스너

(1) 감시 리스너란

감시 리스너

를 통해 개발자는 데이터의 변화를 모니터링하고 데이터 변경에 따라 특정 변경 작업을 수행할 수 있습니다. . (학습 동영상 공유: vue 동영상 튜토리얼) 구문 형식은 다음과 같습니다.

Watch Listener, 계산된 속성, Vue-cli 및 Vue의 구성 요소에 대한 간략한 분석 (2) watch를 사용하여 사용자 이름을 사용할 수 있는지 감지합니다.

사용자 이름 값의 변경 사항을 듣고 axios code> 사용 <code>Ajax 요청을 시작하여 현재 입력된 사용자 이름을 사용할 수 있는지 확인합니다.

코드는 다음과 같이 설명됩니다.

watch: {
	// 监听 username 值的变化
	async username( newVal ) {
		if (newVal === &#39;&#39;) return
		// 使用 axios 发起请求,判断用户名是否可用
		const { data: res } = await axios.get(&#39;https://www.escook.cn/api/finduser/&#39; + newVal)
		console.log(res)
	}
}
로그인 후 복사
axios 发起 Ajax 请求,检测当前输入的用户名是否可用:

代码演示如下:

watch: {
	username: {
	// handler 是固定写法,表示当 username 的值变化时,自动调用 handler 处理函数
		handler: async function ( newVal ) {
			if (newVal === &#39;&#39;) return
			const { data: res } = await axios.get(&#39;https://www.escook.cn/api/finduser/&#39; + newVal)
			console.log(res)
		},
		// 表示页面初次渲染好之后,就立即触发当前的 watch 侦听器
		immediate: true
	}
}
로그인 후 복사

(3)immediate 选项

默认情况下,组件在初次加载完毕后不会调用 watch 侦听器。如果想让 watch 侦听器立即被调用,则需要使用 immediate 选项。

代码演示如下:

rrreee

(4)deep 选项

如果 watch 侦听的是一个对象,如果对象中的属性值发生了变化,则无法被监听到。此时需要使用 deep 选项。

代码演示如下:
Watch Listener, 계산된 속성, Vue-cli 및 Vue의 구성 요소에 대한 간략한 분석

(5)监听对象单个属性的变化

如果只想监听对象中单个属性的变化,则可以按照如下的方式定义watch 侦听器:

代码演示如下:
Watch Listener, 계산된 속성, Vue-cli 및 Vue의 구성 요소에 대한 간략한 분석


二、计算属性

(1)什么是计算属性

1️⃣ 计算属性指的是通过一系列运算之后,最终得到一个属性值

2️⃣ 这个动态计算出来的属性值可以被模板结构或 methods 方法使用。

代码演示如下:
Watch Listener, 계산된 속성, Vue-cli 및 Vue의 구성 요소에 대한 간략한 분석

(2)计算属性的特点

1️⃣ 虽然计算属性在声明的时候被定义为方法,但是计算属性的本质是一个属性

2️⃣ 计算属性会缓存计算的结果,只有计算属性依赖的数据变化时,才会重新进行运算;


三、vue-cli

(1)什么是 vue-cli

1️⃣ vue-cli 是 Vue.js 开发的标准工具。它简化了程序员基于 webpack 创建工程化的 Vue 项目的过程。

2️⃣ 引用自 vue-cli 官网上的一句话:程序员可以专注在撰写应用上,而不必花好几天去纠结 webpack 配置的问题;

3️⃣ 中文官网:https://cli.vuejs.org/zh/

(2)安装和使用

1️⃣ vue-cli 是 npm 上的一个全局包,使用 npm install 命令,即可方便的把它安装到自己的电脑上:npm install -g @vue/cli

2️⃣ 检查其版本是否正确:vue --version

3️⃣ 在终端下运行如下的命令,创建指定名称的项目:vue create 项目的名称

(3)vue 项目中 src 目录的构成

  • assets 文件夹:存放项目中用到的静态资源文件,例如:css 样式表、图片资源;
  • components 文件夹:程序员封装的、可复用的组件,都要放到 components 目录下;
  • main.js 是项目的入口文件。整个项目的运行,要先执行 main.js;
  • App.vue
  • (3) 즉시 옵션

기본적으로 구성 요소가 처음 로드된 후에는 감시 리스너가 호출되지 않습니다.

watch 리스너가 즉시 호출되도록 하려면

, 🎜immediate🎜 옵션을 사용해야 합니다. 🎜🎜코드는 다음과 같이 시연됩니다. 🎜rrreee🎜🎜 (4) 딥 옵션 🎜🎜🎜🎜 watch가 객체를 듣고 있는 경우 객체의 속성 값이 변경되면 모니터링할 수 없습니다. . 🎜이때 🎜deep🎜 옵션을 사용해야 합니다. 🎜🎜코드 데모는 다음과 같습니다.
Watch Listener, 계산된 속성, Vue-cli 및 Vue의 구성 요소에 대한 간략한 분석🎜 🎜🎜(5) 객체의 단일 속성 변경 사항 모니터링🎜🎜🎜 🎜객체의 단일 속성 변경 사항만 모니터링하려는 경우🎜 watch 리스너를 정의할 수 있습니다. 🎜🎜코드 데모 다음과 같습니다:
Watch Listener, 계산된 속성, Vue-cli 및 Vue의 구성 요소에 대한 간략한 분석🎜
🎜🎜 2. 계산속성 🎜🎜🎜🎜 (1) 계산속성이란 🎜🎜🎜1️⃣ 계산속성이란 🎜연산🎜을 거쳐 최종적으로 🎜속성값🎜을 얻는다. . 🎜🎜2️⃣ 🎜이 동적으로 계산된 속성 값🎜은 템플릿 구조나 메소드 방식으로 사용할 수 있습니다. 🎜🎜코드 데모는 다음과 같습니다.
Watch Listener, 계산된 속성, Vue-cli 및 Vue의 구성 요소에 대한 간략한 분석🎜 🎜🎜(2) 계산 속성의 특징🎜🎜🎜1️⃣ 계산 속성은 선언 시 메서드로 정의되지만 🎜🎜계산 속성의 본질적인 특성은 속성🎜🎜 🎜🎜2️⃣ 계산 속성은 결과를 🎜캐시합니다. 계산🎜, 계산된 속성🎜이 의존하는 데이터🎜가 변경되는 경우에만 작업이 다시 계산됩니다. 🎜
🎜🎜3.vue-cli🎜🎜🎜🎜 (1) vue-cli란? 🎜🎜🎜1️⃣ vue-cli는 Vue.js 개발을 위한 표준 도구입니다. 프로그래머가 webpack을 기반으로 엔지니어링된 Vue 프로젝트를 생성하는 프로세스를 단순화합니다. 🎜🎜2️⃣ vue-cli 공식 웹사이트에서 인용: 프로그래머는 웹팩 구성 문제로 며칠을 걱정하는 대신 애플리케이션 작성에 집중할 수 있습니다. 🎜🎜3️⃣ 중국 공식 웹사이트: 🎜https://cli.vuejs .org/zh/🎜🎜 🎜🎜 (2) 설치 및 사용 🎜🎜🎜1️⃣ vue-cli는 npm의 글로벌 패키지입니다. npm install 명령을 사용하여 컴퓨터에 쉽게 설치할 수 있습니다: 🎜npm install -g @vue/cli code>🎜🎜🎜2️⃣ 버전이 올바른지 확인하세요: 🎜vue --version🎜🎜🎜3️⃣ 터미널에서 다음 명령을 실행하여 지정된 프로젝트 이름을 만듭니다: 🎜 vue create 프로젝트 이름🎜🎜🎜🎜 (3) vue 프로젝트 내 src 디렉터리 구성🎜🎜
  • assets 폴더: 정적 리소스 파일 저장 프로젝트에 사용되는 CSS 스타일 시트, 이미지 리소스 🎜
  • 구성 요소 폴더: 프로그래머가 패키지한 재사용 가능한 구성 요소는 구성 요소 디렉터리 🎜
  • main에 있어야 합니다. js는 프로젝트의 항목 파일입니다. 전체 프로젝트를 실행하려면 main.js를 먼저 실행해야 합니다. 🎜
  • App.vue는 프로젝트의 루트 구성 요소입니다. 🎜🎜🎜🎜(4) vue 프로젝트의 실행 프로세스입니다. 🎜🎜🎜엔지니어링에서 프로젝트에서 vue가 해야 할 일은 매우 간단합니다. main.js를 통해 index.html의 지정된 영역에 App.vue를 렌더링하는 것입니다. 🎜
    • App.vue는 렌더링할 템플릿 구조를 작성하는 데 사용됩니다.
    • App.vue 用来编写待渲染的模板结构;
  • index.html 中需要预留一个 el 区域;
  • main.jsApp.vue 渲染到了 index.html 所预留的区域中;

四、vue 组件

(1)什么是组件化开发

组件化开发指的是:根据封装的思想,把页面上可重用的 UI 结构封装为组件,从而方便项目的开发和维护。

(2)vue 中的组件化开发

1️⃣ vue 是一个支持组件化开发的前端框架;

2️⃣ vue 中规定:组件的后缀名是.vue。之前接触到的 App.vue 文件本质上就是一个 vue 的组件;

(3)vue 组件的三个组成部分

每个 .vue 组件都由 3 部分构成,分别是:

  • template → 组件的模板结构
  • script → 组件的 JavaScript 行为
  • style → 组件的样式

其中,每个组件中必须包含 template 模板结构,而 script 行为和 style 样式是可选的组成部分。

3.1 template

vue 规定:每个组件对应的模板结构,需要定义到 <template> 节点中。
Watch Listener, 계산된 속성, Vue-cli 및 Vue의 구성 요소에 대한 간략한 분석

?温馨提醒?:

  • template 是 vue 提供的容器标签,只起到包裹性质的作用,它不会被渲染为真正的 DOM 元素;
  • template 中只能包含唯一的根节点;

3.2 script

1️⃣ vue 规定:开发者可以在 <script> 节点中封装组件的 JavaScript 业务逻辑

<script > 节点的基本结构如下:
Watch Listener, 계산된 속성, Vue-cli 및 Vue의 구성 요소에 대한 간략한 분석

2️⃣ vue 规定:.vue 组件中的 data 必须是一个函数不能直接指向一个数据对象

因此在组件中定义 data 数据节点时,下面的方式是错误的:
Watch Listener, 계산된 속성, Vue-cli 및 Vue의 구성 요소에 대한 간략한 분석

3.3 style

vue 规定:组件内的 <style> 节点是可选的,开发者可以在 <style> 节点中编写样式美化当前组件的 UI 结构

<script> 节点的基本结构如下:
Watch Listener, 계산된 속성, Vue-cli 및 Vue의 구성 요소에 대한 간략한 분석

<style> 标签上添加 lang="less" 属性,即可使用 less 语法编写组件的样式:
Watch Listener, 계산된 속성, Vue-cli 및 Vue의 구성 요소에 대한 간략한 분석

(4)组件之间的父子关系

Watch Listener, 계산된 속성, Vue-cli 및 Vue의 구성 요소에 대한 간략한 분석

4.1 使用组件的三个步骤

Watch Listener, 계산된 속성, Vue-cli 및 Vue의 구성 요소에 대한 간략한 분석

4.2 注册全局组件

1️⃣ 通过 components 注册的是私有子组件;例如:在组件 A 的 components 节点下,注册了组件 F。则组件 F 只能用在组件 A 中;不能被用在组件C 中。

2️⃣ 在 vue 项目的 main.js 入口文件中,通过 Vue.component() 方法,可以注册全局组件。

代码演示如下:
Watch Listener, 계산된 속성, Vue-cli 및 Vue의 구성 요소에 대한 간략한 분석

(5)组件的 props

props 是组件的自定义属性,在封装通用组件的时候,合理地使用propsindex.html는 el 영역을 예약해야 합니다. main.js는 index.html에 의해 예약된 영역으로 App.vue를 렌더링합니다.


4. Vue 컴포넌트

(1) 컴포넌트 개발이란
컴포넌트 개발이란 캡슐화 개념을 기반으로 페이지에서 재사용 가능한 컴포넌트를 의미합니다. 구조는 프로젝트 개발 및 유지 관리를 용이하게 하기 위해 구성 요소로 캡슐화됩니다.


(2) vue의 컴포넌트 개발Watch Listener, 계산된 속성, Vue-cli 및 Vue의 구성 요소에 대한 간략한 분석

1️⃣ vue는 🎜컴포넌트 개발을 지원하는🎜 프론트엔드 프레임워크입니다. 🎜🎜2️⃣ vue에서는 컴포넌트의 접미사 이름이 임을 규정합니다. 뷰. 이전에 접한 App.vue 파일은 본질적으로 vue 구성 요소입니다. 🎜

🎜(3) vue 구성 요소의 세 가지 구성 요소🎜

🎜각 .vue 구성 요소는 세 부분으로 구성됩니다. 즉: 🎜🎜🎜템플릿 → 🎜구성 요소의 템플릿 구조🎜🎜script → 🎜구성 요소의 JavaScript 동작🎜 🎜style → 🎜컴포넌트 스타일🎜🎜그 중 🎜🎜각 컴포넌트는 템플릿 템플릿 구조를 포함해야 하며🎜🎜, 스크립트 동작과 스타일은 선택 사항입니다. 구성 요소. 🎜

🎜3.1 template🎜

🎜vue 규정: 각 구성 요소에 해당하는 템플릿 구조는 <template> 노드에 정의되어야 합니다. 🎜Watch Listener, 계산된 속성, Vue-cli 및 Vue의 구성 요소에 대한 간략한 분석🎜🎜?따뜻한 알림?:🎜🎜🎜 템플릿은 vue에서 제공하는 🎜컨테이너 태그🎜입니다. 이는 🎜래핑 속성🎜 역할만 수행합니다. 실제 DOM 요소로 렌더링되지 않습니다. 🎜템플릿은 루트 노드만 포함할 수 있습니다. >

🎜3.2 script🎜

🎜1️⃣ vue 규정: 개발자는 <script> 노드에 구성 요소의 🎜JavaScript 비즈니스 로직🎜을 캡슐화할 수 있습니다. 🎜🎜<script > 노드의 기본 구조는 다음과 같습니다. 🎜Watch Listener, 계산된 속성, Vue-cli 및 Vue의 구성 요소에 대한 간략한 분석🎜🎜2️⃣ vue는 다음을 규정합니다: .vue 구성 요소의 데이터 🎜는 함수 🎜여야 하며 🎜는 데이터 개체 🎜를 직접 가리킬 수 없습니다. 🎜🎜따라서 구성 요소에서 데이터 노드를 정의할 때 다음 방법은 🎜🎜wrong🎜🎜입니다. 🎜Watch Listener, 계산된 속성, Vue-cli 및 Vue의 구성 요소에 대한 간략한 분석🎜

🎜3.3 style🎜

🎜vue 규정: 구성 요소 내의 <style> 노드는 선택 사항이며 개발 사용자는 다음을 수행할 수 있습니다. <style> 노드에 스타일을 작성하여 현재 구성 요소의 UI 구조를 아름답게 만듭니다. 🎜🎜<script> 노드의 기본 구조는 다음과 같습니다. 🎜Watch Listener, 계산된 속성, Vue-cli 및 Vue의 구성 요소에 대한 간략한 분석🎜🎜 <style> 태그에 lang="less" 속성을 ​​추가하여 less를 사용하세요. 구문 작성 구성 요소 스타일: 🎜Watch Listener, 계산된 속성, Vue-cli 및 Vue의 구성 요소에 대한 간략한 분석 🎜

🎜(4) 구성 요소 간의 상위-하위 관계🎜

🎜Watch Listener, 계산된 속성, Vue-cli 및 Vue의 구성 요소에 대한 간략한 분석🎜

🎜4.1 구성 요소를 사용하는 3단계🎜

🎜Watch Listener, 계산된 속성, Vue-cli 및 Vue의 구성 요소에 대한 간략한 분석🎜

🎜4.2 전역 구성 요소 등록🎜

🎜1️⃣ 🎜🎜구성 요소를 통해 비공개 하위 구성 요소 등록; 🎜🎜 예: 구성 요소 F는 구성 요소 A의 comments 노드 아래에 등록됩니다. 그러면 구성 요소 F는 구성 요소 A에서만 사용할 수 있으며 구성 요소 C에서는 사용할 수 없습니다. 🎜🎜2️⃣ vue 프로젝트의 main.js 항목 파일에서 Vue.comComponent() 메소드를 통해 전역 컴포넌트를 등록할 수 있습니다. 🎜🎜코드 데모는 다음과 같습니다: 🎜Watch Listener, 계산된 속성, Vue-cli 및 Vue의 구성 요소에 대한 간략한 분석🎜

🎜(5) 구성요소의 Props🎜

🎜props는 구성요소의 사용자 정의 속성입니다. 공통 구성요소를 캡슐화할 때 props를 합리적으로 사용하면 크게 향상될 수 있습니다 🎜 🎜구성 요소의 재사용성을 향상🎜🎜! 🎜🎜구문 데모는 다음과 같습니다. 🎜🎜🎜

5.1 props는 읽기 전용입니다.

1️⃣ vue 규정: 구성 요소에 캡슐화된 사용자 정의 속성은 읽기 전용이며 프로그래머는 props 값을 직접 수정할 수 없습니다. 그렇지 않으면 오류가 직접 보고됩니다. props 的值。否则会直接报错;

2️⃣ 要想修改 props 的值,可以props 的值转存到 data,因为 data 中的数据都是可读可写的!
Watch Listener, 계산된 속성, Vue-cli 및 Vue의 구성 요소에 대한 간략한 분석

5.2 props 的 default 默认值

在声明自定义属性时,可以通过 default 来定义属性的默认值。示例代码如下:
Watch Listener, 계산된 속성, Vue-cli 및 Vue의 구성 요소에 대한 간략한 분석

5.3 props 的 type 值类型

在声明自定义属性时,可以通过 type 来定义属性的值类型。示例代码如下:
Watch Listener, 계산된 속성, Vue-cli 및 Vue의 구성 요소에 대한 간략한 분석

5.4 props 的 required 必填项

在声明自定义属性时,可以通过 required 选项,将属性设置为必填项,强制用户必须传递属性的值。示例代码如下:
Watch Listener, 계산된 속성, Vue-cli 및 Vue의 구성 요소에 대한 간략한 분석

(6)组件之间的样式冲突问题

1️⃣ 默认情况下,写在 .vue 组件中的样式会全局生效,因此很容易造成多个组件之间的样式冲突问题

2️⃣ 导致组件之间样式冲突的根本原因是:

  • 单页面应用程序中,所有组件的 DOM 结构,都是基于唯一的 index.html 页面进行呈现的
  • 每个组件中的样式,都会影响整个 index.html 页面中的 DOM 元素

6.1 思考:如何解决组件样式冲突的问题

为每个组件分配唯一的自定义属性,在编写组件样式时,通过属性选择器来控制样式的作用域,示例代码如下:
Watch Listener, 계산된 속성, Vue-cli 및 Vue의 구성 요소에 대한 간략한 분석

6.2 style 节点的 scoped 属性

为了提高开发效率和开发体验,vue 为 style 节点提供了 scoped2️⃣ props 값을 수정하려면
props 값을 data Watch Listener, 계산된 속성, Vue-cli 및 Vue의 구성 요소에 대한 간략한 분석로 전송할 수 있습니다. code>data 의 데이터는 읽고 쓸 수 있습니다!

Watch Listener, 계산된 속성, Vue-cli 및 Vue의 구성 요소에 대한 간략한 분석

5.2 props의 기본값

사용자 정의 속성을 선언할 때 기본값을 통해 속성의 기본값을 정의할 수 있습니다. 샘플 코드는 다음과 같습니다. Watch Listener, 계산된 속성, Vue-cli 및 Vue의 구성 요소에 대한 간략한 분석
Watch Listener, 계산된 속성, Vue-cli 및 Vue의 구성 요소에 대한 간략한 분석

5.3 props 유형 값 유형

맞춤 속성을 선언할 때 유형을 통해 속성의 값 유형을 정의

🎜할 수 있습니다. 샘플 코드는 다음과 같습니다. 🎜Watch Listener, 계산된 속성, Vue-cli 및 Vue의 구성 요소에 대한 간략한 분석🎜🎜🎜 5.4 props 필수 필수 항목 🎜🎜🎜 사용자 정의 속성을 선언할 때 필수 옵션을 통해 🎜🎜 속성을 필수 항목으로 설정 🎜🎜하여 사용자가 속성 값을 전달하도록 강제할 수 있습니다. 샘플 코드는 다음과 같습니다. 🎜Watch Listener, 계산된 속성, Vue-cli 및 Vue의 구성 요소에 대한 간략한 분석🎜

🎜( 6) 구성 요소 간 스타일 충돌 🎜

🎜1️⃣ 기본적으로 .vue 구성 요소에 작성된 🎜 스타일은 전역적으로 적용되므로 🎜 여러 항목 간에 🎜 충돌이 발생하기 쉽습니다. 🎜 사이의 구성 요소 스타일 충돌 문제. 🎜🎜2️⃣ 구성 요소 간 스타일 충돌의 근본 원인은 다음과 같습니다. 🎜
  • 단일 페이지 애플리케이션에서 모든 구성 요소의 DOM 구조는 🎜유일한 index.html 페이지🎜를 기반으로 렌더링됩니다. li>
  • 각 구성 요소의 스타일은 🎜전체 index.html 페이지의 DOM 요소에 영향을 미칩니다🎜
🎜🎜6.1 생각: 구성 요소 스타일 충돌 문제를 해결하는 방법🎜🎜🎜 모든 구성요소에는 고유한 사용자 정의 속성이 할당됩니다. 구성요소 스타일을 작성할 때 스타일의 범위는 속성 선택기를 통해 제어됩니다. 🎜Watch Listener, 계산된 속성, Vue-cli 및 Vue의 구성 요소에 대한 간략한 분석🎜🎜🎜6.2 스타일 노드의 범위 속성🎜🎜🎜개발 효율성과 개발 경험을 향상시키기 위해 vue 구성 요소 간의 스타일 충돌을 방지하기 위해 스타일 노드 범위🎜 속성에 🎜를 제공합니다. 🎜🎜🎜🎜🎜6.3 /deep/ 스타일 침투🎜🎜🎜 범위 속성이 현재 스타일 노드에 추가되는 경우 🎜 하위 구성요소에는 스타일이 적용되지 않습니다🎜. 🎜🎜특정 스타일을 하위 구성 요소에 적용하려면 /deep/ 깊이 선택기를 사용할 수 있습니다. 🎜🎜🎜🎜🎜🎜 (학습 영상 공유: 🎜웹 프론트엔드 개발🎜, 🎜기본 프로그래밍 영상🎜)🎜

위 내용은 Watch Listener, 계산된 속성, Vue-cli 및 Vue의 구성 요소에 대한 간략한 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:csdn.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿