首页 > 其他分享 >Vue学习-07

Vue学习-07

时间:2022-11-02 20:46:13浏览次数:56  
标签:Vue 07 age value 学习 vue let setup name

一、Vue3介绍

1、性能的提升

  • 打包大小减少41%
  • 初次渲染快55%,更新渲染快133%
  • 内存减少54%

2、源码的升级

  • 使用Proxy代替defineProperty实现响应式
  • 重写虚拟DOM的实现和Tree-Shaking

3、拥抱TypeScript

  • Vue3可以更好的支持TypeScript

4、新的特性

  Compostition API(组合API)

  • setup配置
  • ref与reactive
  • watch与watchEffect
  • provide与inject

  新的内置组件

  • Fragment
  • Teleport
  • SuSpense

  其它改变

  • 新的生命周期钩子
  • data 选项应始终被声明为一个函数
  • 移除keyCode支持作为 v-on 的修饰符

5、组合式API和配置项API

  • 使用组合式API
  • 配置项API
    	{
            name:'xx',
            data:function(){},
            methods:{}
        }

二、创建Vue3项目的两种方式

vue-cli:创建vue2和vue3(跟之前一样)

vite:创建vue3

  npm init vue@latest

vite创建另一种方式:创建vue3.0.4版本

  npm init vite-app <project-name>

进入工程目录

  cd <project-name>

安装依赖

  npm install

运行

  npm run dev

以后在页面中的this,已经不是vue2中的vc对象了,是一个代理对象

三、setup函数

vue 新增的setup配置项函数

  • 在里面可以定义变量
  • 定义函数
  • 必须要return 变量和函数,在模板中才能使用
<template>
  <h2>{{ name }}</h2>
  <h3>{{ age }}</h3>
  <button @click="handleClick">点我看小姐姐</button>
  <br>
  <button @click="handleAdd">铁铁 点我,age+1</button>
</template>

<script>


export default {
  name: 'App',
  setup() {   // setup中没有this了
    // 以后所有的变量定义函数编写,都写在这个函数中
    // 定义变量 如果这么写,变量渲染没问题,但是没有响应式,页面变了,变量不会变
    let age = 19
    let name = 'lqz'
    // 定义函数
    function handleClick() {
      alert('嗨~小姐姐')
    }
    let handleAdd = () => {
      console.log('加加加')
      age=age+1
      console.log(age)
    }
    // 函数必须有返回值
    return {
      age, name, handleClick, handleAdd
    }

  }
}
</script>

四、ref和reactive

导入使用:import {ref,reactive} from 'vue'

基本数据类型(数字、字符串、布尔值)如果要加响应式:使用ref包裹,在模板中之间使用。js通过对象.value取值

对象、数组通过使用reactive,ref可以包对象类型,但是用的时候必须.value

<template>
  <h2>{{ name }}</h2>
  <h3>{{ age }}</h3>
  <br>
  <button @click="handleAdd">点这点这,age+1</button>
  <br>
  <button @click="handleChangeName">点我看name变化</button>
</template>

<script>

import {ref, reactive} from 'vue'

export default {
  name: 'App',
  setup() {
    let age = ref(19) // age 已经不是数字了,是RefImpl的对象
    let name = ref('lqz')
    let handleAdd = () => {
      console.log('我要开始加了,age是', age)
      age.value = age.value + 1
      console.log('我要开始加了,age是', age.value)
    }
    function handleChangeName(){
      name.value=name.value+'?'
      console.log(name)
    }

    return {
      age, name, handleClick, handleAdd,handleChangeName
    }

  }
}
</script>

五、计算和监听属性

计算属性

export default {
  name: 'App',
  // computed:{
  //   fullName:function (){}
  // },
  setup() {
    // 1 计算属性案例1
    // let firstName = ref('张')
    // let lastName = ref('初安')
    // // 定义计算属性
    // let fullName = computed(() => {
    //   return firstName.value + lastName.value
    // })

    // 2 计算属性案例2
    let person = reactive({
      firstName: '张',
      lastName: '初安',
    })
    // 定义计算属性
    person.fullName = computed({
      get() {
        return person.firstName + '-' + person.lastName
      },
      set(value) {
        console.log(value)
        const nameArr = value.split('-')
        person.firstName = nameArr[0]
        person.lastName = nameArr[1]

      }
    })
    return {
      person
    }


  }
}

监听属性

import {computed, watch, ref, reactive, watchEffect} from 'vue'

export default {
  name: 'App',
  setup() {
    // 1 计算属性案例1
    let name = ref('lqz')

    // 定义监听属性
    watch(name, (newValue, old) => {
      console.log('name变了')
      // console.log(old)
      // console.log(newValue)
    })
    // vue3 多的watchEffect,只要函数中使用的变量发生变化,它就会触发
    watchEffect(() => {
      // 只要该函数中使用的变量发生变化,它就会触发
      // let a = name.value + '?'
      console.log('watchEffect配置的回调执行了')
    })
    return {
      name
    }


  }
}

六、生命周期

Vue3.0中可以继续使用Vue2.x中的生命周期钩子,但是有两个被更名:

  • beforeDestroy改名为beforeUnmount
  • destroyed改名为unmounted

Vue3.0也提供了Composition API形式的生命周期钩子,与Vue.x中钩子对应关系如下:

beforeCreate setup()
created setup()
beforeMount onBeforeMount
mounted onMounted
beforeUpdate onBeforeUpdate
updated onUpdated
beforeUnmount onBeforeUnmount
unmounted onUnmounted

七、hooks

什么是hooks?

本质是一个函数,把setup函数中使用的Composition API进行了封装

类似于vue2.x中的mixin

自定义hook的优势

  • 复用代码 让setup中的逻辑更清楚易懂

hook/usePoint.js

import {onMounted, onUnmounted, reactive} from "vue";

export default function () {
    let p = reactive({
        x: 0,
        y: 0
    })

    function getPoint(event) {
        console.log(event)
        p.x = event.pageX
        p.y = event.pageY
    }

    // 生命周期钩子的onMounted,当页面挂载就会执行
    onMounted(() => {
        // 给鼠标点击增加监听,当点击鼠标,就会执行这个函数
        window.addEventListener('click', getPoint)
    })
    // 组件被销毁时,把功能去掉
    onUnmounted(() => {
        window.removeEventListener('click', getPoint)
    })

    return p
}

在想使用的组件中引入使用即可

 

<template>
  <h2>x坐标是:{{ p.x }},y坐标是:{{ p.y }}</h2>
</template>

<script>
import {reactive, onMounted, onUnmounted} from 'vue'
import usePoint from '../hook/uesPoint.js'

export default {
  name: "Point",
  setup() {
    let p = usePoint()
    return {p}
  }
}

</script>

<style scoped>

</style>

八、toRefs

setup函数,return{...toRefs(data)}可以解压赋值

export default {
  name: 'App',

  setup() {
    let data = reactive({
      name: 'lqz',
      age: 19,
      isShow: true
    })

    function handleShow() {
      console.log('ssdaf')
      data.isShow = !data.isShow
      data.age++
    }

    return {
      ...toRefs(data),
      handleShow
      // data
    }

  }
}

九、后台管理模板

vue-admin-template-master

  -跑起来

  -package.json 第七行加入

"dev": "set NODE_OPTIONS=--openssl-legacy-provider & vue-cli-service serve",

java版的若依,带权限控制的后台管理模块

python:django-vue-admin

python:flask-vue-admin

go:gin-vue-admin

标签:Vue,07,age,value,学习,vue,let,setup,name
From: https://www.cnblogs.com/zzjjpp/p/16852093.html

相关文章

  • 学习笔记-nuclei
    nuclei非常优秀的漏洞扫描工具,值得学习!免责声明本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.项目地址p......
  • 我的Vue之旅 09 数据数据库表的存储与获取实现 Mysql + Golang
    第四期·将部分数据存储至Mysql,使用axios通过golang搭建的http服务器获取数据。新建数据库DROPDATABASEVUE;createdatabaseifnotexistsvue;usevue;JSONTO......
  • 人生总有跌宕起伏,低潮时学习,高潮时发力
    文/王不留(微信公众号:程序员生存指南)  昨天和朋友吃饭。他已经毕业四年,在职场上走得很稳健,中规中距,没有走偏。 刚入职的一年里,完成了学生角色到职场人员的转变;第二年开......
  • Shell 学习笔记小结
    1.变量声明变量以 ​​a-zA-Z​​ 开头,不包含特殊字符等号两边没有空格不与保留字符重名PATH="/user/yihui"PATH="/user/yihui"使用变量前加$符号,表示引用变量,可以用......
  • JavaWeb三大组件之Servlet学习
    JavaWeb三大组件之Servlet学习平时直接用springmvc较多,都没怎么接触底层的Servlet,导致对一些基本的知识点了解都不够,所以今天专门的抽出时间来学习一下带着问题出发,看下可以......
  • 学习笔记——处理请求与响应的接口(HttpServletRequest、HttpServletResponse)
    2022-10-29处理请求与响应的接口一、HttpServletRequest(1)HttpServletRequest的含义:HttpServletRequest是一个接口,是ServletRequest接口的子接口,内部封装了HTTP请求......
  • JavaWeb三大组件之Filter学习详解
    JavaWeb三大组件之Filter学习详解Filter基本上可以说存在所有的JavaWeb项目中,比如最基本的一个请求参数的编码​​CharacterEncodingFilter​​,大家一般都会配置下,那么filte......
  • vue3简介
    vue3介绍创建vue3项目的两种方式setup函数ref和reactive计算和监听属性计算属性监听属性生命周期hookshook/usePoint.js在想使用的组......
  • Oeasyvim - 如打怪一般的学习
    Oeasyvim-如打怪一般的学习项目地址:https://github.com/TonyK922/oeasy-vim-tutorial这是overmind1980做的一个vim入手到进阶的教程很适合vim初学者.项目共98章......
  • 泰勒公式(学习总结)
    ·泰勒中值定理·麦克劳林展开式·常用函数的麦克劳林展开式1.泰勒中值定理拉格朗日形式的余项皮亚诺形式的余项麦克劳林展开式(取X0=0)常用函数的麦克劳林......