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 相关文章推荐
IE6下通过a标签点击切换图片的问题
Nov 14 Javascript
JavaScript入门之事件、cookie、定时等
Oct 21 Javascript
浅析jQuery1.8的几个小变化
Dec 10 Javascript
JavaScript获取鼠标移动时的坐标(兼容IE8、chome谷歌、Firefox)
Sep 13 Javascript
JavaScript中的substr()方法使用详解
Jun 06 Javascript
学习Bootstrap组件之下拉菜单
Jul 28 Javascript
两款JS脚本判断手机浏览器类型跳转WAP手机网站
Oct 16 Javascript
基于jQuery实现简单的折叠菜单效果
Nov 23 Javascript
jQuery封装animate.css的实例
Jan 04 jQuery
Angular 向组件传递模板的两种方法
Feb 23 Javascript
vue.js购物车添加商品组件的方法
Sep 17 Javascript
JS实现星星海特效
Dec 24 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
世界咖啡生产者论坛呼吁:需要立即就咖啡价格采取认真行动
2021/03/06 咖啡文化
一个可以找出源代码中所有中文的工具
2006/10/25 PHP
默默小谈PHP&amp;MYSQL分页原理及实现
2007/01/02 PHP
PHP imagegrabscreen和imagegrabwindow(截取网站缩略图)的实例代码
2013/11/07 PHP
php数组使用规则分析
2015/02/27 PHP
php使用timthumb生成缩略图的方法
2016/01/22 PHP
静态的动态续篇之来点XML
2006/08/15 Javascript
用js计算页面执行时间的函数
2006/12/07 Javascript
解析jQuery与其它js(Prototype)库兼容共存
2013/07/04 Javascript
jQuery过滤选择器详解
2015/01/13 Javascript
js实现卡片式项目管理界面UI设计效果
2015/12/08 Javascript
解析javascript图片懒加载与预加载的分析总结
2016/10/27 Javascript
详解windows下vue-cli及webpack 构建网站(三)使用组件
2017/06/17 Javascript
深入浅析Vue中的 computed 和 watch
2018/06/06 Javascript
对vue中methods互相调用的方法详解
2018/08/30 Javascript
教你完全理解ReentrantLock重入锁
2019/06/03 Javascript
vue页面引入three.js实现3d动画场景操作
2020/08/10 Javascript
解决Mint-ui 框架Popup和Datetime Picker组件滚动穿透的问题
2020/11/04 Javascript
Python利用正则表达式匹配并截取指定子串及去重的方法
2015/07/30 Python
Python处理JSON数据并生成条形图
2016/08/05 Python
Python访问MongoDB,并且转换成Dataframe的方法
2018/10/15 Python
python下载微信公众号相关文章
2019/02/26 Python
基于python实现百度翻译功能
2019/05/09 Python
Python解析json时提示“string indices must be integers”问题解决方法
2019/07/31 Python
Django文件上传与下载(FileFlid)
2019/10/06 Python
解决pycharm导入本地py文件时,模块下方出现红色波浪线的问题
2020/06/01 Python
Python预测2020高考分数和录取情况
2020/07/08 Python
加拿大的标志性百货公司:Hudson’s Bay(哈得逊湾)
2019/09/03 全球购物
党员个人公开承诺书
2014/08/29 职场文书
2014领导干部四风问题查摆思想汇报
2014/09/13 职场文书
自习课吵闹检讨书范文
2014/09/26 职场文书
2015年党员自我剖析材料
2014/12/17 职场文书
小学少先队辅导员述职报告
2015/01/10 职场文书
2015年大学班主任工作总结
2015/04/30 职场文书
Html分层的box-shadow效果的示例代码
2021/03/30 HTML / CSS
python中数组和列表的简单实例
2022/03/25 Python