深入浅析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 函数调用规则
Aug 26 Javascript
JavaScript 嵌套函数指向this对象错误的解决方法
Mar 15 Javascript
js实现人才网站职位选择功能的方法
Aug 14 Javascript
jQuery+CSS3实现3D立方体旋转效果
Nov 10 Javascript
Javascript类型系统之undefined和null浅析
Jul 13 Javascript
jQuery轻松实现无缝轮播效果
Mar 22 jQuery
Angularjs上传图片实例详解
Aug 06 Javascript
jQuery实现的简单动态添加、删除表格功能示例
Sep 21 jQuery
详解Vue开发微信H5微信分享签名失败问题解决方案
Aug 09 Javascript
Angularjs实现数组随机排序的方法
Oct 02 Javascript
el-select数据过多懒加载的解决(loadmore)
May 29 Javascript
Javascript生成器(Generator)的介绍与使用
Jan 31 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
《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
Discuz!5的PHP代码高亮显示插件(黑暗中的舞者更新)
2007/01/29 PHP
人尽可用的Windows技巧小贴士之下篇
2007/03/22 PHP
php中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
2010/08/21 PHP
php自定义session示例分享
2014/04/22 PHP
php实现保存周期为1天的购物车类
2017/07/07 PHP
js 点击按钮弹出另一页,选择值后,返回到当前页
2010/05/26 Javascript
JS判断当前日期是否大于某个日期的实现代码
2012/09/02 Javascript
hover的用法及live的用法介绍(鼠标悬停效果)
2013/03/29 Javascript
cookie中的path与domain属性详解
2013/12/18 Javascript
javascript中定义类的方法详解
2015/02/10 Javascript
JavaScript中的lastIndexOf()方法使用详解
2015/06/06 Javascript
如何用javascript计算文本框还能输入多少个字符
2015/07/29 Javascript
原生js模拟淘宝购物车项目实战
2015/11/18 Javascript
js剪切板应用clipboardData实例解析
2016/05/29 Javascript
Vue.js实现无限加载与分页功能开发
2016/11/03 Javascript
Node.js 数据加密传输浅析
2016/11/16 Javascript
vuejs2.0子组件改变父组件的数据实例
2017/05/10 Javascript
Vue单页及多页应用全局配置404页面实践记录
2018/05/22 Javascript
vue+axios新手实践实现登陆的示例代码
2018/06/06 Javascript
vue进入页面时滚动条始终在底部代码实例
2019/03/26 Javascript
微信小程序封装自定义弹窗的实现代码
2019/05/08 Javascript
Vue中函数防抖节流的理解及应用实现
2020/04/24 Javascript
pymongo实现控制mongodb中数字字段做加法的方法
2015/03/26 Python
浅析Python中的多重继承
2015/04/28 Python
python爬虫框架scrapy实战之爬取京东商城进阶篇
2017/04/24 Python
python3使用SMTP发送简单文本邮件
2018/06/19 Python
mac PyCharm添加Python解释器及添加package路径的方法
2018/10/29 Python
Python编程深度学习绘图库之matplotlib
2018/12/28 Python
基于python纯函数实现井字棋游戏
2020/05/27 Python
信息系统专业个人求职信范文
2013/12/07 职场文书
学前班评语大全
2014/05/04 职场文书
电大奖学金获奖感言
2014/08/14 职场文书
毕业论文指导教师评语
2014/12/30 职场文书
2019通用版导游词范本!
2019/08/07 职场文书
golang中的空slice案例
2021/04/27 Golang