欢迎订阅我的公众号《人生代码》应用API从今天开始,我们开始学习API。是不是很豁达,今天我们要介绍的应用APIcreateApp应该是createApp就像程序的入口一样。在Vue3中,用于更改全局Vue行为的API现在已移至由新的createApp方法创建的应用程序实例。此外,现在它们的效果仅限于特定的应用程序实例:`//src/main.jsimport{createApp}from'vue'importAppfrom'./App.vue'importrouterfrom'./router'importstorefrom'./store'letapp=createApp(App)`调用createApp返回一个应用实例。这个实例提供了一个应用上下文。应用程序实例安装的整个组件树共享相同的上下文,该上下文提供了以前在Vue2.x中的“全局”配置。此外,由于createApp方法返回应用程序实例本身,因此可以在它之后链接其他方法,这可以在以下部分中找到。组件参数:{string}name{Function|Object}[definition]返回值:如果传入definition参数,则返回应用实例。如果没有传入定义参数,则返回组件定义。用法:注册或检索全局组件。注册还会使用给定的名称参数自动设置组件的名称。示例:如何注册名为my-component的组件:``app.component('my-component',{template:`
11111
`,})``配置用法:包含应用程序配置对象。示例:比如我们可以配置一些全局的属性、方法等。`app.config.optionMergeStrategies.custom=(toVal,fromVal)=>{console.log(fromVal,toVal)//=>“再见!”,未定义返回fromVal||toVal}`指令参数:{string}name{Function|Object}[definition]返回值:如果传入definition参数,则返回应用实例。如果没有传入定义参数,则返回命令定义。用法:注册或检索全局指令。示例:``import{createApp}from'vue'constapp=createApp({})//注册app.directive('my-directive',{//指令是具有一组生命周期的钩子://在bundle中在绑定元素的父组件挂载之前调用beforeMount(){}//在绑定元素的父组件挂载时调用mounted(){}//在包含该组件的VNode之前调用beforeUpdate(){}被更新时,//包含组件的VNode及其子组件的VNode更新后调用updated(){},//绑定元素的父组件卸载前调用beforeUnmount(){},//调用时绑定元素的父组件被卸载unmounted(){}})//注册(功能指令)app.directive('my-directive',()=>{//这将被称为已安装和更新})//getter,如果已注册,则返回指令定义constmyDirective=app.directive('my-directive')``指令挂钩传递这些参数:#el指令绑定到的元素。这可用于直接操作DOM。#binding包含以下属性的对象。instance:使用指令的组件实例。value:传递给指令的值。例如,在v-my-directive="1+1"中,值为2。oldValue:之前的值,只在beforeUpdate和updated时可用。无论值是否已更改均可用。arg:传递给指令的参数(如果有的话)。例如在v-my-directive:foo中,arg是“foo”。修饰符:包含修饰符的对象(如果有)。例如在v-my-directive.foo.bar中,修饰符对象是{foo:true,bar:true}。dir:一个对象,在注册指令时作为参数传递。例如,在以下指令mixin参数中:{Object}mixin返回值:应用程序实例用法:在整个应用程序范围内应用mixin。一旦注册,他们就可以在当前应用程序的任何组件模板中使用它。插件作者可以使用此方法将自定义行为注入组件。不建议在应用程序代码中使用。参考:globalmixin`app.config.optionMergeStrategies.custom=(toVal,fromVal)=>{console.log(fromVal,toVal)//=>"goodbye!",undefinedreturnfromVal||toVal}app.mixin({custom:'goodbye!',created(){console.log(this.$options.custom)//=>"hello!"}})`mountparameter:{Element|string}rootContainer{boolean}isHydrate返回值:根组件实例用法:将应用程序实例的根组件挂载到提供的DOM元素上。示例:``从'vue'导入{createApp}从'./App.vue'导入应用程序从'./router'导入路由器从'./store'导入商店letapp=createApp(App)console.log('appp====>',app)app.use(store).use(router).mount('#app')app.component('my-component',{template:`
11111
`,})app.config.optionMergeStrategies.custom=(toVal,fromVal)=>{console.log(fromVal,toVal)//=>“再见!”,未定义返回fromVal||toVal}app.mixin({custom:'goodbye!',created(){console.log(this.$options.custom)//=>"hello!"}})``提供参数:{string|Symbol}keyvalue返回值:applicationinstance用法:设置一个值,可以注入到应用范围内的所有组件中。组件应该使用inject来接收提供的值。从提供/注入的角度来看,应用程序可以被认为是根级别的祖先,根组件是它唯一的子组件。此方法不应与提供组件选项或CompositionAPI中的提供方法混淆。虽然它们也是同一提供/注入机制的一部分,但它们用于配置组件提供的值而不是应用程序提供的值。通过应用程序提供值在编写插件时特别有用,因为插件一般不能使用组件来提供值。这是使用globalProperties的替代方法。注意提供和注入绑定不是反应性的。这是设计使然。但是,如果您传递一个响应式对象,该对象的属性将保持响应式。示例:使用应用程序提供的值将属性注入根组件。``从'vue'constapp=createApp({inject:['user'],template:`
{{user}}
`})app.provide('user','管理员')``使用参数:{Object|Function}plugin...options(optional)返回值:应用示例用法:安装Vue.js插件。如果插件是一个对象,它必须公开一个安装方法。如果它本身是一个函数,它将被视为一个安装方法。install方法将以应用程序实例作为第一个参数调用。传递给use的附加选项参数将作为后续参数传递给install方法。当在同一个插件上多次调用此方法时,该插件只会安装一次。参考:插件