app.config - 应用程序配置 - vue 应用实例 API
app.config
每个应用程序实例都会公开一个config包含该应用程序配置设置的对象。您可以在安装应用程序之前修改其属性(如下所述)。
import { createApp } from 'vue' const app = createApp(/* ... */) console.log(app.config)
app.config.errorHandler
为从应用程序内部传播的未捕获错误分配一个全局处理程序。
类型
interface AppConfig { errorHandler?: ( err: unknown, instance: ComponentPublicInstance | null, // `info` is a Vue-specific error info, // e.g. which lifecycle hook the error was thrown in info: string ) => void }
细节
错误处理程序接收三个参数:错误、触发错误的组件实例和指定错误源类型的信息字符串。
它可以从以下来源捕获错误:
- 组件渲染
- 事件处理程序
- 生命周期钩子
setup()
功能- 观察者
- 自定义指令钩子
- 过渡挂钩
例子
app.config.errorHandler = (err, instance, info) => { // handle error, e.g. report to a service }
app.config.warnHandler
为来自 Vue 的运行时警告分配一个自定义处理程序。
类型
interface AppConfig { warnHandler?: ( msg: string, instance: ComponentPublicInstance | null, trace: string ) => void }
细节
警告处理程序接收警告消息作为第一个参数,源组件实例作为第二个参数,组件跟踪字符串作为第三个参数。
它可用于过滤掉特定的警告以减少控制台的冗长。所有 Vue 警告都应在开发期间解决,因此仅建议在调试会话期间关注许多特定警告,并且应在调试完成后将其删除。
提示:警告仅在开发期间有效,因此在生产模式下会忽略此配置。
例子
app.config.warnHandler = (msg, instance, trace) => { // `trace` is the component hierarchy trace }
app.config.performance
将此设置为 true 在浏览器开发工具性能/时间线面板中启用组件初始化、编译、渲染和修补性能跟踪。仅适用于开发模式和支持 performance.mark API 的浏览器。
类型
boolean
app.config.compilerOptions
配置运行时编译器选项。在此对象上设置的值将传递给浏览器内模板编译器,并影响已配置应用程序中的每个组件。请注意,您还可以使用选项在每个组件的基础上覆盖这些compilerOptions
选项。
For vue-loader:通过compilerOptions加载器选项传递。另请参阅如何在vue-cli.
对于vite:通过@vitejs/plugin-vue选项。
app.compilerOptions.isCustomElement
指定一个检查方法来识别本机自定义元素。
类型
(tag: string) => boolean
细节
如果标签应被视为本机自定义元素,则应返回true
。对于匹配的标签,Vue 会将其呈现为原生元素,而不是尝试将其解析为 Vue 组件。
本机 HTML 和 SVG 标签不需要在此函数中匹配- Vue 的解析器会自动识别它们。
例子
// treat all tags starting with 'ion-' as custom elements app.config.compilerOptions.isCustomElement = (tag) => { return tag.startsWith('ion-') }
app.compilerOptions.whitespace
调整模板空白处理行为。
类型
'condense' | 'preserve'
默认:'condense'
细节
Vue 删除/压缩模板中的空白字符以产生更有效的编译输出。默认策略是“浓缩”,具有以下行为:
- 元素内的前导/结束空白字符被压缩成一个空格。
- 包含换行符的元素之间的空白字符被删除。
- 文本节点中连续的空白字符被压缩成一个空格。
将此选项设置为'preserve'将禁用(2)和(3)。
例子
app.config.compilerOptions.whitespace = 'preserve'
app.compilerOptions.delimiters
调整用于模板内文本插值的分隔符。
类型
[string, string]
默认:['{{','}}']
细节
这通常用于避免与也使用 mustache 语法的服务器端框架发生冲突。
例子
// Delimiters changed to ES6 template string style app.config.compilerOptions.delimiters = ['${', '}']
app.compilerOptions.comments
调整模板中 HTML 注释的处理方式。
类型
boolean
默认: false
细节
默认情况下,Vue 会删除生产环境中的注释。将此选项设置为true
将强制 Vue 即使在生产中也保留评论。在开发过程中始终保留注释。当 Vue 与其他依赖 HTML 注释的库一起使用时,通常会使用此选项。
例子
app.config.compilerOptions.comments = true
app.config.globalProperties
可用于注册全局属性的对象,可在应用程序内的任何组件实例上访问这些属性。
类型
interface AppConfig { globalProperties: Record }
细节
Vue.prototype 这是 Vue 3中不再存在的 Vue 2 的替代品。与任何全局的东西一样,应该谨慎使用它。
如果全局属性与组件自己的属性冲突,组件自己的属性将具有更高的优先级。
用法
app.config.globalProperties.msg = 'hello'
这使得 msg 应用程序中的任何组件模板以及 this 任何组件实例中都可用:
export default { mounted() { console.log(this.msg) // 'hello' } }
app.config.optionMergeStrategies
用于定义自定义组件选项的合并策略的对象。
类型
interface AppConfig { optionMergeStrategies: Record } type OptionMergeFunction = (to: unknown, from: unknown) => any
细节
一些插件/库添加了对自定义组件选项的支持(通过注入全局混合)。当同一个选项需要从多个来源(例如 mixins 或组件继承)“合并”时,这些选项可能需要特殊的合并逻辑。
合并策略函数可以通过 app.config.optionMergeStrategies 使用选项的名称作为键将其分配到对象上来为自定义选项注册。
合并策略函数接收在父实例和子实例上定义的选项的值,分别作为第一个和第二个参数。
例子
const app = createApp({ // option from self msg: 'Vue', // option from a mixin mixins: [ { msg: 'Hello ' } ], mounted() { // merged options exposed on this.$options console.log(this.$options.msg) } }) // define a custom merge strategy for `msg` app.config.optionMergeStrategies.msg = (parent, child) => { return (parent || '') + (child || '') } app.mount('#app') // logs 'Hello Vue'
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!