VUE3的有关知识

这篇具有很好参考价值的文章主要介绍了VUE3的有关知识。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

学习vue3的原因

在vue2当中的组件的实例,都是data一块,computed一块,当我们去找某一变量相关的则十分麻烦,vue3是组合式API,vue2是选项式,

vue3的优点:

        1)组合式更易维护

        2)更快的速度

        3)更小的体积

        4)更好的响应式proxy

使用vue3相关脚手架创建项目

VUE3的有关知识,前端,javascript,vue.js

步骤:

1)node -v node版本需至少16.0

2)npm init vue@latest 会创建vue3项目

vue3的组合式

生成的脚手架是npm run dev 执行

如果是vue2,当中,new Vue生成的实例,对于组件是都可以使用的,在创建的实例内,但是vue3的createApp,这个函数,和new Vue一样,会创建实例,且参数是可用和new Vue 一样的,和new Vue效果一样,都是创建实例,只不过这个函数可实例,可用component创建局部组件,只在这个实例内全局使用.只能在vue3使用,底层是vite.

VUE3的有关知识,前端,javascript,vue.js

这里createApp(根组件,传给根组件的prop对象)

setup选项

vue3当中有setup周期函数,在beforeCreate前执行.vue3特有的.

会调用这个函数,将返回值赋给创建的vue实例,当beforecrate之后.因此setup函数内只需要写变量,返回变量即可,且即使是函数methods类比也只需要变量,最后都是作为vue实例的响应式.但是对于创建时对于computed等选项式有响应式函数,但是对于setup的变量,赋的时候没有响应式,直接赋.setup在组件还没创建出之前,就调用,把返回值存.setup之后开始创建实例.

vue3特有的setup关键字

在script标签上写setup关键字,会对标签内类似于setup函数内的,对内只要是变量就返回,赋给实例.

是写了setup内变量都赋给实例.在实例没有创建前,可再写script,export是创建实例.

setup函数内写的都是响应式数据自定义变量.,无法name这种获取信息的变量.

我们如果要写name,需要再写script上写.

setup内没有this.函数调用可没有this.使其this指向null.setup可以代替data,computed,methods等.

用语法糖无需写data等,直接写script setup可以生成响应式的数据实例.

ref和reactive函数响应式

疑问一:为什么开发者不给vue3设置响应式

因为内部还有计算属性不能给所有的都只是响应式.

setup返回的直接赋给,因此如果不含响应式则不会使得渲染模板,重新.

那个变则渲染那些模板.

1)如果不是对象

则从vue导入ref函数,ref(非对象数据)可用生成一个对象,是响应式的,对象的value是该值

2)如果是对象

ref(对象)/reactive(对象)使得响应式.

reactive内部将对象传给proxy的参数,第二个参数写了增删改查的操作,这样会生成proxy响应式对象,proxy的属性和传入对象属性一致,给这些属性做了响应式,当proxy内的这些属性被操作时,会进行get,set等方法,且会有响应式.因此如果对象内的是对象则只会是浅响应.

ref函数内部是是将如果是参数,构造成一个对象,对象的value属性是ref的参数,无论是否是对象.,将对象赋给proxy的value属性,进行响应式.因此value属性的改变可响应式.proxy的第一层改变有响应式.

ref的值,在模板上不用写value,因为会补,但是js是需要的.

setup当中的计算属性

VUE3的有关知识,前端,javascript,vue.js

内部将get的返回值作为ref函数的参数,返回一个ref对象,且给她Object.方法,使得访问ref对象的value或修改是访问.因此计算属性内部是ref对象,可以响应式.当修改会执行set方法.当对应的数据改变,也会重新调用get方法,赋给ref对象的value.这种修改不去访问set.

计算属性访问也是value,ref对象内都是value.reactive响应式也只是第一层,ref生成的prox也只是第一层.

setup当中的watch

setup内些变量即可放到实例对象内,无论什么作用,因此可以是响应式数据,也可以是计算属性.

选项式内部watch也只是当数据变化时,执行内部的函数.

VUE3的有关知识,前端,javascript,vue.js

从vue内导入watch函数,函数内部写参数,第一个参数是需要监督的变量,第二个是函数,内部会生成对这个变量的监督,这个变量如数组,会存储这个变量的值.只是watch函数,形成了一个监督在内存内.

没有赋值到实例上.监督的都是对象,第三个参数是对ref对象监督的一些要求,比如立刻先执行,或者深监督.深层监督会监督所有.

监听ref对象,传参会将值传给她,值是地址.如果将ref对象内的对象属性传给她,也是地址.会对这地址内的属性进行监听,是对传入对象第一层数据监听.如果是数据,不是对象,则需要写成函数,对函数返回值进行监听.因此函数属性监听用箭头函数.

1)监听ref对象,监听ref的value值

2)监听数组,监听每一个元素的value值

3)深层监听deep,value的每一层

4)reactive监听第一层

5)当监听给的是一个地址,则监听该地址内的每一个数据,传递的只是一个数值,需要些函数,箭头函数,但是监听对象属性,即使是对象,也可也写函数,监听返回值对象的第一层.

生命周期钩子函数

VUE3的有关知识,前端,javascript,vue.js

vue3的钩子函数在setup函数用的.这些钩子函数需要vue导入,可以使得执行的时候在对应时间执行钩子函数的参数.vue3的这些钩子函数,需要自己导入执行,能在对应时间,无论多少个,无论在哪执行钩子函数.其他的是选项式钩子函数.这些vue3的钩子函数,在setup内写.vue3仍保存vue2的选项式,只是增加了这些.我们因此只用setup和放入setuo内的函数.

组合式父子通信

 vue3当中子组件,只需要导入,导入就会将这个组件创建vue实例时.保存这个模板.

VUE3的有关知识,前端,javascript,vue.js

父传子

vue2--->props

vue3-->写属性写到子组件上去,在子组件内的setup,在vue2上写props,则会去组件实例找,但是vue3没有选项式,需要自己将这个值取出来,赋值.

VUE3的有关知识,前端,javascript,vue.js

defineProps函数会取得,返回值是一个对象,对象内是参数传递的key,会找到传递的属性值,形成对象,返回.对象的值,如果是对象,则指向同一个父组件的地址,如果不是对象,也是指向静态变量,同一个地址.当父组件修改,子组件访问的也会修改,会触发响应式.

我们通过这个函数,返回了变量props,内有传递的数据.不能解构,因为解构会将数据取出,无论是否对象,只是一个值,则是重新书写一个变量内存,与父组件无关了.当父组件变,这个也不会变.之后执行,也不是父传递的数据,不能随着而变.

子传父

VUE3的有关知识,前端,javascript,vue.js

vue2 是给子组件绑定事件,而子组件触发传递数据

vue3给子组件绑定事件,,但是setup内没有this,无法this.$emit触发组件的事件.

defineEmits返回的值是一个函数,但是这个函数是所一个触发器,函数可以触发.

返回的函数可以1根据传递的参数,进行触发.

Ref获取节点

ref,可以写到标签上,原本是实例上有$ref,但是现在访问不到实例,

ref函数创建响应式对象,但是如果是null,一开始是null,但是当DOM执行完,则这个对象的value变成变量名与ref属性值相同的标签.这个变量当实例生成会赋给实例,当渲染之后这个value是节点对象,重新渲染.以及可以执行这个变量的value.

defineExpose宏函数

setup的属性是默认关闭的,但是defineExpose函数,内部写对象,key和value值,可以放开属性的值.

当获取子组件,获取到实例的方法属性.

emit触发事件,$event第一个函数的参数.

祖先组件和子代组件的数据传输

VUE3的有关知识,前端,javascript,vue.js

vue2是选项式,父组件的provide选项,会使得内部的变量提供.在子组件当中写数组,可以和props,实例有这个变量.

VUE3的有关知识,前端,javascript,vue.js

vue3当中,没有选项式,和vue2一样,会执行provide函数使其能被所有子组件访问.只不过vue2写选项,自动,而这里需要提供provide函数,函数第一个参数key,第二个参数value.

在子组件,原本是选项,使得inject的会绑定到实例上.但现在没有,需要手动写,inject可以绑定.绑定的话,message绑定的是祖先组件的这个数据,当变化时,也会变化.响应到所有的地方.

defineOptions函数

之前的问题,setup上的属性都被当成自定义的属性,不会被当成选项式name属性去看.即使属性名相同.选项式内部对于name这种有其他操作.

VUE3的有关知识,前端,javascript,vue.js

VUE3的有关知识,前端,javascript,vue.js

这个函数,内写参数,对于对象内部的属性的操作会使得到创建实例时和写到实例的选项式一样.而且可以在setup内.

defineModel函数实现双向数据绑定

VUE3的有关知识,前端,javascript,vue.js

现在的v-model需要自己写:vlaue @input的事件.直接使用无需导入.

从类似与props的作用,并且可以直接修改props传递的值.

VUE3的有关知识,前端,javascript,vue.js

VUE3的有关知识,前端,javascript,vue.js

defineModel返回值是ref对象.ref对象的value是name这个计算属性,访问的话,都是modelvalue这个值,且props改变,也会随着改变.当修改value,不会直接修改,且不是props传递过来的指向的地址的变量,可以修改.触发事件.

Pinia

1)概念

pinia是vue的最新的状态管理工具(和store一样,提供公共数据的),是vuex的替代物.无论vue2/vue3都可以.

优点

VUE3的有关知识,前端,javascript,vue.js

2)使用pinia

仓库是所在任何一个组件都可以使用的.即使是路由组件.

vue3

1)绑定

VUE3的有关知识,前端,javascript,vue.js

需要导入createPinia导入函数,创建函数实例pinia.再给vue实例use(oinia对象)可以使得调用函数时,内部有这个pinia对象,因此需要给每一个组件都传递.使得可以使用这个对象.pinia内应该能解决vuex的事情.创建vuex的store.

2)定义store

不是写在new vue当中.写js导入.

VUE3的有关知识,前端,javascript,vue.js

定义放到js文件内,通过defineStore函数,导出这个返回值.返回值是一个函数.函数调用会返回一个对象,对象内是state内的数据,getters内的数据,getters,将数据为计算属性.actions内的将方法直接.

vue2

VUE3的有关知识,前端,javascript,vue.js

但是vue3她使用的应该是别的,因此是响应式.将

3)导出使用

在组件当中导入,导入的是一个函数,函数调用需要pinia返回对象.id是放在vue工具上的.返回的是函数,调用生成对象.但是当二次调用时,不会生成新的对象,是原本的.当修改action去修改.我们访问1是这个.当修改时,只有响应式的数据,才能重新模板渲染.只有ref的数据value.vue当中data,computed,methods都是响应式.但是actions不是响应式的.不能修改.

pinia比vuex先进,原本只能看到mutations立刻执行的时间点,现在可以看到时间之后的.因此直接放到actions内写.

storeToRefs函数

VUE3的有关知识,前端,javascript,vue.js

获取到对象,直接解构都是得到一个相同的值,不是原本的地址.

VUE3的有关知识,前端,javascript,vue.js

解构,则获得的是原来地址.原count地址,是响应式的.

actions可以直接解构,相同的方法,不能修改,直接去调用这个方法,这个方法内仍保存着原本数据的地址.

持久化

1)下载插件

VUE3的有关知识,前端,javascript,vue.js

2)插件放到实例上

VUE3的有关知识,前端,javascript,vue.js

3)函数,则是第三个参数,对象,就是key:value

VUE3的有关知识,前端,javascript,vue.js

VUE3的有关知识,前端,javascript,vue.js

持久化要通过插件内的实现.持久化是使得传出的数据当被更新则存到本地,当打开页面则赋这本地的值.不是所写的如count=ref(0)的值.文章来源地址https://www.toymoban.com/news/detail-847987.html

到了这里,关于VUE3的有关知识的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 前端Vue3框架知识点大全

    Vue.js是一种流行的JavaScript前端框架,它的第三个版本Vue3带来了许多令人兴奋的新特性和改进。 1、响应式数据 : Vue 3采用了基于Proxy的响应式系统,相比Vue 2中的Object.defineProperty,Proxy提供了更强大和灵活的拦截器,可以捕获对象的各种操作。这使得Vue 3的响应式系统更加高效

    2024年02月11日
    浏览(49)
  • Vue3+Vite前端知识汇总1篇

       目录 1、设置package.json,让编译完成后自动打开浏览器。 2、设置vite.config.ts,设置src别名,后面就不用 ../../../ 了。 3、安装@types/node  解决vscode显示红波浪线问题。  4、安装 sass和reset.css 5、创建并引入全局组件,HospitalTop 6、安装路由,并添加切换路由后滚动到顶部功能

    2024年02月16日
    浏览(45)
  • Vue3前端100个必要的知识点

    为什么是必要的,就是这100个知识点学完后,能独立完成一个小项目。最终能得到一个解决方案。也算是前端知识的积累。如果后面有需要的地方可以回来查。100个其实比较多,我会按新手老鸟,大神来分成3个等级,话不多说,让我们开始吧。     目录 1、一些常用的依赖。

    2024年02月06日
    浏览(46)
  • 前端HTML、CSS、JS、VUE3 汇总

    学习https://developer.mozilla.org/zh-CN/docs/Learn/CSS 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 使用VS Code运行前端代码 在VS Code上安装前端插件 正在更新中~ ✨ 提示:这里可以添加本文要记录的大概内容: 学习路线 知识定位 HTML基础 标签、表格、表单、

    2024年02月13日
    浏览(51)
  • 【前端vue升级】vue2+js+elementUI升级为vue3+ts+elementUI plus

    gogo code 是一个基于 AST (源代码的抽象语法结构树状表现形式)的 JavaScript/Typescript/HTML 代码转换工具,可以用它来构建一个代码转换程序来帮助自动化完成如框架升级、代码重构、多平台转换等工作。 当前 GoGoCode 支持解析和操作如下类型的代码: ○JavaScript(JSX) ○Typescript

    2024年02月12日
    浏览(54)
  • Vue3通过JS修改Css样式(附节点获取相关知识)

    方法一:通过获取节点style(获取标签节点) 方法二:通过动态设置class 方法三:直接动态设置style  附节点获取相关知识

    2024年02月16日
    浏览(43)
  • 前端2023最全面试题(javaScript、typeScript、vue2、vue3、html、css、uniapp、webpack、vite、react)

    答案:JavaScript中的闭包是一种函数,它有权访问其词法环境的变量和其它函数。这意味着,即使其包含它的函数已经执行完毕,其词法环境仍然存在,因此可以访问其作用域内的变量。 答案:回调函数是在某个特定事件之后执行的函数。在JavaScript中,通常使用回调函数来处

    2024年02月06日
    浏览(65)
  • vue3创建项目报错Vue.js - The Progressive JavaScript Framework TypeError: (0 , import_node_ut

    报错信息: Vue.js - The Progressive JavaScript Framework TypeError: (0 , import_node_util.parseArgs) is not a function     at init (C:UsersAdministratorAppDataLocalnpm-cache_npx2f7e7bff16d1c534node_modulescreate-vueoutfile.cjs:4481:72)     at Object.anonymous (C:UsersAdministratorAppDataLocalnpm-cache_npx2f7e7bff16d1c534node_module

    2024年04月10日
    浏览(163)
  • Vue3:有关v-model的用法

    目录 前言: 回忆基本的原生用法: 原生input的封装: 自定义v-model参数: 对el-input的二次封装: 多个v-model进行绑定: v-model修饰符: v-model自定义参数与自定义修饰符的结合:         提起v-model,想必都不陌生,作为vue的经典语法,帮助我们在编写项目的时候,省了很多很多

    2024年02月05日
    浏览(39)
  • vue3 router配置有关parent报null 的错误问题

    今天刚解决了npm  install 的问题和 vue create 构建项目的时候的问题, 之后就步入正轨学习有关的路由,无奈在使用vue create 成功构建项目后使用的 使用的vue-router 又报了新的问题:Uncaught TypeError: Cannot read properties of null (reading \\\'parent\\\') 有关的router的js文件的书写我检查了好几遍

    2024年02月07日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包