前端系列十一:Vue3较Vue2变化

31 篇文章 1 订阅
22 篇文章 0 订阅

一 新特性:Teleport 传送门:

它可以指定它里面内容的父元素

    它可以在别的组件里使用,但是它可以让控制权还是在自己手上

写法:

    在别的组件注册引用组件

    在自己组件里写上功能
        
    //to 代表要去的地方显示   一般传送门写在teleport标签里

    <button  @click="modelOpen = true">弹出一个模态框</button>
    <teleport  to="body">
        <div  v-if="modalOpen"  class= "model">
            <div>
                   这是一个弹窗  我的元素是body
               <button @click="modalOpen = false">关闭</button>
            </div>
        </div>
    </teleport>

二 新特性:Fragments  :

它的功能就是可以让Vue3里有很多根的template模板,在
    Vue2里只能有一个template模板

三 新特性:Emits Component Option:

Vue3组件中发送自定义事件需要定义在emits选项中:
    
    因为同一个事件名,原生事件会触发两次 比如click

    更好的指示组件工作方式

    对象形式事件校验


写法:

    <template>
        <div @click="$emit('click')">
            <h3>自定义事件</h3>
        </div>
    </template>

    <script>
        export default {
            emits: ['click']            
            }
    </script>
 

四 Vue3较Vue2破坏性变化 :

Clobal API 改为 应用程序实例调用

    Vue2中有很多全局api可以改变vue的行为, 比如 Vue.component,这会导致一些问题:

    vue2没有app概念, new Vue( ) 得到的根实例被作为app, 这样的话所有创建的根实例是共享
相同的全局配置,这在测试时会污染其他测试用例,导致测试变得困难。

    全局配置也导致没有办法在单页面创建不同全局配置的多个app实例。

    Vue3中使用createApp返回app实例,由它暴露一系列全局api

    
定义全局组件写法:

    在main.js引入

    import  { createApp } from ' vue '

    const app = createApp ( { } )
        .component( 'comp', { render : ( ) => ('div', 'i am comp' )  }  )
        .mount( '#app' )


Vue2里在Vue3里废除掉的:

    Vue2 :                                                        Vue3 :
              Vue.config                                                  app.config
    Vue.config.productionTip                            removed(see below)
    Vue.config.ignoredElements                        app.config.isCustomElement(see below )
    Vue.component                                           app.component
    Vue.directive                                                app.directive
    Vue.mixin                                                     app.mixin
    Vue.use                                                        app.use( see below)
    Vue.filter                                                      removed

五 新特性 Clobal and internal APls 重构为可做摇钱树优化 :

vue2中不少global-api 是作为静态函数直接挂在构造函数上的,例如 Vue.nextTick( ),如果
我们从未在代码中用过它们,就会形成所谓的 dead code 这类global-api 造成的 dead code 无法使用
webpack的tree-shaking 排除掉 

    在Vue3中做了相应的变化,将它们抽取成为独立函数,这样打包工具的摇钱优化可以将这些dead
code排除掉

写法:

    import { nextTick }  from 'vue'

    nextTick( () => {
    
    })

受影响api:

    Vue.nextTick
    Vue.observable(replaced by Vue.reactive)
    Vue.version
    Vue.compile( only in full builds )
    Vue.set( only in c )

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值