Vue2+Vue3学习

一套用于构建用户界面的渐进式框架

基于数据动态渲染页面

1.搭建Vue开发环境

官网文档找

部分构建vue

2.Hello小案例(vue3)

el:指定挂载点 配置选择器,指定vue管理的哪个盒子

data:提供数据

vue具有响应式特性

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="app">
             <h1>{{msg}}</h1>
    </div>
    <!-- 引入vue模块 -->
     <script type="module">
            import {createApp} from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js';
            createApp({
                data(){
                    return{
                        //定义数据
                        msg:'hello vue'
                    }
                }

            }).mount("#app")
     </script>
</body>
</html>

Vue指令

指带有v-前缀的特殊标签属性

v-html:设置内部的innerhtml 修改页面结构和内容

v-show:切换css的display:none来控制显示隐藏(简单的隐藏控制)

v-if:根据判断条件控制元素的创建和移除(条件渲染)

v-on

函数里调用自身参数:this.money

v---bind

v-bind使用值,下面的data中也需要提供

v-for

v-for="(item,index) in 数组" item每一项,index下标

中的key属性 :key="唯一标识" 需要给元素加上唯一标识,便于vue进行列表项的正确排序复用

v-bind

3.模板语法(vue3)

html 复制代码
<!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>初识Vue</title>
    <!-- 引入Vue -->
    <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
</head>

<body>

    <!-- 准备好一个容器 -->
    <div id="app">
        <h1>Hello,{{name}}</h1>
        <hr>
        <h1>指令语法</h1>
            <a v-bind:href="url">点我去百度</a>
    </div>

<script>
  const { createApp } = Vue
  const x=createApp({
    data() {
      return {
        name: 'liuben',
        url:"http://www.baidu.com"
      }
    }
  })
  x.mount('#app')
</script>
</body>

</html>

1.插值语法

{{xxx}} 用于解析标签体内容 xxx为js表达式

2.指令语法

v-bind:href="xxx"(可简写成:href="xxx") 用于解析标签 xxx为js表达式

4.数据绑定

v-model

只能应用在表单类元素(输入类元素) 双向数据绑定->可以快速获取或设置表单元素内容

1.数据变化->视图自动更新 2.视图变化->数据自动更新

v-model:value可以简写为v-model,因为v-model就是收集value值

单向绑定只有红(只能从data流向页面),双向绑定红粉

html 复制代码
<!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>数据绑定</title>
    <!-- 引入Vue -->
    <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
<div id="root">
    单向数据绑定:<input type="text" v-bind:value="name"><br>
    双向数据绑定:<input type="text" v-model:value="name">
</div>

<script>
  new Vue({
    el:'#root',
    data:{
      name:'liuben'
    }
  })
</script>
</body>
</html>

v-model绑定后自动选取

指令修饰符

5.计算属性

基于现有的数据,计算出来的新属性。依赖的数据变化,自动重新计算

使用计算属性不用加(),它是属性不是函数

computed计算属性 vs methods方法

6.watch侦听器(监视器)

监视数据变化,执行一些业务逻辑和异步操作

1.简单写法->简单类型数据,直接监听

防抖:延迟执行->干啥事先等一会,延迟一会,过一段时间再执行

2.完整写法->添加额外配置项

deep:true 对复杂类型深度监视(对所有属性监视)

immediate:true 初始化立刻执行一次handler方法

7.生命周期

创建 挂载 更新 销毁

Vue生命周期函数(钩子函数)

Vue生命周期过程中,会自动运行一些函数,被称为生命周期钩子->让开发者可以在特定阶段运行自己的代码

get结果传参

8.工程化开发和脚手架

工程化开发模式:基于构建工具(例如:webpack)的环境中开发vue

Vue CLI全局命令工具 帮我们快速创建一个开发Vue项目的标准化基础架子

脚手架目录文件

main.js:导入app.vue,基于app.vue创建结构渲染index.html

9.组件

组件化:一个页面可以拆分成一个个组件,每个组件有着自己独立的结构、样式、行为

根组件:整个应用最上层的组件,包裹所有普通小组件

app.vue三部分 template:结构 script:js逻辑 style:样式

组件注册

组件注册的两种方式:

1.局部注册:只能在注册的组件内使用

(1)在components下注册vue文件(app.vue三部分 )

(2)在使用的组件内导入并注册

import语句要卸载script标签内部

export去导出

使用:当成html标签使用 <组件名></组件名>

2.全局注册:所有组件内都能使用

scoped

默认的style样式,会作用于全局组件

加上scoped属性的style样式,只会作用于当前组件

原理:对当前组件内标签都被添加data-v-hash值的属性

data

组件的data选项必须是一个函数

保证每个组件实例都能维护自己独立的一份数据对象

组件通信

组件的数据是独立的,无法直接访问其他组件的数据

父子与非父子关系

父子通信:

1.父组件通过props将数据传递给子组件

2.子组件利用$emit通知父组件修改更新

v-model原理

本质上是一个语法糖。例如应用在数据框上,就是value属性和input事件的合写

提供数据的双向绑定:1.数据变,视图跟着变:value 2.视图变,数据跟这变:@input

此处$event用于在模板中,获取事件的形参

表单类组件封装&v-model简化代码

实现子组件与父组件的数据的双向绑定(因为不能直接用v-model)

父传子:数据应该是父组件props传递过来的,v-model拆解后去绑定数据

子传父:监听输入,子传父传值给父组件修改(因为收集来的数据要从父组件上传)

父传子

子传父

父组件v-model简化代码,实现子组件和父组件数据双向绑定

sync修饰符

可以实现子组件与父组件数据的双向绑定,简化代码

prop属性名,可以自定义,非固定value

ref和$refs

利用ref和$refs可以用于获取dom元素或组件实例

查找范围->当前组件内(更精确稳定)

querySelector 查找范围->整个页面满足的盒子,同名的不需要的盒子也搞上了

相关推荐
@大迁世界2 小时前
17.在 React 中如何根据条件决定渲染哪个组件?
前端·javascript·react.js·前端框架·ecmascript
小则又沐风a2 小时前
类和对象----最终篇
java·前端·数据库
travel_wsy2 小时前
PLY三维模型在vue中的展示
前端·javascript·vue.js
蓝净云2 小时前
RESP 协议的工作原理
学习
还是大剑师兰特2 小时前
Vite + Vue 3 一体化开发调试插件:vite-plugin-vue-devtools
前端·javascript·vue.js
晓得迷路了2 小时前
栗子前端技术周刊第 123 期 - axios 包遭入侵、Babylon.js 9.0、Node.js 25.9.0...
前端·javascript·axios
Cobyte2 小时前
如何使用飞书机器人连接本地 AI Agent
前端·aigc·ai编程
starsky762382 小时前
深入理解 Web 容器:从反射扫描到服务器启动的完整实现
java·前端·tomcat
拆房老料2 小时前
从 Euro-Office 说起:Office 不是编辑器,是一套复杂系统工程
前端·编辑器·开源软件·开源协议