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 相关文章推荐
jQuery解决下拉框select设宽度时IE 6/7/8下option超出显示不全
May 27 Javascript
JavaScript获得表单target属性的方法
Apr 02 Javascript
jquery拖拽排序简单实现方法(效果增强版)
Feb 16 Javascript
livereload工具实现前端可视化开发【推荐】
Dec 23 Javascript
jquery+css实现简单的图片轮播效果
Aug 07 jQuery
JavaScript代码判断输入的字符串是否含有特殊字符和表情代码实例
Aug 17 Javascript
vue-swiper的使用教程
Aug 30 Javascript
javascript判断一个变量是数组还是对象
Apr 10 Javascript
Vue3.0数据响应式原理详解
Oct 09 Javascript
ES6 Symbol在对象中的作用实例分析
Jun 06 Javascript
jquery实现上传图片功能
Jun 29 jQuery
vue-resource 拦截器interceptors使用详解
Jan 18 Vue.js
详解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 字符串压缩方法比较示例
2014/01/23 PHP
Fatal error: session_start(): Failed to initialize storage module: files问题解决方法
2014/05/04 PHP
ThinkPHP分组下自定义标签库实例
2014/11/01 PHP
使用PHP生成PDF方法详解
2015/01/23 PHP
PHP 验证身份证是否合法的函数
2017/02/09 PHP
PHP实现批量清空删除指定文件夹所有内容的方法
2017/05/30 PHP
JQUERY CHECKBOX全选,取消全选,反选方法三
2008/08/30 Javascript
基于JavaScript实现文字超出部分隐藏
2016/02/29 Javascript
Bootstrap实现下拉菜单效果
2016/04/29 Javascript
BootStrap中Table分页插件使用详解
2016/10/09 Javascript
Node.js中路径处理模块path详解
2016/11/14 Javascript
vue+element-ui集成随机验证码+用户名+密码的form表单验证功能
2018/08/05 Javascript
Vue Cli 3项目使用融云IM实现聊天功能的方法
2019/04/19 Javascript
最简单的vue消息提示全局组件的方法
2019/06/16 Javascript
layui table 列宽百分比显示的实现方法
2019/09/28 Javascript
[14:50]2018DOTA2亚洲邀请赛开幕式
2018/04/03 DOTA
python使用装饰器和线程限制函数执行时间的方法
2015/04/18 Python
深入讲解Python中的迭代器和生成器
2015/10/26 Python
利用Python生成文件md5校验值函数的方法
2017/01/10 Python
python3.4用循环往mysql5.7中写数据并输出的实现方法
2017/06/20 Python
DataFrame中的object转换成float的方法
2018/04/10 Python
用python标准库difflib比较两份文件的异同详解
2018/11/16 Python
python 检查是否为中文字符串的方法
2018/12/28 Python
Python之指数与E记法的区别详解
2019/11/21 Python
Python线程条件变量Condition原理解析
2020/01/20 Python
python异常处理try except过程解析
2020/02/03 Python
ASP.NET中的身份验证有那些
2012/07/13 面试题
英语文学专业学生的自我评价
2013/10/31 职场文书
学校后勤人员职责
2013/12/27 职场文书
货物运输服务质量承诺书
2014/05/29 职场文书
大学军训自我鉴定大全
2014/09/18 职场文书
公司更名通知函
2015/04/24 职场文书
最感人的道歉情书
2015/05/12 职场文书
JavaScript实现淘宝商品图切换效果
2021/04/29 Javascript
Pytorch使用shuffle打乱数据的操作
2021/05/20 Python
pytorch model.cuda()花费时间很长的解决
2021/06/01 Python