视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
vue 怎么创建组件及组件使用方法
2020-11-27 22:34:04 责编:小采
文档

什么是组件?

组件 (Component) 是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素,封装可重用的代码。在较高层面上,组件是自定义元素,Vue.js 的编译器为它添加特殊功能。在有些情况下,组件也可以是原生 HTML 元素的形式,以 is 特性扩展。

我知道vue中核心就是组件,但是组件是什么呢?组件有什么用呢?

这里来说说怎么用组件?怎么样创建自己的组件?:

1)创建自己的组件

通过vue.extend("template");通过vue构造器去拓展一个模板,然后注册,最后使用。

<!DOCTYPE html>
<html>
 <head>
 <meta charset="UTF-8">
 <title>进一步了解component的话法糖</title>
 <script src="../vue.js"></script>
 </head>
 <body>
   
 <div>这是一个全局注册的</div>
 <div id="app">
 <parent></parent>
 </div>
 </body>
</html>
<script>
 var child= Vue.extend({template:'<p>this is child component</p>'});
 //Vue.component("组件名",{});在注册之前会自动创建(调用vue.extend()方法 )
 //这是一个全局注册(兼创建与注册)
 Vue.component("parent",{//有时候我们可以省略,extend.
 template:'<div>this is parent component ------ {{text}} <child-component></child-component> </div>',//局部使用
 components:{
 "child-component":child,//局部注册
 },
 //data:function(){}
 data(){
 return {text:'哈哈哈,我是组件内部的text'}
 },
 });
 var vm= new Vue({
 el:'#app',
 data:{},
 });

进阶一下:(组件内部在套组件,(components下面的components))

通过下面的例子,我就想说明一点,组件是vue构造器的拓展,所以组件可能拥有构造器的几乎所有属性(在写这篇博客前,我们没有听到这个说法,所以可能是错的,不要信)

<body>
 <div>这是一个局部注册</div>
 <div id="app1">
 <div><button v-on:click=get>这里触发get方法</button></div>
 <parent-components></parent-components>
 </div>
</body> 
<script> 
// var child=Vue.extend({template:"<span> ------child element------</span>"});
 var vp=new Vue({
 el:'#app1',
 data:{},
 methods:{
 get:function(){alert("这是构造器中get(全局)");}
 },
 components:{
 "parent-components":{
 template:"<div>---------<span> parent components</span><p><button v-on:click=get>点击触发parent的get</button></p> <div><child-component></child-component></div>--------</div>",
 components:{
 //局部注册再一次局部注册
 "child-component":{
 template:"<span> ------child <button v-on:click=get>点击触发child中的get方法</button>element------</span>",
 methods:{
 get:function(){
 alert("这是局部注册child-component组件中get");
 }
 }
 }
 },
 methods:{
 get:function(){
 alert("这是蝉联注册parent-components里面的方法");
 }
 },
 },
 }, 
 });
</script> 

你知道吗?一个components中可以定义多个组件:

将html,写入components是不是觉得很low呢?当template的内容太多了,是不是不堪入目呢?那我们来使用一下vue组件的语法糖吧(不知道为啥叫这个名)

值得提醒你的事:组件中的data属性要定义成一个函数,返回一个对象,

<script type="text/x-template" id="myComponent">
 <div> 
 <span>{{msg}}</span>
 </div>
 </script>
 <template id='myCom'>
 <span>{{msg}}</span>
 </template>
 <div id="app">
 <parent-component-script></parent-component-script>
 <parent-component-tem></parent-component-tem>
 </div>
var vm=new Vue({
 el:"#app",
 data:{},
 components:{
 "parent-component-script":{
 template:'#myComponent',
 data(){return{msg:'这里是script'};},
 },
 "parent-component-tem":{
 template:'#myCom',
 data(){return{msg:'这里是template'} }
 },
 },
 });

你也可以更狠一点:的创建方式

值得注意的是:组件中的props中属性值,定义时是驼峰,使用时就要变为中划线

<div id="app">
 <son :son-counter="counter"></son>
 <p>parent:<input type="text" v-model="counter"/></p>
</div> 
const son={
 template:`<div>son:<input v-model="sonCounter" /></div>`,
 props:{sonCounter:Number},
 };
var app=new Vue({
 el:'#app',
 data:{
 counter:0,
 },
 components:{
 son
 }
 });

 最后一个提醒:组件的创建要在,vue实例化之前。

总结

以上所述是小编给大家介绍的vue 怎么创建组件及组件使用方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

下载本文
显示全文
专题