Vue3全局Api应用实例

一个新的全局 API:createApp

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

import { createApp } from 'vue'

const app = createApp({})

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

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

Vue.prototype 替换为 config.globalProperties

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

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

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

挂载 App 实例

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

import { createApp } from 'vue'
import MyApp from './MyApp.vue'

const app = createApp(MyApp)
app.mount('#app')

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

const app = createApp(MyApp)

app.component('button-counter', {
  data: () => ({
    count: 0
  }),
  template: '<button @click="count++">Clicked {{ count }} times.</button>'
})

app.directive('focus', {
  mounted: (el) => el.focus()
})

// 现在,所有通过 app.mount() 挂载的应用实例及其组件树,
// 将具有相同的 “button-counter” 组件和 “focus” 指令,
// 而不会污染全局环境
app.mount('#app')

Provide / Inject

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

// 在入口中
app.provide('guide', 'Vue 3 Guide')

// 在子组件中
export default {
  inject: {
    book: {
      from: 'guide'
    }
  },
  template: `<div>{{ book }}</div>`
}

在应用之间共享配置

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

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. Vue3全局Api应用实例

    2024-04-26 12:44:05       33 阅读
  2. Vue3 · 小白学习全局 API:常规

    2024-04-26 12:44:05       38 阅读
  3. vue3中集成sass实现全局scss样式变量

    2024-04-26 12:44:05       53 阅读
  4. vue3挂载全局方法

    2024-04-26 12:44:05       57 阅读
  5. vue3注册全局组件

    2024-04-26 12:44:05       39 阅读
  6. vue3 配置全局@符号

    2024-04-26 12:44:05       22 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-26 12:44:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-26 12:44:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-26 12:44:05       87 阅读
  4. Python语言-面向对象

    2024-04-26 12:44:05       96 阅读

热门阅读

  1. 资源、死锁、如何监测死锁

    2024-04-26 12:44:05       41 阅读
  2. 树莓派在人工智能领域的应用探索

    2024-04-26 12:44:05       32 阅读
  3. C语言经典例题-11

    2024-04-26 12:44:05       33 阅读
  4. 【Go】通道作为函数参数

    2024-04-26 12:44:05       32 阅读
  5. C++ 内存管理

    2024-04-26 12:44:05       30 阅读
  6. 白帽子讲Web安全读书笔记

    2024-04-26 12:44:05       31 阅读
  7. AI电销机器人系统源码部署之:freeswitch安装Linux

    2024-04-26 12:44:05       33 阅读