如何正确的使用Vue组件?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
Vue组件概述
组件是Vue(组件)。js最强大的功能之一。组件可以扩展HTML元素,封装可重用的代码。根据项目需求,抽象出一些组件,每个组件里包含了展现,功能和样式。每个页面,根据自己所需,使用不同的组件来拼接页面。这种开发模式使前端页面易于扩展,且灵活性高,而且组件之间也实现了解耦。
在Vue里,一个组件本质上是一个拥有预定义选项的一个Vue实例
组件是一个自定义元素或称为一个模块,包括所需的模板,逻辑和样式。在HTML模板中,组件以一个自定义标签的形式存在,起到占位符的功能。通过Vue。js的声明式渲染后,占位符将会被替换为实际的内容
下面是一个最简单的模块示例
& lt; div id=癮pp"比; & lt;才能xiaohuochai> & lt;/xiaohuochai> & lt;/div>
Vue注册组件
组件注册包括全局注册和局部注册两种
全局注册
要注册一个全局组件,可以使用Vue.component (tagName、期权)
Vue.component (& # 39; my-component& # 39;,, { ,//选项 })
组件在注册之后,便可以在父实例的模块中以自定义元素& lt; my-component> & lt;/my-component>的形式使用
[注意]要确保在初始化根实例之前注册了组件
& lt; div id=癳xample"比; ,& lt; my-component> & lt;/my-component> & lt;/div> & lt; script>//,注册 Vue.component (& # 39; my-component& # 39;,, { ,模板:& # 39;& lt; div> A custom 组件! & lt;/div> & # 39; })//,创建根实例 Vue ({new ,el: & # 39; #示例# 39; }) & lt;/script>
局部注册
通过使用组件实例选项组件注册,可以使组件仅在另一个实例/组件的作用域中可用
& lt; div id=癳xample"比; ,& lt; my-component> & lt;/my-component> & lt;/div> & lt; script>//,注册 var Child =, { ,模板:& # 39;& lt; div> A custom 组件! & lt;/div> & # 39; };//,创建根实例 Vue ({new ,el: & # 39; #示例# 39; ,,组件:{//才能,& lt; my-component>,将只在父模板可用 & # 39;才能my-component& # 39;:孩子 }大敌; }) & lt;/script>
组件树
使用组件实例选项组件注册,可以实现组件树的效果
& lt; div id=癳xample"比; ,& lt; my-component> & lt;/my-component> & lt;/div> & lt; script>//,注册 var headerTitle =, { ,,模板:& # 39;& lt; p>我是标题& lt;/p> & # 39; }; var headerContent =, { ,,模板:& # 39;& lt; p>我是内容& lt;/p> & # 39; }; var header =, { 模板:大敌;” ,,& lt; div 类=癶d"比; ,,,,,& lt; header-content> & lt;/header-content> ,,,,,& lt; header-title> & lt;/header-title> ,,& lt;/div> ,’, ,,组件:{ & # 39;才能header-content& # 39;:, headerContent, & # 39;才能header-title& # 39;: headerTitle ,}, };//,创建实例 Vue ({new ,el: & # 39; #示例# 39; ,,组件:{ & # 39;才能my-component& # 39;:头 }大敌; }) & lt;/script>
对于大型应用来说,有必要将整个应用程序划分为组件,以使开发可管理。一般地组件应用模板如下所示
& lt; div id=癮pp"比; ,& lt; app-nav> & lt;/app-nav> ,& lt; app-view> & lt;才能app-sidebar> & lt;/app-sidebar> & lt;才能app-content> & lt;/app-content> ,& lt;/app-view> & lt;/div>
v-once
尽管在Vue中渲染HTML很快,不过当组件中包含大量静态内容时,可以考虑使用v-once将渲染结果缓存起来
Vue.component (& # 39; my-component& # 39;,, { ,模板:& # 39;& lt; div v-once> hello 世界!……& lt;/div> & # 39; })
Vue组件的模板分离
在组件注册中,使用模板选项中拼接HTML元素比较麻烦,这也导致了HTML和javascript的高耦合性。庆幸的是,Vue。js提供了两种方式将定义在js中的HTML模板分离出来
脚本
在脚本标签里使用文本/x-template类型,并且指定一个id
& lt; script 类型=拔谋?x-template", id=癶ello-world-template"比; ,& lt; p> Hello Hello  hello & lt;/script> Vue.component (& # 39; hello-world& # 39;,, { ,模板:& # 39;# hello-world-template& # 39; })如何正确的使用Vue组件