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中dom操作和事件的实例学习 下拉框应用
Dec 01 Javascript
JS操作数据库的实例代码
Oct 17 Javascript
javascript的创建多行字符串的7种方法
Apr 29 Javascript
JS中完美兼容各大浏览器的scrolltop方法
Apr 17 Javascript
你真的了解BOM中的history对象吗
Feb 13 Javascript
Angular 4根据组件名称动态创建出组件的方法教程
Nov 01 Javascript
Three.JS实现三维场景
Dec 30 Javascript
Koa从零搭建到Api实现项目的搭建方法
Jul 30 Javascript
vue-cli3配置与跨域处理方法
Aug 17 Javascript
微信小程序返回上一页传参并刷新过程解析
Dec 13 Javascript
Element Breadcrumb 面包屑的使用方法
Jul 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
基于AppServ,XAMPP,WAMP配置php.ini去掉警告信息(NOTICE)的方法详解
2013/05/07 PHP
PHP中使用gettext解决国际化问题的例子(i18n)
2014/06/13 PHP
WordPress中制作导航菜单的PHP核心方法讲解
2015/12/11 PHP
CentOS7编译安装php7.1的教程详解
2019/04/18 PHP
PHP中遍历数组的三种常用方法实例分析
2019/06/24 PHP
推荐:极酷右键菜单
2006/11/29 Javascript
Javascript remove 自定义数组删除方法
2009/10/20 Javascript
JS操作Cookies的小例子
2013/10/15 Javascript
Javascript字符串浏览器兼容问题分析
2014/12/01 Javascript
JavaScript必知必会(十) call apply bind的用法说明
2016/06/08 Javascript
BootStrap下拉框在firefox浏览器界面不友好的解决方案
2016/08/18 Javascript
AngularJS自定义控件实例详解
2016/12/13 Javascript
jquery插件锦集【推荐】
2016/12/16 Javascript
移动端使用localResizeIMG4压缩图片
2017/04/22 Javascript
node.js操作mongodb简单示例分享
2017/05/25 Javascript
select自定义小三角样式代码(实用总结)
2017/08/18 Javascript
基于jQuery实现Ajax验证用户名是否可用实例
2018/03/25 jQuery
jquery操作checkbox的常用方法总结【附测试源码下载】
2019/06/10 jQuery
vue中组件通信的八种方式(值得收藏!)
2019/08/09 Javascript
js实现简单的打印表格
2020/01/15 Javascript
JavaScript常用工具函数大全
2020/05/06 Javascript
微信小程序实现列表的横向滑动方式
2020/07/15 Javascript
JavaScript通如何过RGraph实现动态仪表盘
2020/10/15 Javascript
Javascript中的奇葩知识,你知道吗?
2021/01/25 Javascript
[54:47]Liquid vs VP Supermajor决赛 BO 第五场 6.10
2018/07/05 DOTA
python实现微信防撤回神器
2019/04/29 Python
Django使用模板后无法找到静态资源文件问题解决
2019/07/19 Python
Django框架表单操作实例分析
2019/11/04 Python
pytorch实现查看当前学习率
2020/06/24 Python
python3实现语音转文字(语音识别)和文字转语音(语音合成)
2020/10/14 Python
pycharm激活码2020最新分享适用pycharm2020最新版亲测可用
2020/11/22 Python
中国首家奢侈品O2O网购平台:第五大道奢侈品网
2017/12/14 全球购物
银行柜员应聘推荐信范文
2013/11/24 职场文书
小学生家长寄语
2014/04/02 职场文书
关于感恩的作文
2019/08/26 职场文书
基于Pygame实现简单的贪吃蛇游戏
2021/12/06 Python