应用实例

createApp()

创建一个 Web 应用实例。

类型定义

ts
declare function createApp(root: Component | View, config?: AppConfig): WebApp

参数

参数类型说明
rootComponent | View根组件或视图对象
configAppConfig可选的应用配置

返回值

类型说明
WebAppWeb 应用实例

示例

传入根组件:

tsx
import { createApp } from 'vitarx'
import { App } from './App'
const app = createApp(App)

传入视图对象:

tsx
import { createApp } from 'vitarx'
import { App } from './App'
const app = createApp(<App title="Hello" />)

参考创建 Vitarx 应用

createSSRApp()

创建一个支持服务端渲染的应用实例。

类型定义

ts
declare function createSSRApp(root: Component | View, config?: AppConfig): SSRApp

详情

使用方式与 createApp 完全一致,区别在于创建的应用实例支持客户端激活模式挂载。

参考SSR 基础SSR API

app.mount()

将应用实例挂载到容器元素中。

类型定义

ts
declare class WebApp extends App {
  mount(container: Element | string): this
}

参数

参数类型说明
containerElement | stringDOM 元素或 CSS 选择器

返回值

类型说明
this应用实例自身

详情

参数可以是一个实际的 DOM 元素或一个 CSS 选择器(使用第一个匹配到的元素)。

在 SSR 激活模式下,它将激活容器内现有的 DOM 节点。如果出现了激活不匹配,那么现有的 DOM 节点将会被修改以匹配客户端的实际渲染结果。

mount() 仅应被调用一次,但支持在 unmount() 后重新调用。

示例

ts
app.mount('#root')
app.mount(document.body.firstChild)

app.unmount()

卸载应用实例,释放所有资源。

类型定义

ts
declare class App {
  unmount(): void
}

详情

调用 unmount() 会释放应用占用的所有资源,包括响应式依赖、DOM 节点、事件监听器等。卸载后可以重新调用 mount() 挂载应用。

示例

ts
const app = createApp(App).mount('#root')
app.unmount()

app.directive()

注册或获取全局指令。

类型定义

ts
declare class App {
  directive(name: string): Directive | undefined
  directive(name: string, directive: Directive): this
}

参数

参数类型说明
namestring指令名称
directiveDirective指令对象(注册时)

返回值

调用方式返回值说明
只传 nameDirective | undefined获取已注册的指令
name + directivethis注册指令,支持链式调用

示例

ts
// 注册指令
app.directive('focus', {
  mounted(el) {
    el.focus()
  }
})

// 获取指令
const focusDirective = app.directive('focus')

// 链式注册
app.directive('a', directiveA).directive('b', directiveB)

参考自定义指令

app.provide()

在应用级别提供依赖。

类型定义

ts
declare class App {
  provide(name: string | symbol, value: unknown): this
}

参数

参数类型说明
namestring | symbol依赖名称
valueunknown依赖值

返回值

类型说明
this应用实例,支持链式调用

示例

ts
app.provide('appName', 'MyApp')
app.provide(Symbol('theme'), 'dark')

参考依赖注入

app.hasProvide()

检查指定名称的依赖是否已提供。

类型定义

ts
declare class App {
  hasProvide(name: string | symbol): boolean
}

示例

ts
app.provide('appName', 'MyApp')
app.hasProvide('appName') // true
app.hasProvide('notExist') // false

app.inject()

获取应用级别提供的依赖值。

类型定义

ts
declare class App {
  inject<T = any>(name: string | symbol, defaultValue?: T): T
}

参数

参数类型说明
namestring | symbol依赖名称
defaultValueT可选的默认值

示例

ts
app.provide('appName', 'MyApp')
app.inject('appName') // 'MyApp'
app.inject('notExist', 'default') // 'default'

app.use()

安装插件。

类型定义

ts
declare class App {
  use<T extends {}>(plugin: AppPlugin<T>, options?: T): this
}

参数

参数类型说明
pluginAppPlugin<T>插件对象或函数
optionsT可选的插件配置

返回值

类型说明
this应用实例,支持链式调用

详情

插件可以是一个函数,或者是一个带有 install 方法的对象。如果插件是对象形式,install 方法会被绑定到该对象上下文后调用。

示例

ts
// 函数插件
app.use(
  (app, options) => {
    console.log('插件安装', options)
  },
  { debug: true }
)

// 对象插件
app.use(
  {
    install(app, options) {
      console.log('插件安装', options)
    }
  },
  { debug: true }
)

参考插件

app.version

获取框架版本号。

类型定义

ts
declare class App {
  static readonly version: string
  readonly version: string
}

示例

ts
import { App } from 'vitarx'
console.log(App.version) // 静态属性

const app = createApp(App)
console.log(app.version) // 实例属性

app.config

应用配置对象。

类型定义

ts
declare class App {
  readonly config: Required<AppConfig>
}

类型定义:AppConfig

详情

包含应用的配置选项:

属性类型默认值说明
errorHandler(error, info) => void控制台输出全局错误处理器
idPrefixstring'v'元素 ID 前缀

示例

ts
const app = createApp(App, {
  errorHandler: (error, info) => {
    console.error('应用错误:', error, info)
  },
  idPrefix: 'my-app'
})
console.log(app.config.idPrefix) // 'my-app'

app.rootView

获取应用的根视图对象。

类型定义

ts
declare class App {
  get rootView(): View
}

类型定义:View