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 相关文章推荐
javascript div 弹出可拖动窗口
Feb 26 Javascript
js removeChild 障眼法 可能出现的错误
Oct 06 Javascript
关于js遍历表格的实例
Jul 10 Javascript
Jquery设置attr的disabled属性控制某行显示或者隐藏
Sep 25 Javascript
js实现的页面矩阵图形变换特效
Jan 26 Javascript
thinkjs之页面跳转同步异步操作
Feb 05 Javascript
js实现文字无缝向上滚动
Feb 16 Javascript
浅谈JS获取元素的N种方法及其动静态讨论
Aug 25 Javascript
实现图片首尾平滑轮播(JS原生方法—节流)
Oct 17 Javascript
vue生命周期和react生命周期对比【推荐】
Sep 19 Javascript
react高阶组件添加和删除props
Apr 26 Javascript
js canvas实现俄罗斯方块
Oct 11 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
利用php来自动调用不同服务器上的flash
2006/10/09 PHP
一些PHP写的小东西
2006/12/06 PHP
IIS+PHP+MySQL+Zend配置 (视频教程)
2006/12/13 PHP
PHP开源开发框架ZendFramework使用中常见问题说明及解决方案
2014/06/12 PHP
PHP批量去除BOM头代码分享
2015/06/26 PHP
实例简介PHP的一些高级面向对象编程的特性
2015/11/27 PHP
Windows 下安装 swoole 图文教程(php)
2017/06/05 PHP
如何让您的中波更粗更长 - 中波框形天线制作
2021/03/10 无线电
JQuery 常用方法和事件详细介绍
2013/04/18 Javascript
json实现前后台的相互传值详解
2015/01/05 Javascript
JavaScript声明变量名的语法规则
2015/07/10 Javascript
JS组件Bootstrap dropdown组件扩展hover事件
2016/04/17 Javascript
基于JavaScript Array数组方法(新手必看篇)
2016/08/20 Javascript
清除js缓存的多种方法总结
2016/12/09 Javascript
js中的this的指向问题详解
2019/08/29 Javascript
写了个监控nginx进程的Python脚本
2012/05/10 Python
python通过smpt发送邮件的方法
2015/04/30 Python
Python 中 list 的各项操作技巧
2017/04/13 Python
对python中类的继承与方法重写介绍
2019/01/20 Python
pandas读取CSV文件时查看修改各列的数据类型格式
2019/07/07 Python
python3.7 sys模块的具体使用
2019/07/22 Python
python智联招聘爬虫并导入到excel代码实例
2019/09/09 Python
python 采用paramiko 远程执行命令及报错解决
2019/10/21 Python
解决Python列表字符不区分大小写的问题
2019/12/19 Python
基于Python3.6中的OpenCV实现图片色彩空间的转换
2020/02/03 Python
关于Theano和Tensorflow多GPU使用问题
2020/06/19 Python
HTML5安全介绍之内容安全策略(CSP)简介
2012/07/10 HTML / CSS
加拿大鞋网:Globo Shoes
2019/12/26 全球购物
公共机构节能宣传周活动总结
2014/07/09 职场文书
2014年教师节红领巾广播稿
2014/09/10 职场文书
2014年学生管理工作总结
2014/12/20 职场文书
青年文明号汇报材料
2014/12/23 职场文书
争先创优个人总结
2015/03/04 职场文书
民事起诉书范本
2015/05/19 职场文书
开场白怎么写
2015/06/01 职场文书
毕业欢送会致辞
2015/07/29 职场文书