【Vue】基础入门

【Vue】基础入门vue 简介 1 什么是 vue 官方给出的概念 Vue 读音 vju 类似于 view 是一套用于构建用户界面的前端框架

大家好,欢迎来到IT知识分享网。

vue 简介

1. 什么是 vue

2. vue 的特性

2.1 数据驱动视图

2.2 双向数据绑定

在这里插入图片描述 在这里插入图片描述
好处:开发者不再需要手动操作 DOM 元素,来获取表单元素最新的值!

2.3 MVVM

MVVM 是 vue 实现数据驱动视图和双向数据绑定的核心原理。MVVM 指的是 Model、View 和 ViewModel,它把每个 HTML 页面都拆分成了这三个部分,如图所示:在这里插入图片描述
在 MVVM 概念中:
Model 表示当前页面渲染时所依赖的数据源。
View 表示当前页面所渲染的 DOM 结构。
ViewModel 表示 vue 的实例,它是 MVVM 的核心。



2.4 MVVM 的工作原理

当表单元素的值发生变化时,也会被 VM 监听到,VM 会把变化过后最新的值自动同步到Model 数据源中。

3. vue 的版本

vue 的基本使用

1. 基本使用步骤

2. 基本代码与 MVVM 的对应关系

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <script src="./lib/vue.js"></script> </head> <body> <div id="app"> { 
   { 
   message}} </div> </body> <script> const vm = new Vue({ 
    el: '#app', data: { 
    message: 'Hello Vue!' } }) </script> </html> 

vue 的调试工具

1. 安装 vue-devtools 调试工具

2. 配置 Chrome 浏览器中的 vue-devtools

点击 Chrome 浏览器右上角的 按钮,选择更多工具-> 扩展程序 -> Vue.js devtools 详细信息,并勾选如下的两个选项:在这里插入图片描述
注意:修改完配置项,须重启浏览器才能生效!

3. 使用 vue-devtools 调试 vue 页面

在浏览器中访问一个使用了 vue 的页面,打开浏览器的开发者工具,切换到 Vue 面板,即可使用 vue-devtools调试当前的页面在这里插入图片描述

vue 的指令与过滤器

1. 指令的概念

1.1 内容渲染指令

v-text
用法示例:
在这里插入图片描述
注意:v-text 指令会覆盖元素内默认的值。


{
{ }} 语法

vue 提供的 {
{ }} 语法,专门用来解决 v-text 会覆盖默认文本内容的问题。这种 {
{ }} 语法的专业名称是插值表达式(英文名为:Mustache)。
在这里插入图片描述

注意:相对于 v-text 指令来说,插值表达式在开发中更常用一些!因为它不会覆盖元素中默认的文本内容。

v-html
v-text 指令和插值表达式只能渲染纯文本内容。如果要把包含 HTML 标签的字符串渲染为页面的 HTML 元素,则需要用到 v-html 这个指令:
在这里插入图片描述
最终渲染的结果为:
在这里插入图片描述



1.2 属性绑定指令

1.3 使用 Javascript 表达式

在 vue 提供的模板渲染语法中,除了支持绑定简单的数据值之外,还支持Javascript 表达式的运算,例如:在这里插入图片描述

1.4 事件绑定指令

通过 v-on 绑定的事件处理函数,需要在 methods 节点中进行声明
在这里插入图片描述
事件绑定的简写形式
由于 v-on 指令在开发中使用频率非常高,因此,vue 官方为其提供了简写形式(简写为英文的 @ )。
在这里插入图片描述
事件参数对象
在原生的 DOM 事件绑定中,可以在事件处理函数的形参处,接收事件参数对象 event。同理,在v-on 指令(简写为 @ )所绑定的事件处理函数中,同样可以接收到事件参数对象 event,示例代码如下:
在这里插入图片描述
绑定事件并传参
在使用 v-on 指令绑定事件时,可以使用 ( ) 进行传参,示例代码如下:
在这里插入图片描述
$event
$event 是 vue 提供的特殊变量,用来表示原生的事件参数对象 event。$event 可以解决事件参数对象event被覆盖的问题。示例用法如下:
在这里插入图片描述
事件修饰符
在事件处理函数中调用event.preventDefault() 或 event.stopPropagation() 是非常常见的需求。因此,
vue 提供了事件修饰符的概念,来辅助程序员更方便的对事件的触发进行控制。常用的 5 个事件修饰符如下:















在这里插入图片描述

在这里插入图片描述
按键修饰符
在监听键盘事件时,我们经常需要判断详细的按键。此时,可以为键盘相关的事件添加按键修饰符,例如:在这里插入图片描述

1.5 双向绑定指令

1.6 条件渲染指令

实现原理不同:
⚫ v-if 指令会动态地创建或移除DOM 元素,从而控制元素在页面上的显示与隐藏;
⚫ v-show 指令会动态为元素添加或移除 style=“display: none;” 样式,从而控制元素的显示与隐藏;

性能消耗不同:
v-if 有更高的切换开销,而 v-show 有更高的初始渲染开销。因此:
⚫ 如果需要非常频繁地切换,则使用 v-show 较好
⚫ 如果在运行时条件很少改变,则使用 v-if 较好


v-else
v-if 可以单独使用,或配合 v-else 指令一起使用:
在这里插入图片描述
注意:v-else 指令必须配合 v-if 指令一起使用,否则它将不会被识别!


v-else-if
v-else-if 指令,顾名思义,充当 v-if 的“else-if 块”,可以连续使用:
在这里插入图片描述
注意:v-else-if 指令必须配合 v-if 指令一起使用,否则它将不会被识别!


1.7 列表渲染指令

2. 过滤器

过滤器(Filters)是 vue 为开发者提供的功能,常用于文本的格式化。过滤器可以用在两个地方:插值表达式和 v-bind 属性绑定。

过滤器应该被添加在 JavaScript 表达式的尾部,由“管道符”进行调用,示例代码如下:在这里插入图片描述

2.1 定义过滤器

2.2 私有过滤器和全局过滤器

2.3 连续调用多个过滤器

2.4 过滤器传参

2.5 过滤器的兼容性

过滤器仅在 vue 2.x 和 1.x 中受支持,在 vue 3.x 的版本中剔除了过滤器相关的功能。

2.6 过滤器的注意点

  1. 要定义到 filters 节点下,本质是一个函数
  2. 在过滤器函数中,一定要有 return 值
  3. 在过滤器的形参中,可以获取到“管道符”前面待处理的那个值
  4. 如果全局过滤器和私有过滤器名字一致,此时按照“就近原则”,调用的是”私有过滤器“

watch 侦听器

1. 什么是 watch 侦听器

watch 侦听器允许开发者监视数据的变化,从而针对数据的变化做特定的操作。语法格式如下:在这里插入图片描述

2. 使用 watch 检测用户名是否可用

监听 username 值的变化,并使用 axios 发起 Ajax 请求,检测当前输入的用户名是否可用:在这里插入图片描述

3. immediate 选项

4. deep 选项

如果 watch 侦听的是一个对象,如果对象中的属性值发生了变化,则无法被监听到。此时需要使用 deep 选项,代码示例如下:在这里插入图片描述

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

如果只想监听对象中单个属性的变化,则可以按照如下的方式定义watch 侦听器:在这里插入图片描述

6. 侦听器的格式

1. 方法格式的侦听器

  • 缺点1:无法在刚进入页面的时候,自动触发!!!
  • 缺点2:如果侦听的是一个对象,如果对象中的属性发生了变化,不会触发侦听器!!!

2. 对象格式的侦听器

  • 好处1:可以通过 immediate 选项,让侦听器自动触发!!!
  • 好处2:可以通过 deep 选项,让侦听器深度监听对象中每个属性的变化!!!

计算属性

1. 什么是计算属性

2. 计算属性的特点

特点总结:

  1. 定义的时候,要被定义为“方法”
  2. 在使用计算属性的时候,当普通的属性使用即可

好处:

  1. 实现了代码的复用
  2. 只要计算属性中依赖的数据源变化了,则计算属性会自动重新求值!

axios

axios 是一个专注于网络请求的库!

axios 的基本使用

1. 发起 GET 请求:

axios({ 
    // 请求方式 method: 'GET', // 请求的地址 url: 'http://www.liulongbin.top:3006/api/getbooks', // URL 中的查询参数 params: { 
    id: 1 } }).then(function (result) { 
    console.log(result) }) 

2. 发起 POST 请求:

document.querySelector('#btnPost').addEventListener('click', async function () { 
    // 如果调用某个方法的返回值是 Promise 实例,则前面可以添加 await! // await 只能用在被 async “修饰”的方法中 const { 
    data: res } = await axios({ 
    method: 'POST', url: 'http://www.liulongbin.top:3006/api/post', data: { 
    name: 'zs', age: 20 } }) console.log(res) }) 

在这里插入图片描述

vue-cli

1. 什么是单页面应用程序

2. 什么是 vue-cli

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

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

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

3. 安装和使用

vue-cli 是 npm 上的一个全局包,使用 npm install 命令,即可方便的把它安装到自己的电脑上:npm install -g @vue/cli
基于 vue-cli 快速生成工程化的 Vue 项目:vue create 项目的名称

3.1 vue-cli 的使用

  1. 在终端下运行如下的命令,创建指定名称的项目:
    vue cerate 项目的名称 
  2. vue 项目中 src 目录的构成:
    assets 文件夹:存放项目中用到的静态资源文件,例如:css 样式表、图片资源 components 文件夹:程序员封装的、可复用的组件,都要放到 components 目录下 main.js 是项目的入口文件。整个项目的运行,要先执行 main.js App.vue 是项目的根组件。 

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述



4. vue 项目的运行流程

vue 组件

1. 什么是组件化开发

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

2. vue 中的组件化开发

3. vue 组件的三个组成部分

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

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

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

3.1 template

注意:

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

3.2 script

3.3 style

4. 组件之间的父子关系

在这里插入图片描述

组件在被封装好之后,彼此之间是相互独立的,不存在父子关系 在使用组件的时候,根据彼此的嵌套关系,形成了父子关系、兄弟关系

4.1 使用组件的三个步骤

在这里插入图片描述

4.2 通过 components 注册的是私有子组件

4.3 注册全局组件

在 vue 项目的 main.js 入口文件中,通过 Vue.component() 方法,可以注册全局组件。示例代码如下:在这里插入图片描述

5. 组件的 props

5.1 props 是只读的

vue 规定:组件中封装的自定义属性是只读的,程序员不能直接修改 props 的值。否则会直接报错:在这里插入图片描述
要想修改 props 的值,可以把 props 的值转存到 data 中,因为 data 中的数据都是可读可写的!在这里插入图片描述

5.2 props 的 default 默认值

在声明自定义属性时,可以通过 default 来定义属性的默认值。示例代码如下:在这里插入图片描述

5.3 props 的 type 值类型

5.4 props 的 required 必填项

在声明自定义属性时,可以通过 required 选项,将属性设置为必填项,强制用户必须传递属性的值。示例代码如下:在这里插入图片描述

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

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

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

为每个组件分配唯一的自定义属性,在编写组件样式时,通过属性选择器来控制样式的作用域,示例代码如下:在这里插入图片描述

6.2 style 节点的 scoped 属性

为了提高开发效率和开发体验,vue 为 style 节点提供了 scoped 属性,从而防止组件之间的样式冲突问题:在这里插入图片描述

6.3 /deep/ 样式穿透

如果给当前组件的 style 节点添加了 scoped 属性,则当前组件的样式对其子组件是不生效的。如果想让某些样式对子组件生效,可以使用 /deep/ 深度选择器。在这里插入图片描述

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/112808.html

(0)
上一篇 2026-01-15 22:15
下一篇 2026-01-15 22:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信