• Vue3全局Api应用实例


    一个新的全局 API:createApp

    调用 createApp 返回一个应用实例,一个 Vue 3 中的新概念

    import { createApp } from 'vue'
    
    const app = createApp({})
    
    • 1
    • 2
    • 3

    应用实例暴露了 Vue 2 全局 API 的一个子集,经验法则是,任何全局改变 Vue 行为的 API 现在都会移动到应用实例上,以下是 Vue2 全局 API 及其相应的实例 API 列表:

    2.x 全局 API3.x 实例 API
    Vue.configapp.config
    Vue.config.productionTip移除
    Vue.componentapp.component
    Vue.directiveapp.directive
    Vue.mixinapp.mixin
    Vue.useapp.use
    Vue.prototypeapp.config.globalProperties
    Vue.extend移除

    Vue.prototype 替换为 config.globalProperties

    在 Vue 2 中, Vue.prototype 通常用于添加所有组件都能访问的 property。

    在 Vue 3 中与之对应的是 config.globalProperties。这些 property 将被复制到应用中,作为实例化组件的一部分。

    // 之前 - Vue 2
    Vue.prototype.$http = () => {}
    
    • 1
    • 2
    // 之后 - Vue 3
    const app = createApp({})
    app.config.globalProperties.$http = () => {}
    
    • 1
    • 2
    • 3

    挂载 App 实例

    使用 createApp(/* options */) 初始化后,应用实例 app 可通过 app.mount(domTarget) 挂载根组件实例:

    import { createApp } from 'vue'
    import MyApp from './MyApp.vue'
    
    const app = createApp(MyApp)
    app.mount('#app')
    
    • 1
    • 2
    • 3
    • 4
    • 5

    经过所有的这些更改,我们在指南开头编写的组件和指令现在将被改写为如下内容:

    const app = createApp(MyApp)
    
    app.component('button-counter', {
      data: () => ({
        count: 0
      }),
      template: ''
    })
    
    app.directive('focus', {
      mounted: (el) => el.focus()
    })
    
    // 现在,所有通过 app.mount() 挂载的应用实例及其组件树,
    // 将具有相同的 “button-counter” 组件和 “focus” 指令,
    // 而不会污染全局环境
    app.mount('#app')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    Provide / Inject

    与在 2.x 根实例中使用 provide 选项类似,Vue 3 应用实例也提供了可被应用内任意组件注入的依赖项:

    // 在入口中
    app.provide('guide', 'Vue 3 Guide')
    
    // 在子组件中
    export default {
      inject: {
        book: {
          from: 'guide'
        }
      },
      template: `
    {{ book }}
    `
    }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在应用之间共享配置

    在应用之间共享配置 (如组件或指令) 的一种方法是创建工厂函数,如下所示:

    import { createApp } from 'vue'
    import Foo from './Foo.vue'
    import Bar from './Bar.vue'
    
    const createMyApp = (options) => {
      const app = createApp(options)
      app.directive('focus' /* ... */)
    
      return app
    }
    
    createMyApp(Foo).mount('#foo')
    createMyApp(Bar).mount('#bar')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
  • 相关阅读:
    阿里技术官最新整理总结号称全网最屌“Redis核心手册”
    ▶《强化学习的数学原理》(2024春)_西湖大学赵世钰 Ch2 贝尔曼公式
    分类模型计算混淆矩阵
    Linux 手动卸载jdk
    视频清晰度优化指南
    FPGA时序分析
    为中小企业的网络推广策略解析:扩大品牌知名度和曝光度
    MQTT协议知识梳理,看完你就懂了!
    BQL是什么如何使用?
    Python之第六章 内置容器 --- 字符串
  • 原文地址:https://blog.csdn.net/sky___Show/article/details/138179353