首页 > 其他分享 >vue3

vue3

时间:2022-11-02 21:44:07浏览次数:49  
标签:vue name setup value let vue3 age

Vue3

vue3介绍

性能的提升

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

源码的升级

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

拥抱TypeScript

Vue3可以更好的支持TypeScript

新的特性

  • Composition API(组合API)

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

  • 新的内置组件

    ​ Fragment
    ​ Teleport
    ​ Suspense

  • 其他改变

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

组合式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

    1.进入工程目录

    cd

    2.安装依赖

    npm install

    3.运行

    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 形式的生命周期钩子,与Vue2.x中钩子对应关系如下:

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

hooks

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 第7行加入
    "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,name,setup,value,let,vue3,age
From: https://www.cnblogs.com/nirvana001/p/16852600.html

相关文章

  • vue3
    vue3vue3介绍1.性能的提升打包大小减少41%初次渲染快55%,更新渲染快133%内存减少54%2.源码的升级使用Proxy代替defineProperty实现响应式重写虚拟DOM的实现和Tre......
  • vite_vue3自动引入
    //github地址:https://github.com/antfu/unplugin-auto-import1.npmi-Dunplugin-auto-import2.vite.config.tsimportAutoImportfrom'unplugin-auto-import/vi......
  • vue3
    目录回顾vue-router路由守卫vue3一、介绍二、创建vue3项目的两种方式三、setup函数vue3新增的setup配置项函数的特点此时的变量age值不能够和渲染的一样增减,因为没有响应......
  • vue3简介
    vue3介绍创建vue3项目的两种方式setup函数ref和reactive计算和监听属性计算属性监听属性生命周期hookshook/usePoint.js在想使用的组......
  • Vue3学习笔记(四)——组件、生命周期
    一、组件如果我们将一个页面中所有的处理逻辑全部放在一起,处理起来就会变得非常复杂,而且不利于后续的管理以及扩展,但如果,我们将一个页面拆分成一个个小的功能块,每个功能......
  • 学习vue3(四)(生命周期,父子组件传参,动态组件)
    组件的生命周期简单来说就是一个组件从创建到销毁的过程成为生命周期在我们使用Vue3组合式Api是没有 beforeCreate和 created这两个生命周期的,用setup函数代替,......
  • vue3-组合式api-watch,watchEffect
    <template> <div>  {{counter}}  <button@click="changeCounter">改变counter</button>  <br/>  {{user.name}}  <button@click="chan......
  • vue3 结合 element-plus 框架实现增删改查功能(不连接数据库)
    ......
  • 学习Vue3 (三)
    computed用法计算属性就是当依赖的属性的值发生变化的时候,才会触发他的更改,如果依赖的值,不发生变化的时候,使用的是缓存中的属性值。1函数形式<template><div>......
  • 学习vue3(二)
    reactive用来绑定复杂的数据类型例如对象数组,他是不可以绑定普通的数据类型这样是不允许会报错绑定普通的数据类型我们可以使用昨天讲到ref你如果用ref去绑定对象......