Vue2 day-01

news2024/11/24 5:00:30

目录

一. Vue 是什么?

1.1 什么是渐进式

1.2 自底向上逐层应用

二. 相关概念

2.1 为什么学习vue

2.2 库和框架区别

2.3 三大主流框架

三. vue基本使用

3.1 体验vue的使用

3.2 相关知识分析

3.3 插值表达式{{}}

3.4 vue-devtools

四. 指令

4.1 v-cloak

4.2 v-text

4.3 v-html

比较{{}}、v-text与v-html的区别

4.4 v-pre

4.5 v-once

4.6 v-model(模特)(极为重要)

4.6.1 双向数据绑定

4.6.2 v-model修饰符

4.7 MVC 和 MVVM设计模式

4.7.1 什么是 MVC 架构?

4.7.2 什么是MVVM?

4.7.3 MVVM思想总结

4.8 v-on(重点)

4.8.1 v-on事件函数中传入参数

4.8.2 事件修饰符

4.8.3 按键修饰符

4.8.4 自定义按键修饰符别名


一. Vue 是什么?

Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架

Vue 被设计为可以自底向上逐层应用,Vue的核心是只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。

2014年2月,Vue.js正式发布

2015年10月27日,正式发布1.0.0

2016年4月27日,发布2.0的预览版本

2020年09月18日,Vue.js 3.0 正式发布

2022年02月07日,官网网站默认版本修改为3.x

官网地址: https://cn.vuejs.org/ (作者: 尤雨溪)

1.1 什么是渐进式

  • 渐进式:提供足够的选择,并且没有很多强制性的要求, 想用什么就用什么, 不必全都使用。

  • Vue提供了一系列的技术,并不强制开发者一下子就使用它的全部,我们可以选择一个或多个,甚至使用全部,这就是vue的渐进式概念。

  • 声明式渲染->组件系统->客户端路由->集中式状态管理->项目构建

  • 可以针对不同的项目大小采用不同的Vue技术组合搭配

    小:核心库

    中:核心库 + 路由

    大:核心库 + 路由 + 状态管理库

    声明式渲染和组建系统是Vue的核心库所包含内容,而客户端路由、状态管理、构建工具都有专门解决方案。这些解决方案相互独立,你可以在核心的基础上任意选用其他的部件,不一定要全部整合在一起。

1.2 自底向上逐层应用

自底向上逐层应用是由基层开始做起,把基础的东西写好,再逐层往上添加效果和功能。

二. 相关概念

2.1 为什么学习vue

  • 开发更快速,更高效

  • 企业开发都在使用

  • 前端工程师必备技能

2.2 库和框架区别

  • 库: 封装的属性或方法 (例jquery.js)

  • 框架: 拥有自己的规则和元素, 比库强大的多 (例vue.js)

2.3 三大主流框架

web前端三大主流框架:

  • vue是一套用于构建用户界面的渐进式JavaScript框架,Vue的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合。

  • react是一个用来构建用户界面的JavaScript开发框架,主要用于构建UI。

  • Angular是一种用于创建单一应用程序界面的前端框架,具有模块功能强大,拥有自定义命令等优点。

三. vue基本使用

  1. 直接下载源码然后通过路径引入

  • 开发版本:https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js

  • 生产版本:https://cdn.jsdelivr.net/npm/vue@2/dist/vue.min.js

  1. CDN(内容分发网络)

<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<!-- 生产环境版本,优化了尺寸和速度 -->
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.min.js"></script>
  1. 使用 npm 下载(默认安装最新稳定版)

npm init -y
npm i vue

3.1 体验vue的使用

<div id="app">
  {{ message }}
</div>
​
var app = new Vue({
  el: '#app',
  data: {
    message: 'Hello Vue!'
  }
})

3.2 相关知识分析

  • 实例参数分析 el: 元素的挂载位置(值可以是CSS选择器或者DOM元素)

    data:模型数据(值是一个对象)

  • 插值表达式用法{{}}

    将数据填充到HTML标签中

    插值表达式支持基本的计算操作

  • Vue代码运行原理分析

    编译过程的概念(Vue语法→原生语法)

3.3 插值表达式{{}}

  1. 插值表达式是Vuejs中实现数据渲染到页面方式,不用进行dom操作,可以直接将数据从模型到视图

  2. 动态绑定数据

  3. 插值表达式中 不可以写代码片段 会报错

  4. 可以做数据运算

3.4 vue-devtools

学习, 调试vue必备之利器 - 官方提供的,添加到谷歌的扩展程序中,添加后,不要移动

四. 指令

  • vue指令,本质就是html 标签自定义属性

  • vue指令都是以 v- 开头

4.1 v-cloak

  • 防止页面加载时出现闪烁问题

<div v-cloak>
  {{ message }}
</div>
[v-cloak] {
  display: none;
}

4.2 v-text

  • v-text指令用于将数据填充到标签中,作用于插值表达式类似,但是没有闪动问题

  • v-text把值当成普通字符串显示, v-html把值当做html解析

<p v-text="message2"></p>

4.3 v-html

  • 用法和v-text 相似 但是他可以将HTML片段填充到标签中

  • 它与v-text区别在于v-text输出的是纯文本,浏览器不会对其再进行html解析,但v-html会将其当html标签解析后输出。

<p v-html="message3"></p>

比较{{}}、v-text与v-html的区别

1.默认v-text是没有闪烁问题,{{}}存在闪烁的问题

2.v-text一样,v-html也会覆盖掉元素中原本的内容,但是{{}}只会替换自己的这个占位符。

3.前两个向页面渲染普通文本,后者向页面输出html。

4.4 v-pre

  • 显示原始信息跳过编译过程

  • 跳过这个元素和它的子元素的编译过程。

  • 一些静态的内容不需要编译加这个指令可以加快渲染

<p v-pre>{{message3}}</p>

4.5 v-once

  • 执行一次性的插值【当数据改变时,插值处的内容不会继续更新】

<p v-once>{{message}}</p>

4.6 v-model(模特)(极为重要)

v-model是一个指令,v-model只能用在表单元素上及组件(components)中使用

4.6.1 双向数据绑定
  • 当数据发生变化的时候,视图也就发生变化

  • 当视图发生变化的时候,数据也会跟着同步变化

<div id="app">
    <p>用户名:<input type="text" v-model="username"></p>
    <p>密码:<input type="password" v-model="password"></p>
    <p>爱好:
        运动:<input type="checkbox" v-model="hobby" value="爱好">
        写代码:<input type="checkbox" v-model="hobby" value="写代码">
        睡觉:<input type="checkbox" v-model="hobby" value="睡觉">
    </p>
    <p>
        <select v-model="city" >
            <option value="1001">郑州</option>
            <option value="1002">武汉</option>
            <option value="1003">西安</option>
            <option value="1004">青岛</option>
            <option value="1005">杭州</option>

        </select>
    </p>
</div>
<script>
    var app = new Vue({
        el:"#app",
        data:{
            username:"张三",
            password:"",
            hobby:[],
            city:1002
        }
    });
</script>
4.6.2 v-model修饰符

v-model.修饰符="vue数据变量"

  • .number 输入字符串被 parseFloat() 解析转为有效的数字,如果这个值无法被 parseFloat() 解析,则会返回原始的值

  • .trim 去除首尾空白字符

  • .lazy 在change时触发而非input

 <div>
    <div>
      <span>用户名:</span>
      <input type="text" v-model.trim="uname">
    </div>
       <div>
      <span>年龄:</span>
      <input type="text" v-model.number="age">
    </div>
    <div>
      <span>简介:</span>
      <textarea v-model.lazy="intro"></textarea>
    </div>
  </div>

注意点:复选框 checkbox 这种的组合时,data 中的数据,我们要定义成数组,否则无法实现多选。

4.7 MVC 和 MVVM设计模式

设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。

设计模式是对代码分层,引入一种架构的概念。

4.7.1 什么是 MVC 架构?

一个清晰合理的架构是一个复杂程序所必备的. MVVM 是一种软件的架构模式. 但在讲它之前, 要先了解一下 MVC 架构. 在 MVC 架构下, 软件可以分成三个部分: 视图 (View): 用户界面 控制器 (Controller): 业务逻辑 模型 (Model): 数据保存

4.7.2 什么是MVVM?

MVVM是模型,视图,视图模型双向关联的一种设计模式。

  • MVVM,一种设计模式,决定了写代码的思想和层次

    • M: model数据模型 (data里定义)

    • V: view视图 (html页面)

    • VM: ViewModel视图模型 (vue.js源码)

  • MVVM通过数据双向绑定让数据自动地双向同步 不再需要操作DOM

    • 其中涉及的双方:Model(数据),View(视图)

    • 数据到视图: 数据改变,视图也改变

    • 视图到数据: 视图改变,数据也改变

在 MVVM 架构中, ViewModel成为了 View 与 Model 沟通的桥梁, 负责监听 Model 或 View 的修改。 由此实现了 View 和 Model 的 "双向绑定"。当 Model 层数据进行修改时, ViewModel 层检测到了变化, 然后通知 View 层进行相应的视图修改. 反之, 当 View 层做了修改时, Model 层的数据也会得到相应的修改。

4.7.3 MVVM思想总结

在vue中,不推荐直接手动操作DOM,通过数据驱动视图,不要在想着怎么操作DOM,而是想着如何操作数据。

vue源码内采用MVVM设计模式思想, 大大减少了DOM操作, 提高开发效率。

总结:

  • 目的:转变思维, 用数据驱动视图改变, 操作dom的事, vue源码来做。

  • 好处:减少DOM操作,提高开发效率。

4.8 v-on(重点)

  • 用来绑定事件的。

  • 形式如:v-on:click 缩写为 @click。

4.8.1 v-on事件函数中传入参数
<div id="app">
        <div>{{number}}</div>
        <button v-on:click="number++">按钮</button>
        <button @click="number--">按钮2(简写)</button>
        <!-- 如果事件直接绑定函数名称,那么默认会传递事件对象作为事件函数的第一个参数 -->
        <button @click="fun">函数绑定</button>
        <!-- 2、如果事件绑定函数调用,那么事件对象必须作为最后一个参数显示传递,
                 并且事件对象的名称必须是$event -->
        <button @click="fun2(1,2,$event)">函数绑定</button>
    </div>
    <script>
        let app = new Vue({
            el:"#app",
            data:{
                number:10
            },
            methods:{
                fun:function(e){
                    console.log("获取数据",this.number,e.target);
                },
                fun2(a,b,e){
                    console.log("获取数据",a,b,this.number,e.target);
                }
            }
        });
    </script>
4.8.2 事件修饰符

修饰符是由点开头的指令后缀来表示的,在事件处理程序中调用 event.preventDefault()event.stopPropagation() 是非常常见的需求,Vue 不推荐我们操作DOM ,为了解决这个问题,Vue.js 为 v-on 提供了事件修饰符

<!-- 阻止单击事件继续传播 -->
<a v-on:click.stop="handlerStopFn"></a>

<!-- 提交事件不再重载页面 -->
<a v-on:click.prevent="handlerPreventFn"></a>

<!-- 修饰符可以串联   即阻止冒泡也阻止默认事件 -->
<a v-on:click.stop.prevent="handlerFn"></a>

<!-- 只当在 event.target 是当前元素自身时触发处理函数 -->
<!-- 即事件不是从内部元素触发的 -->
<div v-on:click.self="doThat">...</div>

<!-- 注意事项 -->
使用修饰符时,顺序很重要;相应的代码会以同样的顺序产生。因此,用 v-on:click.prevent.self 会阻止所有的点击,而 v-on:click.self.prevent 只会阻止对元素自身的点击。
  • .stop:等同于JavaScript中的event.stopPropagation(),防止事件冒泡

  • .prevent:等同于JavaScript中的event.preventDefault(),防止执行预设的行为(如果事件可取消,则取消该事件,而不停止事件的进一步传播)

  • .once:只会触发一次

  • .capture:与事件冒泡的方向相反,事件捕获由外到内

  • .self:只会触发自己范围内的事件

4.8.3 按键修饰符
  • 在做项目中有时会用到键盘事件,在监听键盘事件时,我们经常需要检查详细的按键。Vue 允许为 v-on 在监听键盘事件时添加按键修饰符

<!-- 只有在 `keyCode` 是 13 时调用 `vm.submit()` -->
<input v-on:keyup.13="submit">

<!-- -当点击enter 时调用 `vm.submit()` -->
<input v-on:keyup.enter="submit">

<!--当点击enter或者space时  时调用 `vm.alertMe()`   -->
<input type="text" v-on:keyup.enter.space="alertMe" >

<script>
	var vm = new Vue({
        el:"#app",
        methods: {
              submit:function(){},
              alertMe:function(){},
        }
    })

</script>

常用的按键修饰符 .enter => enter键 .tab => tab键 .delete (捕获“删除”和“退格”按键) => 删除键 .esc => 取消键 .space => 空格键 .up => 上 .down => 下 .left => 左 .right => 右

4.8.4 自定义按键修饰符别名
  • 在Vue中可以通过config.keyCodes自定义按键修饰符别名

<div id="app">
    <form action="">
        <p>用户名:<input type="text" name="username" v-model="msg" @keyup.skey="selffun">		</p>
    </form>
</div>
<script>
    Vue.config.keyCodes.skey = 83;
    var app = new Vue({
        // 挂载元素
        el: '#app',
        // 数据
        data: {
            msg: ''
        },
        // 方法
        methods: {
            selffun: function(e) {
                console.log(e.keyCode);
                this.msg = e.keyCode;
            }
        }

    });
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2109400.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深信服EasyConnect-Docker部署方式

一、项目简介 让深信服开发的非自由的 VPN 软件 EasyConnect 或 aTrust 运行在 docker 中&#xff0c;提供 socks5 和 http 代理服务和网关供宿主机连接使用。 项目地址&#xff1a; https://github.com/docker-easyconnect/docker-easyconnect 二、图形界面版 EasyConnect&…

Oceanbase 数据库审计

数据加密和访问控制可以大幅降低安全风险&#xff0c;但对于具备权限的用户&#xff0c;仍然需要记录其操作&#xff0c;以防止用户登录信息泄露&#xff0c;或者访问权限被滥用。审计功能可以加强企业对数据安全、合规等方面的要求&#xff0c;是跟踪用户行为最主要的工具。 目…

浏览器百科:网页存储篇-Session storage应用实例(九)

1.引言 在前面的文章中&#xff0c;我们详细介绍了如何在 Chrome 浏览器中打开并使用 Session storage 窗格&#xff0c;进行数据的查看、编辑和管理。作为网页存储技术的重要组成部分&#xff0c;sessionStorage在提升用户体验和数据管理能力方面发挥了重要作用。在本篇《浏览…

NAT技术-将多个内部网络设备映射到一个公共IP地址

问题&#xff1a; 今天上课的时候老师让我们在VMware填同一个子网ip 192.168.196.0&#xff0c;然后给我们的linux镜像都是同一个压缩包&#xff0c;结果我们的静态ip地址都是同一个。 192.168.196.0下面有256个ip地址&#xff0c;范围是192.168.196.0到192.168.196.255。我们…

CP-Net:用于生物细胞解析的实例感知部分分割网络|文献速递--基于深度学习的医学影像病灶分割

Title 题目 CP-Net: Instance-aware part segmentation network for biological cell parsing CP-Net&#xff1a;用于生物细胞解析的实例感知部分分割网络 01 文献速递介绍 实例分割是计算机视觉中的一个经典任务&#xff0c;用于识别图像中每个像素的对象类别&#xff0…

基于Android Studio 实现通讯录—原创

目录 一、项目演示 二、开发环境 三、项目详情 四、项目完整源码 一、项目演示 基于Android Studio 实现通讯录—原创 二、开发环境 三、项目详情 1.启动页 这段代码是一个简单的Android应用程序启动活动&#xff08;Activity&#xff09;&#xff0c;具体功能如下&#xf…

【看雪-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

学习 SSM框架 项目总结

通过指导老师发布的学习SSM框架项目&#xff0c;这次我深刻体会到了SSM整体项目之间的紧连关系。 以下是我自己学习过程中总结出来的经验。 SSM框架 配置 导入核心 spring 组件坐标 将spring相关组件坐标&#xff0c;导入到 pom 文件中 <!--spring、springMVC--><…

集成电路学习:什么是RTOS实时操作系统

RTOS&#xff1a;实时操作系统 RTOS&#xff0c;全称Real Time Operating System&#xff0c;即实时操作系统&#xff0c;是一种专为满足实时控制需求而设计的操作系统。它能够在外部事件或数据产生时&#xff0c;以足够快的速度进行处理&#xff0c;并在规定的时间内控制生产过…

UE5.3 新学到的一些性能测试合计(曼巴学习笔记)

一.简单命令行 stat FPS stat unit //增加GPU渲染时间和变量 stat unitgraph //追加了图表显示 二.查看GPU的消耗。调试GPU渲染用的高级命令 可以记录这一刻各个部分的占用情况,只能看当前的 1.在编辑器下&#xff0c;ctrlShift, 。 2.输入命令行&#xff0c;pr…

硬件-经典的TL431三端稳压管

文章目录 一&#xff1a;TL431三端稳压管1.1 器件说明1.2 电路分析1.3 把TL431设计成一个可调电压源的电路1.4 常用型号1.5 阅读手册1.6 2.5V 电压基准应用电路道友&#xff1a;努力的意义&#xff0c;不在于一定会让你取得多大的成就&#xff0c;只是让你在平凡的日子里&#…

虚幻5|知识点(1)寻找查看旋转,击打敌人后朝向主角

举例说明&#xff0c;我们想让角色一直朝着摄像头&#xff0c;我们控制角色任意位置&#xff0c;都能自行旋转都能朝向摄像头 下面是敌人一直朝向角色&#xff0c;无论主角走向哪个位置&#xff0c;敌人都能朝向主角 start是获取敌人的位置向量大小&#xff0c;Target是获取主…

【复杂系统系列(中级)】复杂系统科学的层级与不确定性方程【代码模拟】

【通俗理解】复杂系统科学的层级与不确定性方程 关键词提炼 #复杂系统科学 #层级结构 #不确定性 #上行因果 #下行因果 #初值敏感 #混沌现象 第一节&#xff1a;层级与不确定性方程的类比与核心概念【尽可能通俗】 1.1 层级与不确定性方程的类比 复杂系统科学的层级与不确定…

游戏玩家新宠:高性能远程控制解决方案

如果你出差一些存在公司电脑上的数据急需用到&#xff0c;这时候有一个远程控制工具就非常方便了。如果你担心一些远程控制软件的安全问题&#xff0c;那就从正规渠道下载&#xff0c;比如向日葵远程控制官网下载就可以得到它官方的软件。我今天给你分享一些安全可靠的远程控制…

基于STELLA系统动态模拟技术及在农业、生态环境等科学领域中的实践应用

STELLA是一种用户友好的计算机软件。通过绘画出一个系统的形象图形&#xff0c;并给这个系统提供数学公式和输入数据&#xff0c;从而建立模型。依据专业兴趣&#xff0c;STELLA可以用来建立各种各样的农业、生态、环境等方面的系统动态模型&#xff0c;为科研、教学、管理服务…

基于C++实现一个房贷计算小程序(含代码)

房贷计算程序&#xff0c;主要实现以下功能&#xff1a; 用户友好的界面&#xff1a;使用文本菜单来引导用户选择功能。支持不同还款频率&#xff1a;例如每季度还款、每半年还款等。支持贷款提前还款&#xff1a;计算提前还款对总支付利息的影响。详细的还款计划表&#xff1…

(二)ASP.NET Core WebAPI项目的启动地址设置

上一篇介绍了ASP.NET Core WebAPI项目创建&#xff0c;可参考&#xff1a; 1.webAPI的访问地址 1) 启动时&#xff0c;选择CoreWebAPI(项目名称)运行项目 可以看到打开浏览器后的地址是&#xff1a;applicationUrl"\"launchUrl 2) 启动时&#xff0c;选择IIS Expre…

C++mutable

文章目录 Claude 讲解基本用法mutable的常见用途注意事项 ChatGpt 讲解1. 基本概念2. 使用示例解释&#xff1a; 3. 适用场景4. 注意事项 lambda 讲解基本语法示例捕获方式使用场景 mutable 和 labmda 一起使用代码&#xff1a;代码分析&#xff1a;输出结果&#xff1a; 在C编…

(详细文档!)JavaSwing图书管理系统+mysql数据库

目 录 1.项目概述及需求分析................................ 1 2.系统设计......................................... 1 2.1程序总体设计......................................... 1 2.2数据库设计........................................... 2 2.3公共模块设计...…

论文学习(一):基于遥感技术的凉山州森林火险预测方法研究

文章目录 摘要部分一、绪论二、研究区历史火情分析2.1凉山州森林火灾年际变化特征2.2凉山州森林火灾月际变化特征2.3凉山州森林火灾空间分布特征2.4森林火灾等级与起火原因分析 三、数据与方法3.1数据来源3.2数据预处理3.3研究方法3.3.1逻辑回归&#xff1a;最大似然估计3.3.2决…