深入浅析Vue全局组件与局部组件的区别


Posted in Javascript onJune 15, 2018

1、组件声明

<!-- 全局组件模板father模板 --> 
<template id="father"> 
  <div> 
     <h3>这是{{name}}</h1> 
     <div> 
       <p>这是{{data}}</p> 
     </div> 
  </div> 
</template> 

var FATHER = { 
  template: "#father", 
  data: function() { 
     return { 
       name: "一个全局组件-模板-", 
       data: "数据:18892087118" 
     } 
   } 
 };

2、组件注册

Vue.component('father', FATHER);

3、组件挂载

<h5>全局组件1</h5> 
<father></father>

4、组件实例

<!DOCTYPE html> 
<html> 
<head> 
  <title>vue2.0 --- 局部组件与全局组件</title> 
</head> 
<body> 
  <h3>vue2.0局部组件与全局组件</h3> 
  <div id='app'> 
    <h5>局部组件</h5> 
    <fatherlocal></fatherlocal> 
    <hr> 
    <h5>全局组件1</h5> 
    <father></father> 
    <hr> 
    <h5>全局组件2</h5> 
    <child :fromfather='giveData'></child> 
  </div> 
  <!-- 局部组件模板fatherlocal --> 
  <template id="father-local"> 
    <div> 
      <h3>这是{{name}}</h1> 
      <div> 
        <p>这是{{data}}</p> 
      </div> 
    </div> 
  </template> 
  <!-- 全局组件模板father --> 
  <template id="father"> 
    <div> 
      <h3>这是{{name}}</h1> 
      <div> 
        <p>这是{{data}}</p> 
      </div> 
    </div> 
  </template> 
  <template id="child"> 
    <div> 
      <h3>这是{{name}}</h3> 
      <div> 
        <p>{{cmsgtwo}}</p> 
        <p>{{cmsg}}</p> 
        <p>{{fromfather}}</p> 
        <p>{{fromfather.fmsg}}</p> 
        <p><input type="button" value="按钮" @click=" "></p> 
      </div> 
    </div> 
  </template> 
  <script src="vue_2.2.2_vue.min.js"></script> 
  <script type="text/javascript"> 
    // 定义组件 
    var FATHER = { 
      template: "#father", 
      data: function() { 
        return { 
          name: "一个全局组件-模板-", 
          data: "数据:18892087118" 
        } 
      } 
    }; 
    var CHILD = { 
      template: "#child", 
      data: function() { 
        return { 
          name: "子组件", 
          cmsg: "子组件里的第一个数据", 
          cmsgtwo: "子组件里的第二个数据" 
        } 
      }, 
      methods: { 
        change: function() { 
          this.fromfather.fmsg = "子组件数据被更改了" 
        } 
      }, 
      mounted: function() { 
        this.cmsg = this.fromfather; 
      }, 
      props: ["fromfather"], 
    }; 
    // 注册组件 
    Vue.component('father', FATHER); 
    Vue.component("child", CHILD); 
    var vm = new Vue({ 
      data: { 
        fmsg: "data里的数据", 
        giveData: { 
          fmsg: "这是父组件里的数据" 
        } 
      }, 
      methods: {}, 
      // 局部组件fatherlocal 
      components: { 
        'fatherlocal': { 
          template: '#father-local', 
          data: function() { 
            return { 
              name: "局部-父组件", 
              data: "局部-父组件里的数据" 
            } 
          } 
        } 
      } 
    }).$mount('#app'); 
  </script> 
</body> 
</html>

6、特殊的属性is

当使用 DOM 作为模板时 (例如,将el选项挂载到一个已存在的元素上),你会受到 HTML 的一些限制,因为 Vue 只有在浏览器解析和标准化 HTML 后才能获取模板内容。尤其像这些元素<ul>,<ol>,<table>,<select>限制了能被它包裹的元素,而一些像<option>这样的元素只能出现在某些其它元素内部。

自定义组件<my-row>被认为是无效的内容,因此在渲染的时候会导致错误。变通的方案是使用特殊的is属性:

<body>  
  <div id="app1">  
    <ul>   
      <li is="my-component"></li>  
    </ul>  
  </div>  
  <script>  
    Vue.component("my-component",{   
      template:"<h1>{{message}}</h1>",   
      data:function(){    
        return {     
          message:"hello world"    
        }   
      }  
    });  
    new Vue({   
      el:"#app1"  
      })  
  </script>  
</body>

总结

以上所述是小编给大家介绍的Vue全局组件与局部组件的区别,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.3
Mar 22 Javascript
HTML node相关的一些资料整理
Jan 01 Javascript
Javascript Cookie读写删除操作的函数
Mar 02 Javascript
jQuery中live方法的重复绑定说明
Oct 21 Javascript
js时间日期和毫秒的相互转换
Feb 22 Javascript
利用Angularjs和bootstrap实现购物车功能
Aug 31 Javascript
jquery.rotate.js实现可选抽奖次数和中奖内容的转盘抽奖代码
Aug 23 jQuery
使用JavaScript实现一个小程序之99乘法表
Sep 21 Javascript
js+html5生成自动排列对话框实例
Oct 09 Javascript
js删除数组中某几项的方法总结
Jan 16 Javascript
js实现星星打分效果
Jul 05 Javascript
Postman无法正常返回结果问题解决
Aug 28 Javascript
react-native android状态栏的实现
Jun 15 #Javascript
JS实现监控微信小程序的原理
Jun 15 #Javascript
vue .sync修饰符的使用详解
Jun 15 #Javascript
vue项目webpack中Npm传递参数配置不同域名接口
Jun 15 #Javascript
vue和webpack项目构建过程常用的npm命令详解
Jun 15 #Javascript
vue和webpack安装命令详解
Jun 15 #Javascript
Webpack devServer中的 proxy 实现跨域的解决
Jun 15 #Javascript
You might like
php printf输出格式使用说明
2010/12/05 PHP
PHP中执行MYSQL事务解决数据写入不完整等情况
2014/01/07 PHP
PDO预处理语句PDOStatement对象使用总结
2014/11/20 PHP
php强制更新图片缓存的方法
2015/02/11 PHP
php cookie用户登录的详解及实例代码
2017/01/03 PHP
PHP基于phpqrcode类生成二维码的方法示例详解
2020/08/07 PHP
JavaScript中valueOf函数与toString方法深入理解
2012/12/02 Javascript
jQuery对象和DOM对象之间相互转换的方法介绍
2015/02/28 Javascript
深入理解JavaScript系列(25):设计模式之单例模式详解
2015/03/03 Javascript
JavaScript声明变量名的语法规则
2015/07/10 Javascript
极易被忽视的javascript面试题七问七答
2016/02/15 Javascript
bootstrap警告框使用方法解析
2017/01/13 Javascript
BootStrap的双日历时间控件使用
2017/07/25 Javascript
webpack3+React 的配置全解
2017/08/21 Javascript
如何手动实现es5中的bind方法详解
2018/12/07 Javascript
vue实现将数据存入vuex中以及从vuex中取出数据
2019/11/08 Javascript
vuex入门最详细整理
2020/03/04 Javascript
JS script脚本中async和defer区别详解
2020/06/24 Javascript
Ant Design moment对象和字符串之间的相互转化教程
2020/10/27 Javascript
python执行使用shell命令方法分享
2017/11/08 Python
PyQt5实现拖放功能
2018/04/25 Python
OpenCV+Python识别车牌和字符分割的实现
2019/01/31 Python
Python实现 PS 图像调整中的亮度调整
2019/06/28 Python
使用python对多个txt文件中的数据进行筛选的方法
2019/07/10 Python
django使用haystack调用Elasticsearch实现索引搜索
2019/07/24 Python
Form表单及django的form表单的补充
2019/07/25 Python
使用python写的opencv实时监测和解析二维码和条形码
2019/08/14 Python
Python使用grequests(gevent+requests)并发发送请求过程解析
2019/09/25 Python
Django 允许局域网中的机器访问你的主机操作
2020/05/13 Python
HTML5自定义元素播放焦点图动画的实现
2019/09/25 HTML / CSS
美国一家专业的太阳镜网上零售商:Solstice太阳镜
2016/07/25 全球购物
印度在线杂货店:bigbasket
2018/08/23 全球购物
Wedgwood英国官方网站:英式精致骨瓷餐具、礼品与生活精品,源于1759年
2019/09/02 全球购物
2014年教师个人工作总结
2014/11/10 职场文书
《黄道婆》教学反思
2016/02/22 职场文书
Python+Appium自动化测试的实战
2021/06/30 Python