深入浅析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计算两个时间之间天数差的实例代码
Nov 19 Javascript
js获取客户端网卡的IP地址、MAC地址
Mar 26 Javascript
JavaScript类型系统之Object详解
Jan 07 Javascript
微信小程序 前端源码逻辑和工作流详解
Oct 08 Javascript
Javascrip实现文字跳动特效
Nov 27 Javascript
解析AngularJS中get请求URL出现的跨域问题
Dec 01 Javascript
Vue2.0用户权限控制解决方案
Nov 29 Javascript
bootstrap Table实现合并相同行
Jul 19 Javascript
弱类型语言javascript中 a,b 的运算实例小结
Aug 07 Javascript
小程序实现图片预览裁剪插件
Nov 22 Javascript
Vue+Element-U实现分页显示效果
Nov 15 Javascript
js作用域及作用域链工作引擎
Jul 07 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下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
2010/12/29 PHP
PHP中的output_buffering详细介绍
2014/09/27 PHP
mac os快速切换多个PHP版本的方法
2017/03/07 PHP
在 Laravel 中动态隐藏 API 字段的方法
2019/10/25 PHP
几款极品的javascript压缩混淆工具
2007/05/16 Javascript
html超链接打开窗口大小的方法
2013/03/05 Javascript
JavaScript实现图片DIV竖向滑动的方法
2015/04/25 Javascript
jquery读写cookie操作实例分析
2015/12/24 Javascript
利用JS轻松实现获取表单数据
2016/12/06 Javascript
React Router基础使用
2017/01/17 Javascript
angular中的http拦截器Interceptors的实现
2017/02/21 Javascript
jQuery EasyUI结合zTree树形结构制作web页面
2017/09/01 jQuery
JavaScript中的一些实用小技巧总结
2019/04/07 Javascript
vue项目前端错误收集之sentry教程详解
2019/05/27 Javascript
详解在Vue.js编写更好的v-for循环的6种技巧
2020/04/14 Javascript
python实现壁纸批量下载代码实例
2018/01/25 Python
Python使用pandas处理CSV文件的实例讲解
2018/06/22 Python
django 外键model的互相读取方法
2018/12/15 Python
python opencv判断图像是否为空的实例
2019/01/26 Python
详解python中的线程与线程池
2019/05/10 Python
解决Python安装时报缺少DLL问题【两种解决方法】
2019/07/15 Python
jupyter notebook插入本地图片的实现
2020/04/13 Python
django ObjectDoesNotExist 和 DoesNotExist的用法
2020/07/09 Python
CSS3色彩模式有哪些?CSS3 HSL色彩模式的定义
2016/04/26 HTML / CSS
使用jTopo给Html5 Canva中绘制的元素添加鼠标事件
2014/05/15 HTML / CSS
加拿大百叶窗和窗帘定制网站:Blinds
2017/01/30 全球购物
Lookfantastic葡萄牙官方网站:欧洲第一大化妆品零售商
2018/03/17 全球购物
Bath & Body Works阿联酋:在线购买沐浴和身体用品
2021/02/27 全球购物
伊莱克斯阿根廷网上商店:Tienda Electrolux
2021/03/08 全球购物
护理学毕业生自荐信
2013/10/02 职场文书
退休教师欢送会主持词
2014/03/31 职场文书
汉语言文学专业自荐信
2014/06/11 职场文书
优秀教师先进材料
2014/12/16 职场文书
2015年超市工作总结范文
2015/05/26 职场文书
公司仓库管理制度
2015/08/04 职场文书
《落花生》教学反思
2016/02/16 职场文书