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 相关文章推荐
TimergliderJS 一个基于jQuery的时间轴插件
Dec 07 Javascript
javascript实时获取鼠标坐标值并显示的方法
Apr 30 Javascript
学习javascript面向对象 实例讲解面向对象选项卡
Jan 04 Javascript
JS组件系列之Bootstrap table表格组件神器【终结篇】
May 10 Javascript
angularJS 发起$http.post和$http.get请求的实现方法
May 18 Javascript
Vue.js devtool插件安装后无法使用的解决办法
Nov 27 Javascript
Vue之Vue.set动态新增对象属性方法
Feb 23 Javascript
详解vue中组件参数
Jul 09 Javascript
JSON是什么?有哪些优点?JSON和XML的区别?
Apr 29 Javascript
小程序实现锚点滑动效果
Sep 23 Javascript
js中Function引用类型常见有用的方法和属性详解
Dec 11 Javascript
js实现点击选项置顶动画效果
Aug 25 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基于pdo的数据库操作类【可支持mysql、sqlserver及oracle】
2018/05/21 PHP
关于laravel5.5的定时任务详解(demo)
2019/10/23 PHP
List the UTC Time on a Computer
2007/06/11 Javascript
JS求平均值的小例子
2013/11/29 Javascript
Jquery焦点与失去焦点示例应用
2014/06/10 Javascript
13 款最热门的 jQuery 图像 360 度旋转插件推荐
2014/12/09 Javascript
JavaScript简单表格编辑功能实现方法
2015/04/16 Javascript
JavaScript中setter和getter方法介绍
2016/07/11 Javascript
mvc 、bootstrap 结合分布式图简单实现分页
2016/10/10 Javascript
微信 java 实现js-sdk 图片上传下载完整流程
2016/10/21 Javascript
js正则表达式惰性匹配和贪婪匹配用法分析
2016/12/26 Javascript
AngularJS折叠菜单实现方法示例
2017/05/18 Javascript
webpack4与babel配合使es6代码可运行于低版本浏览器的方法
2018/10/12 Javascript
Nodejs中怎么实现函数的串行执行
2019/03/02 NodeJs
el-input 标签中密码的显示和隐藏功能的实例代码
2019/07/19 Javascript
[01:34]DAC2018主赛事第四日五佳镜头 Gh巨牙海民助Miracle-死里逃生
2018/04/07 DOTA
[38:31]完美世界DOTA2联赛PWL S3 Magma vs GXR 第一场 12.13
2020/12/17 DOTA
Python字符串处理函数简明总结
2015/04/13 Python
在Python的Django框架中获取单个对象数据的简单方法
2015/07/17 Python
Python基于pillow判断图片完整性的方法
2016/09/18 Python
flask + pymysql操作Mysql数据库的实例
2017/11/13 Python
Python可变参数*args和**kwargs用法实例小结
2018/04/27 Python
python pycurl验证basic和digest认证的方法
2018/05/02 Python
python查看模块安装位置的方法
2018/10/16 Python
Selenium的使用详解
2018/10/19 Python
Python使用turtle库绘制小猪佩奇(实例代码)
2020/01/16 Python
Python中os模块功能与用法详解
2020/02/26 Python
虚拟环境及venv和virtualenv的区别说明
2021/02/05 Python
美国最大的存储市场:SpareFoot
2018/07/23 全球购物
linux面试题参考答案(8)
2016/04/19 面试题
小学生新学期寄语
2014/01/19 职场文书
元旦红领巾广播稿
2014/02/19 职场文书
慈善捐赠倡议书
2014/08/30 职场文书
九华山导游词
2015/02/03 职场文书
常住证明范本
2015/06/23 职场文书
微信小程序APP的事件绑定以及传递参数时的冒泡和捕获
2022/04/19 Javascript