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实现动态标签云
Oct 16 Javascript
jQuery+CSS3折叠卡片式下拉列表框实现效果
Nov 02 Javascript
关于JS变量和作用域详解
Jul 28 Javascript
基于Vue如何封装分页组件
Dec 16 Javascript
Angular JS 生成动态二维码的方法
Feb 23 Javascript
js获取一组日期中最近连续的天数
May 25 Javascript
在angular 6中使用 less 的实例代码
May 13 Javascript
react native基于FlatList下拉刷新上拉加载实现代码示例
Sep 30 Javascript
Vue起步(无cli)的啊教程详解
Apr 11 Javascript
VUE解决 v-html不能触发点击事件的问题
Oct 28 Javascript
解决elementui表格操作列自适应列宽
Dec 28 Javascript
JavaScript展开运算符和剩余运算符的区别详解
Feb 18 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下防止单引号,双引号在接受页面转义的设置方法
2008/09/25 PHP
详解Yii2 之 生成 URL 的方法
2017/06/16 PHP
用 javascript 实现的点击复制代码
2007/03/24 Javascript
Javascript 继承机制实例
2009/08/12 Javascript
js 页面刷新location.reload和location.replace的区别小结
2009/12/24 Javascript
JS 新增Cookie 取cookie值 删除cookie 举例详解
2014/10/10 Javascript
js实现有时间限制消失的图片方法
2015/02/27 Javascript
jQuery多条件筛选如何实现
2015/11/04 Javascript
图解js图片轮播效果
2015/12/20 Javascript
BootStrap使用popover插件实现鼠标经过显示并保持显示框
2016/06/23 Javascript
JavaScript你不知道的一些数组方法
2017/08/18 Javascript
Three.js利用性能插件stats实现性能监听的方法
2017/09/25 Javascript
详解Vue.js项目API、Router配置拆分实践
2018/03/16 Javascript
vue+axios+promise实际开发用法详解
2018/10/15 Javascript
Python中使用ConfigParser解析ini配置文件实例
2014/08/30 Python
浅析Python编写函数装饰器
2016/03/18 Python
python实现雨滴下落到地面效果
2018/06/21 Python
Python实现矩阵相乘的三种方法小结
2018/07/26 Python
利用python开发app实战的方法
2019/07/09 Python
python实现批量文件重命名
2019/10/31 Python
解决pyqt5异常退出无提示信息的问题
2020/04/08 Python
使用keras实现非线性回归(两种加激活函数的方式)
2020/07/05 Python
Django配置跨域并开发测试接口
2020/11/04 Python
CSS3属性box-shadow使用详细教程
2012/01/21 HTML / CSS
香港永安旅游网:Wing On Travel
2017/04/10 全球购物
印度网上药店:1mg
2017/10/13 全球购物
日本著名的服饰鞋帽综合类购物网站:MAGASEEK
2019/01/09 全球购物
Parfumdreams芬兰:购买香水和化妆品
2021/02/13 全球购物
一些Solaris面试题
2013/03/22 面试题
Python里面如何拷贝一个对象
2014/02/17 面试题
教师个人剖析材料
2014/02/05 职场文书
2014年预备党员学习两会心得体会
2014/03/17 职场文书
《他得的红圈圈最多》教学反思
2014/04/24 职场文书
老公保证书
2015/01/17 职场文书
2015年医院创卫工作总结
2015/04/22 职场文书
公司员工手册范本
2015/05/14 职场文书