vue学习笔记(超详细)

2023-11-18

文章目录

一. Vue基础

认识Vue.js

Vue是一个渐进式的框架

  1. 渐进式意味着你可以将Vue作为你应用的一部分嵌套其中
  2. Vue的核心库以及其生态系统
  3. Core + Vue-router + Vuex

Vue特点和Web开发常见高级功能

  1. 解耦视图和数据
  2. 可复用的组件
  3. 前端路由技术
  4. 状态管理
  5. 虚拟DOM

Vue安装方式

方式一. 直接CDN引入
可以选择引入开发环境版本 / 生产环境版本

// 开发环境版本, 包含了帮助的命令行警告
<srcipt src='https://cdn.jsdeliver.net/npm/vue/dist/vue.js'></script>

// 生产环境版本, 优化了尺寸和速度
<srcipt src='https://cdn.jsdeliver.net/npm/vue'></script>

方式二. 下载和引入

// 开发环境
https://vuejs.org/js/vue.js

// 生产环境
https://vuejs.org/js/vue.min.js

方式三. NPM安装

通过webpack和CLI的使用

Vue的MVVM

M: Model 数据模型

  • 数据层
  • 数据可能是固定的思数据, 更多的是来自服务器, 从网络上请求下来的数据

V: View 视图模板

  • 视觉层
  • 在前端开发中, 通常是DOM层
  • 作用: 是给用户展示各种信息

VM: View-Model 视图模型

  • 视图模型层
  • 是View和Model沟通的桥梁
  • 一方面实现了Data Binding (数据绑定), 讲Model的改变实时的反应到View中
  • 另一方面实现了DOM Listener (DOM监听), 当DOM发生一些时间 (点击, 滚动, touch等) 时, 可以监听到, 并在需要的情况下改变对应的Data

二. Vue基础语法

语法糖: 简写

生命周期

事物从诞生到消亡的整个过程

模板语法

创建Vue, options可以放什么

  • el
  • data
  • methods
  • 生命周期函数

语法

综合

插值操作 Mustache

  • Mustache语法 (双大括号)
  • 可以直接写变量
  • 可以写简单的表达式

v-once
后面不需要跟任何表达式
表示元素和组件只渲染一次, 不会随着数据的改变而变化

v-html
后面往往跟一个string类型
会将string的html解析出来并渲染

v-text
与Mustache相似, 一般不用, 不灵活

v-pre
用于跳过这个元素和它子元素的编译过程, 用于显示原本的Mustache语法

v-cloak
在某些情况下, 我们浏览器可能会直接显示出未编译的Mustache标签

v-bind
作用: 动态绑定属性
简写: :

条件判断

  • v-if
  • v-else-if
  • v-else

v-show

  • 当条件为false的时
    v-if: 指令的元素, 不会渲染到dom中
    v-show: dom增加一个行内样式display: none

v-on

作用: 绑定事件监听
简写: @
写法:

  • 没有参数的情况下, 可以不写(); 如果方法本身有一个参数, 会默认将原生事件event参数传递进去

  • 如果传入某个参数, 同时需要event时, 可以通过$event传入时间

    点击次数: { {counter}}

修饰符

作用

实际调用

.stop

阻止事件冒泡

event.stopPropagation()

.prevent

阻止默认事件

event.preventDefault()

{keyCode I keyAlias}

监听某个键盘的键帽

.native

监听组件根元素的原生事件

.once

只触发一次回调

v-for遍历数组

// 遍历过程中, 没有使用索引值
<li v-for="item in names">{
  {item}}</li>

// 遍历过程中, 获取索引值
<li v-for="(item, index) in names">{
  {index + 1}} - {
  {item}}</li>

// 遍历对象的时候, 只有一个值, 活得的是value

// 获取对象的key和value 
<li v-for="(value, key) in names">{
  {value}} - {
  {key}}</li>

// 获取对象的key和value和index 
<li v-for="(value, key, index) in names">{
  {value}} - {
  {key}} - {
  {index}}</li>

官方推荐, 使用v-for的时候, 加上一个 key属性
图1
key的作用是为了高效的更新虚拟DOM
key要具有唯一性, 不然就没意义

<li v-for="(item, index) in names" :key="item">{
  {index + 1}} - {
  {item}}</li>

v-model表单绑定

实现表单元素和数据的双向绑定

<div id="app">
    <input type="text" v-model="message">
    {
  {message}}
</div>

cosnt app = new Vue({
    el: '#app',
    data: {
        message: '你好'
    }
})

// 界面的message数据改了, data里面的message就改变了, 是双向的

可以将v-model用于textarea元素

<textare v-model="message"></textare>
<p>输入内容: {
  {message}} </p>

其他方法实现双向绑定

// v-bind绑定一个value属性
// v-on指令给当前元素绑定input事件  
// 下面代码 等同于 使用v-model

<div id="app">
    <input type="text" :value="message" @input="message = $event.target.value">
    {
  {message}}
</div>

cosnt app = new Vue({
    el: '#app',
    data: {
        message: '你好'
    }
})
v-model结合radio类型使用
<div id="app">
    <label for="male">
        <inout type="radio" id="male" value="男" v-model="sex">男
    </label>
    <label for="male">
        <inout type="radio" id="female" value="女" v-model="sex">nv
    </label>
    <h2>您选择的性别是: {
  {sex}}</h2>
</div>

cosnt app = new Vue({
    el: '#app',
    data: {
        sex: '男'
    }
})
v-model结合checkbox类型使用
  • 单选框

    // 需求: 是否同意该协议, 同意后下一步

    下一步

    cosnt app = new Vue({
    el: ‘#app’,
    data: {
    isAgree: false
    }
    })

    // 点击文字部分也可以选中

  • 多选框

    您的爱好是: { {hobbies}}

    cosnt app = new Vue({
    el: ‘#app’,
    data: {
    isAgree: false,
    hobbies: []
    }
    })

v-model结合select类型使用

下拉框单选

  • v-model绑定的是一个值

  • 当选中option中一个时, 会将它对应的value赋值到mySelect中

    苹果 橘子 香蕉

    您最喜欢的水果: { {mySelect}}

下拉框多选

  • v-model绑定的是一个数组

  • 当选择多个值时,会将选中的option对应的value添加到数组mySelect中

    苹果 橘子 香蕉

    您最喜欢的水果: { {mySelect}}

值绑定

含义: 动态的给value赋值
1 在前面的value中的值, 都是在定义input的时候直接给定的
2 但真实开发中, input的值可能是从网络获取或定义在data中的
3 可以通过v-bind:value动态的给value绑定值

<div id="app">
    <label v-for="item in nums" :for="item">
        <inout type="checkbox" value="item" :id="item" v-model="hobbies">{
  {item}}
    </label>
    <h2>您的爱好是: {
  {hobbies}}</h2>
</div>

cosnt app = new Vue({
    el: '#app',
    data: {
        hobbies: [],
        nums: ['篮球', '足球', '羽毛球']
    }
})

修饰符

lazy修饰符

  • 前景: v-model默认是在input事件中实时同步输入框的数据的 (容易同步的过于频繁 )

  • 作用: 可以让数据只有在失去焦点或回车时才会更新

number修饰符

  • 前景: 默认情况下, 在输入框中无论输入字母还是数字, 都会被当做字符串类型进行处理
  • 作用: 当做数字类型进行处理

trim修饰符

  • 前景: 输入的内容首位容易有空格
  • 作用: 可以过滤掉内容左右两边的空格

检测数组更新

Vue是响应式, 所以当数据发生变化时, Vue会自动检测数据变化, 视图会发生对应的更新.

Vue中观察数据编译的方法 – 用它们改变数组会触发视觉更新

数组响应式方法

作用

push()

在数组中最后增加元素

pop()

删除数组中最后一个元素

shift()

删除数组中的第一个元素

unshift()

在数组最前面添加元素

splice()

删除 / 插入 / 替换元素

sort()

xx

reverse()

xx

数组未响应

作用

filter()

xxxxxxx

concat()

xxxxxxx

slice()

xxxxxxx

计算属性 computed

使用: 需要将多个数据结合起来进行显示的时候

<div id='app'>

 // 使用拼接的方法 -- 语法太过繁琐
 <h2>{
  {firstName + '' + lastName}}</h2>
 <h2>{
  {firstName}} {
  {lastName}}</h2>
 
 // 使用方法
 <h2>{
  {getFullName()}}</h2>
 
 // 使用计算属性 -- 看起来最舒服 最好
 <h2>{
  {fullName}}</h2>
</div>


const app = new Vue({
    el: '#app',
    data:{
        firstName: 'li',
        lastName: 'er'
    },
    // 计算属性
    computed: {
        fullName: function () {
            reture this.firstName + '' + this.lastName
        }
    },
    // 方法
    methods: {
        getFullName () {
            reture this.firstName + '' + this.lastName
        }
    }
})

计算属性setter和getter

<div id='app'>
 <h2>{
  {fullName}}</h2>
</div>


const app = new Vue({
    el: '#app',
    data:{
        firstName: 'li',
        lastName: 'er'
    },
    // 计算属性
    computed: {
        fullName: {
            // 一般没有set方法 
            set: function (value) {
                
            },
            // 只读属性
            get: function () {
                reture this.firstName + '' + this.lastName
            }
        }
    }
})

上面案例的写法是简写. 完整写法是调用了get();

computed / methods区别

多次使用的时候

  • methods: 每次都会调用
  • computed: 计算机会缓存, 不变的情况下只调用一次

fulters过滤器

<div id='app'>
 <h2 {
  {aaa | showA}}></h2>
</div>


const app = new Vue({
    el: '#app',
    data:{
        aaa: 'li'
    },
    // 过滤器
    fulters: {
        showA (value) {
        return;
    }
})

三. 组件化开发

组件的基本介绍

注册组件的基本步骤

  1. 调用Vue.extend()方法 - 创建组件构造器

  2. 调用Vue.com

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue学习笔记(超详细) 的相关文章

  • Vue:单个网站可以使用多个 Vue 应用程序吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我有一个 Hugo 静态网站 我正在使用 Vue 使其动态化 我们正在转型 长期计划尚未确定 但在中期阶段我们正在使用 Vue 我已经在一个页面
  • “.builders['browser']”应该具有必需的属性“class”

    使用 npm install 成功安装依赖项后 在运行服务器时出现以下错误 Schema validation failed with the following errors Data path builders browser shou
  • 将一个 div 放置在另一个 div 的底部

    我有外部 div 和内部 div 我需要将内部 div 放在外部 div 的底部 外层div是有弹性的 例如宽度 70 我还需要将内部块居中 所述化妆的简单模型如下图所示 已在 Firefox 3 Chrome 1 和 IE 6 7 和 8
  • 从 UnityWebGL jslib 返回字符串

    我想使用 jslib 来获取网址参数 像这样的代码 jslib GetUrl function var s var strUrl window location search var getSearch strUrl split var g
  • 如何在Vuejs中动态管理页面标题?

    我构建一个应用程序 我有一个带有页面标题的标题 目前 我使用视图路由器来定义我的标题 path events name events component Events meta title Liste des v nements 在我的刀片
  • IE 中的文件上传按钮和奇怪的文本光标行为

    我构建了一个上传按钮 其格式类似于典型的 html 按钮 而不是浏览器标准文件上传表单 该方法是设置锚元素的样式并在顶部覆盖透明文件输入元素 这种方法在除 IE 之外的所有浏览器中都可以正常工作 在 IE 中 当用户单击上传按钮时 会出现一
  • html输入数字,min + step,使step忽略min?

    是否有可能使step忽略min属性
  • 如何以编程方式添加 Vue 3 组件?

    Vue 3 没有 Vue extend 方法 因此这里的示例不起作用 https css tricks com creating vue js component instances programmatically https css t
  • 网页执行回发时如何停止在注册表单上?

    我正在做我的最后一年的项目 其中 我在一页上有登录和注册表单 WebForm 当用户点击锚点时Sign Up下拉菜单ddlType 隐藏 和文本框 txtCustName txtEmail and txtConfirmPassword 显示
  • 通过jquery ajax()和serialize()提交html表单

    我想通过 jquery ajax 提交此表单 这是我所做的 但它不起作用 即表单正在提交并刷新页面 但我没有看到响应 即在同一页面上打印数组 HTML
  • WebElement 上的 Selenium WebDriver“find_element_by_xpath”

    我正在尝试使用以下行查找元素 elements driver find elements by xpath div class Display 一旦我有了元素 我知道有两个 显示 我希望能够使用第二个元素并在其中找到一个特定元素 如下所示
  • 跳过解析 CODE 标签内的 BBCode

    我正在使用以下方法解析 BBCoderegex以便将其替换为 HTML 我现在被困住了 因为 code 标签解析 基本上 当你这样做时 code b this is bb b u code in u i code i code 它不应该取代
  • CSS 省略号与内联元素?

    我已经调整了 jQuery UI MultiSelect Widget 以便文本将显示所有选定的标签 但如果选择显示太多元素 则文本将被修剪和省略 我是这样做的 ui multiselect selected text display bl
  • 与 contenteditable 相关的用户事件

    I am a beginner in Javascript HTML5 假设我有一个 contenteditable div 我的 HTML5 窗口中的 block level 元素 是什么详尽的用户可以通过用户交互修改此元素 或某些子元素
  • 列表的 CSS 计数器

    我正在尝试在我的有序列表上使用 css 中的计数器增量 但它不起作用 这就是我想要显示的内容 1 Acknowledgements 1 1 blah blah 1 2 blah blah 1 3 blah blah 2 Risk State
  • 为什么我必须将所有脚本放入 jquery mobile 中的index.html

    我在我的phonegap jquerymobile 项目中使用 mobile changepage 进行重定向 然而让我困惑的是我需要将所有页面的脚本放在同一个文件index html中 如果不是 则重定向页面无法执行其标头中的函数 例如
  • 创建便利贴(便利贴)[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在设计一个网页 我想在我的页面中使用便利贴 便利贴 其中 当我们单击添加按钮时会添加每个便签 便签的颜色必须随机变化 并且必须倾斜并且
  • 如何在 vuejs 中防止/停止点击传播

    我有一个递归列表 树 每个元素都有一个 click sayHello el id 现在的问题是 因为它是一个嵌套列表 例如 list element 0 01 list el 1 01 list el 2 01 list el 1 02 l
  • 一个输入字段,多个名称

    在 HTML 表单中 如何从一个输入字段获取两个姓名 是否可以通过隐藏的输入字段 如何 我试图使隐藏字段值动态等于非隐藏字段值 这样无论用户写什么 它们都相等 但我确信它不起作用 而不是像这样的东西是否会起作用工作 Here http ww
  • 如何在纯 HTML 页面中返回特定的 HTTP 状态代码

    Google 建议当网站暂时不可用时返回 503 HTTP 响应 我有一些纯 HTML 网站 如何在纯 HTML 网站中返回 503 状态 我使用的是带有 Apache 的 Linux 机器 您必须在服务器上而不是在 HTML 文件中设置状

随机推荐

  • 开源库jemalloc简介

    jemalloc是通用的malloc 3 实现 它强调避免碎片和可扩展的并发支持 它的源码位于https github com jemalloc jemalloc 最新稳定版本为5 2 1 glibc的内存分配算法是基于dlmalloc实现
  • Two Arithmetic Progressions

    Two Arithmetic Progressions 题目链接 题意 思路 AC代码1 include
  • .NET Core + K8S 玩转容器编排

    Production Grade Container Orchestration Automated container deployment scaling and management 生产级别的容器编排系统 自动化的容器部署 扩展和管
  • RTMP协议与RTSP协议比较

    考虑做一个手机直播系统 首先需要指定一个合理的技术方案 由于自己以前不是搞多媒体这块 对流媒体开发不熟悉 自己的理解思维总习惯用java web开发的惯性走 先指定一个大体的框架 不管对还是错 先考虑其技术可行性 框架的指定 首先取决于自己
  • 代码走查——项目走向成功的锦囊之一

    说起代码走查 相信每个人都不陌生 但为什么要执行代码走查 什么时候来执行代码走查 如何有效执行代码走查 很多人的看法和见解都不一样 一般的看法 认为代码走查是一种非正式的代码评审技术 它通常在编码完成之后由代码的作者向一组同事来讲解他自己编
  • mysql5.7防火墙_mysql 5.7.13 winx64安装配置方法图文教程(win10)

    本文实例为大家分享了mysql 5 7 13 winx64安装配置方法图文教程 供大家参考 具体内容如下 下载 安装 1 解压下载好的mysql 5 7 13 winx64 zip到你需要安转的目录 eg D mysql 2 配置解压目录下
  • openwrt用git https错误:fatal unable to find remote helper for ‘https‘

    opkg update opkg remove git opkg install git http opkg install ca bundle
  • java连接多个mysql_java – MySql连接太多了

    使用您的方法 如果在调用conn close 之前抛出任何异常 则永远不会关闭连接 您需要在try块中获取它 以及语句和结果集 并在finally块中将其关闭 无论是否抛出异常 都将始终执行finally中的任何代码 有了这个 您可以确保关
  • 使用React实现时间的天数,小时数,分钟数之间的自动转化

    由于公司项目需要使用React实现时间的天数 小时数 分钟数之间的自动转化 在遇了很多坑后终于解决了问题 需要实现的功能 当用户在输入小时数的时候 超过24小时就自动转化为相应的天数 当用户在输入分钟数的时候 超过60分钟以上就要自动转化成
  • 深度学习-算法篇

    机器学习 学而不思 深度学习 反省自查 卷积神经网络 CNN CNN 的价值 1 能够将大数据量的图片有效的降维成小数据量 并不影响结果 2 能够保留图片的特征 类似人类的视觉原理 CNN 的基本原理 1 卷积层 主要作用是保留图片的特征
  • Linux文件编程常用函数详解——lseek()函数

    lseek 函数的头文件和形式 include
  • 深圳新政!12大产业将获得大力扶持!

    1月4日 深圳市发布 深圳市数字经济产业创新发展实施方案 2021 2023年 以下简称 实施方案 为未来三年发展指明方向 注 文末可查看 深圳市数字经济产业创新发展实施方案 2021 2023年 原文件 深圳市筛选出十二大细分领域给予重点
  • 你知道项目的属性有哪些吗?

    项目的外资特征应该是其内在的属性 那么项目的属性都有哪些 项目的属性可以分为下面4各方面 项目有多目标属性 项目的目标又分为 成果性目标和约束性目标 成果性目标是一系列技术指标定义的 同时受到多种条件的约束 而约束性目标是多重的 所以项目有
  • 基于Java Socket通信实现聊天室功能

    目录 1 socket简介 2 架构图 3 服务器端详细过程 4 客户端详细过程 5 完整代码 1 socket简介 socket 翻译为 套接字 是计算机之间基于tcp协议的一种连接 两台存在socket连接的计算机可以发送 接收数据 在
  • Python与Stata在数据处理上的区别

    转自 微点阅读 https www weidianyuedu com 本节旨在演示如何在 pandas 中做各种类似Stata的操作 按照惯例 我们按如下方式导入 pandas 和 NumPy 计量经济学服务中心import pandas
  • 计算机中缺少vcruntime140d.dll (附下载链接,亲自试用可用)

    vcruntime140d dll下载地址 链接 https pan baidu com s 1bSigFLZHsjVbhdGs3zykGA 提取码 l0u2 win10系统 将dll复制到 C Windows SysWOW64 目录下 再
  • DBSCAN点云聚类

    1 DBSCAN算法原理 DBSCAN是一种基于密度的聚类方法 其将点分为核心点与非核心点 后续采用类似区域增长方式进行处理 下图为DBSCAN聚类结果 可见其可以对任意类别的数据进行聚类 无需定义类别数量 DBSCAN聚类说明 DBSCA
  • 网络-----浅析IP数据报格式及TCP/UDP报文段首部格式

    IP数据报的格式 先来上张图在解释 来看看每个字段的具体含义 只讨论IPV4的情况 1 版本 占4位 指IP协议的版本 通信双方使用IP协议的版本必须一致 例 使用IPV4即填4 2 首部长度 占4位 顾名思义 这个字段就是标识了IP数据报
  • nginx 部署多个vue项目 多文件方式 conf.d/*.conf

    在nginx conf目录下新建conf d文件夹 nginx conf ngxin conf worker processes 1 events worker connections 1024 http include mime type
  • vue学习笔记(超详细)

    文章目录 一 Vue基础 认识Vue js Vue安装方式 Vue的MVVM 二 Vue基础语法 生命周期 模板语法 创建Vue options可以放什么 语法 综合 v on v for遍历数组 v model表单绑定 v model结合