深入浅析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 相关文章推荐
js函数名与form表单元素同名冲突的问题
Mar 07 Javascript
jQuery+ajax实现动态执行脚本的方法
Jan 27 Javascript
jQuery获得子元素个数的方法
Apr 14 Javascript
JavaScript中Math.SQRT2属性的使用详解
Jun 14 Javascript
JavaScript之AOP编程实例
Jul 17 Javascript
JavaScript的new date等日期函数在safari中遇到的坑
Oct 24 Javascript
jQuery实现表格元素动态创建功能
Jan 09 Javascript
Node连接mysql数据库方法介绍
Feb 07 Javascript
Node.js中sequelize时区的配置方法
Dec 10 Javascript
详解webpack4多入口、多页面项目构建案例
May 25 Javascript
jQuery序列化form表单数据为JSON对象的实现方法
Sep 20 jQuery
js全屏事件fullscreenchange 实现全屏、退出全屏操作
Sep 17 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 小心urldecode引发的SQL注入漏洞
2011/10/27 PHP
php cli换行示例
2014/04/22 PHP
php微信公众平台开发(四)回复功能开发
2016/12/06 PHP
Thinkphp5框架实现获取数据库数据到视图的方法
2019/08/14 PHP
PHP利用缓存处理用户注册时的邮箱验证,成功后用户数据存入数据库操作示例
2019/12/31 PHP
通过JAVAScript实现页面自适应
2007/01/19 Javascript
基于jQuery实现复选框的全选 全不选 反选功能
2014/11/24 Javascript
AngularJS+Node.js实现在线聊天室
2015/08/28 Javascript
jQuery实现的省市县三级联动菜单效果完整实例
2016/08/01 Javascript
Bootstrap 网站实例之单页营销网站
2016/10/20 Javascript
Vue.js组件间的循环引用方法示例
2017/12/27 Javascript
详解vue axios用post提交的数据格式
2018/08/07 Javascript
微信小程序实现tab左右切换效果
2020/11/15 Javascript
jQuery实现异步上传一个或多个文件
2020/08/17 jQuery
在Python中操作时间之tzset()方法的使用教程
2015/05/22 Python
Python如何判断数独是否合法
2016/09/08 Python
Django中ORM表的创建和增删改查方法示例
2017/11/15 Python
Jupyter notebook在mac:linux上的配置和远程访问的方法
2019/01/14 Python
Python 通过微信控制实现app定位发送到个人服务器再转发微信服务器接收位置信息
2019/08/05 Python
在脚本中单独使用django的ORM模型详解
2020/04/01 Python
Python中常见的数制转换有哪些
2020/05/27 Python
GAP欧盟网上商店:GAP EU
2016/09/13 全球购物
雅诗兰黛香港官网:Estee Lauder香港
2017/09/26 全球购物
澳大利亚领先的女性运动服品牌:Lorna Jane
2020/06/19 全球购物
优秀应届毕业生推荐信
2014/02/18 职场文书
优秀党务工作者事迹材料
2014/05/07 职场文书
关于安全演讲稿
2014/05/09 职场文书
本科应届生求职信
2014/08/05 职场文书
市场策划求职信
2014/08/07 职场文书
软件研发工程师岗位职责
2014/09/30 职场文书
四风查摆问题及整改措施
2014/10/10 职场文书
酒店保洁员岗位职责
2015/02/26 职场文书
财务出纳岗位职责
2015/03/31 职场文书
2015年农村党员公开承诺事项
2015/04/28 职场文书
火烧圆明园的观后感
2015/06/03 职场文书
党员廉政准则心得体会
2016/01/20 职场文书