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 相关文章推荐
关于__defineGetter__ 和__defineSetter__的说明
May 12 Javascript
js实现DIV的一些简单控制
Jun 04 Javascript
JS跨域总结
Aug 30 Javascript
showModelDialog弹出文件下载窗口的使用示例
Nov 19 Javascript
原生javascript实现DIV拖拽并计算重复面积
Jan 02 Javascript
javascript弹出页面回传值的方法
Jan 28 Javascript
jQuery实现将页面上HTML标签换成另外标签的方法
Jun 09 Javascript
Vue.js系列之项目结构说明(2)
Jan 03 Javascript
JS基于递归算法实现1,2,3,4,5,6,7,8,9倒序放入数组中的方法
Jan 03 Javascript
基于bootstrap实现bootstrap中文网巨幕效果
May 02 Javascript
vue.js select下拉框绑定和取值方法
Mar 03 Javascript
layui实现动态和静态分页
Apr 28 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
《OVERLORD》第四季,终于等到你!
2020/03/02 日漫
php UTF-8、Unicode和BOM问题
2010/05/18 PHP
php实现的发送带附件邮件类实例
2014/09/22 PHP
php从文件夹随机读取文件的方法
2015/06/01 PHP
PHP的Socket通信之UDP通信实例
2015/07/02 PHP
PHP getallheaders无法获取自定义头(headers)的问题
2016/03/23 PHP
PHP抽象类基本用法示例
2018/12/28 PHP
Prototype使用指南之hash.js
2007/01/10 Javascript
背景音乐每次刷新都可以自动更换
2007/02/01 Javascript
再次更新!MSClass (Class Of Marquee Scroll通用不间断滚动JS封装类 Ver 1.6)
2007/02/05 Javascript
写自已的js类库需要的核心代码
2012/07/16 Javascript
javascript之典型高阶函数应用介绍二
2013/01/10 Javascript
JS解决ie6下png透明的方法实例
2013/08/02 Javascript
JavaScript常用脚本汇总(一)
2015/03/04 Javascript
JavaScript获取一个范围内日期的方法
2015/04/24 Javascript
JavaScript判断undefined类型的正确方法
2015/06/30 Javascript
JavaScript精炼之构造函数 Constructor及Constructor属性详解
2015/11/05 Javascript
JS三级可折叠菜单实现方法
2016/02/29 Javascript
纯js模仿windows系统日历
2017/02/04 Javascript
vue中Npm run build 根据环境传递参数方法来打包不同域名
2018/03/29 Javascript
NodeJS 文件夹拷贝以及删除功能
2019/09/03 NodeJs
[02:36]DOTA2英雄基础教程 一击致命幻影刺客
2013/12/06 DOTA
Python代理抓取并验证使用多线程实现
2013/05/03 Python
python爬虫之urllib3的使用示例
2018/07/09 Python
python画微信表情符的实例代码
2019/10/09 Python
python判断正负数方式
2020/06/03 Python
Python性能分析工具py-spy原理用法解析
2020/07/27 Python
HTML5实现QQ聊天气泡效果
2017/06/26 HTML / CSS
Agoda香港:全球特价酒店预订
2017/05/07 全球购物
美国最佳在线航班预订网站:LookupFare
2019/03/26 全球购物
中国梦口号
2014/06/13 职场文书
群众路线教育实践活动对照检查材料思想汇报(副处级领导)
2014/10/04 职场文书
教师个人师德总结
2015/02/06 职场文书
2015年网管个人工作总结
2015/05/22 职场文书
my.ini优化mysql数据库性能的十个参数(推荐)
2021/05/26 MySQL
Python经常使用的一些内置函数
2022/04/11 Python