vue 怎么创建组件及组件使用方法


Posted in Javascript onJuly 27, 2017

什么是组件?

组件 (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 怎么创建组件及组件使用方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
IE php关于强制下载文件的代码
Aug 23 Javascript
jquery里的正则表达式说明
Aug 03 Javascript
javascript自然分类法算法实现代码
Oct 11 Javascript
JavaScript变量声明详解
Nov 27 Javascript
JavaScript操作Cookie方法实例分析
May 27 Javascript
文件上传插件SWFUpload的使用指南
Nov 29 Javascript
jQuery为某个div加入行样式
Jun 09 jQuery
微信小程序开发animation心跳动画效果
Aug 16 Javascript
JavaScript中正则表达式使数字、中文或指定字符高亮显示
Oct 31 Javascript
详解如何将 Vue-cli 改造成支持多页面的 history 模式
Nov 20 Javascript
小程序跨页面交互的作用与方法详解
Jan 07 Javascript
原生JS实现音乐播放器
Jan 26 Javascript
详解Angular-cli生成组件修改css成less或sass的实例
Jul 27 #Javascript
Vue中如何实现轮播图的示例代码
Jul 27 #Javascript
基于构造函数的五种继承方法小结
Jul 27 #Javascript
vue中各组件之间传递数据的方法示例
Jul 27 #Javascript
微信小程序 页面跳转传值实现代码
Jul 27 #Javascript
JS实现按钮控制计时开始和停止功能
Jul 27 #Javascript
关于JavaScript中forEach和each用法浅析
Jul 27 #Javascript
You might like
Laravel框架学习笔记(二)项目实战之模型(Models)
2014/10/15 PHP
php约瑟夫问题解决关于处死犯人的算法
2015/03/23 PHP
smarty自定义函数用法示例
2016/05/20 PHP
php 可变函数使用小结
2018/06/12 PHP
php实现的rc4加密解密类定义与用法示例
2018/08/16 PHP
在页面上点击任一链接时触发一个事件的代码
2007/04/07 Javascript
JavaScript入门教程(10) 认识其他对象
2009/01/31 Javascript
javascript 异常处理使用总结
2009/06/21 Javascript
Jquery Ajax的Get方式时需要注意URL地方
2011/04/07 Javascript
Jquery实现仿新浪微博获取文本框能输入的字数代码
2013/02/22 Javascript
JS实现QQ图片一闪一闪的效果小例子
2013/07/31 Javascript
可选择和输入的下拉列表框示例
2013/11/05 Javascript
jquery获得同源iframe内body下标签的值的方法
2014/09/25 Javascript
angularJS中router的使用指南
2015/02/09 Javascript
浅谈javascript中call()、apply()、bind()的用法
2015/04/20 Javascript
深入剖析javascript中的exec与match方法
2016/05/18 Javascript
JS实现页面中所有img对象添加onclick事件及新窗口查看图片的方法
2016/12/27 Javascript
JS实现的添加弹出层并完成锁屏操作示例
2017/04/07 Javascript
javascript 面向对象实战思想分享
2017/09/07 Javascript
Vue2.0 给Tab标签页和页面切换过渡添加样式的方法
2018/03/13 Javascript
JS实现左边列表移到到右边列表功能
2018/03/28 Javascript
create-react-app安装出错问题解决方法
2018/09/04 Javascript
Vue弹出菜单功能的实现代码
2018/09/12 Javascript
element-ui table行点击获取行索引(index)并利用索引更换行顺序
2020/02/27 Javascript
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法
2020/12/25 Vue.js
Python中创建字典的几种方法总结(推荐)
2017/04/27 Python
详解Python函数可变参数定义及其参数传递方式
2017/08/02 Python
Python将多个list合并为1个list的方法
2018/06/27 Python
在Pytorch中使用样本权重(sample_weight)的正确方法
2019/08/17 Python
细说NumPy数组的四种乘法的使用
2020/12/18 Python
乐观自信演讲稿范文
2014/05/21 职场文书
先进工作者事迹材料
2014/12/23 职场文书
2016年小学党支部创先争优活动总结
2016/04/05 职场文书
python实现网络五子棋
2021/04/11 Python
Python3 多线程(连接池)操作MySQL插入数据
2021/06/09 Python
springboot中一些比较常用的注解总结
2021/06/11 Java/Android