九、【Vue3】——新的组件(Fragment&Teleport&Suspense)

前言:Vue3更新了一些新的组件比较有亮点FragmentTeleportSuspense,还有一些其他变化。下面具体分析下如何炫酷的使用。

Fragment

  • 在Vue2中: 组件必须有一个根标签
  • 在Vue3中: 组件可以没有根标签, 内部会将多个标签包含在一个Fragment虚拟元素中
  • 好处: 减少标签层级, 减小内存占用
    
    

九、【Vue3】——新的组件(Fragment&Teleport&Suspense)_第1张图片

Teleport

什么是Teleport?—— Teleport 是一种能够将我们的组件html结构移动到指定位置的技术。


直接将弹框放在了body根标签下

九、【Vue3】——新的组件(Fragment&Teleport&Suspense)_第2张图片

Suspense

  • 等待异步组件时渲染一些额外内容,让应用有更好的用户体验

  • 使用步骤:

    • 异步引入组件

      import {defineAsyncComponent} from 'vue'
      const Child = defineAsyncComponent(()=>import('./components/Child.vue'))
      

    • 使用Suspense包裹组件,并配置好defaultfallback

      
      

其它

1.全局API的转移

  • Vue 2.x 有许多全局 API 和配置。

    • 例如:注册全局组件、注册全局指令等。

      //注册全局组件
      Vue.component('MyButton', {
        data: () => ({
          count: 0
        }),
        template: ''
      })
      ​
      //注册全局指令
      Vue.directive('focus', {
        inserted: el => el.focus()
      }
      

  • Vue3.0中对这些API做出了调整:

    • 将全局的API,即:Vue.xxx调整到应用实例(app)上

      2.x 全局 API(Vue 3.x 实例 API (app)
      Vue.config.xxxx app.config.xxxx
      Vue.config.productionTip 移除
      Vue.component app.component
      Vue.directive app.directive
      Vue.mixin app.mixin
      Vue.use app.use
      Vue.prototype app.config.globalProperties

2.其他改变

  • data选项应始终被声明为一个函数。

  • 过度类名的更改:

    • Vue2.x写法

      .v-enter,
      .v-leave-to {
        opacity: 0;
      }
      .v-leave,
      .v-enter-to {
        opacity: 1;
      }
      

    • Vue3.x写法

      .v-enter-from,
      .v-leave-to {
        opacity: 0;
      }
      ​
      .v-leave-from,
      .v-enter-to {
        opacity: 1;
      }
      

  • 移除keyCode作为 v-on 的修饰符,同时也不再支持config.keyCodes

  • 移除v-on.native修饰符

    • 父组件中绑定事件

      
      

    • 子组件中声明自定义事件

      
      

  • 移除过滤器(filter)

    过滤器虽然这看起来很方便,但它需要一个自定义语法,打破大括号内表达式是 “只是 JavaScript” 的假设,这不仅有学习成本,而且有实现成本!建议用方法调用或计算属性去替换过滤器。

  • ......

你可能感兴趣的:(Vue3,vue.js,javascript,前端,前端框架)