深入浅析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 事件小结 表格区别
Aug 13 Javascript
JS中的public和private对象,即static修饰符
Jan 18 Javascript
Uglifyjs(JS代码优化工具)入门 安装使用
Apr 13 Javascript
Javascript高级技巧分享
Feb 25 Javascript
js+css实现的圆角边框TAB选项卡滑动门代码分享(2款)
Aug 26 Javascript
非常棒的jQuery图片轮播效果
Apr 17 Javascript
JavaScript 中对象的深拷贝
Dec 04 Javascript
JS动态添加的div点击跳转到另一页面实现代码
Sep 30 Javascript
原生js的ajax和解决跨域的jsonp(实例讲解)
Oct 16 Javascript
JS匿名函数和匿名自执行函数概念与用法分析
Mar 16 Javascript
微信小程序单选radio及多选checkbox按钮用法示例
Apr 30 Javascript
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
Feb 01 jQuery
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
第三节--定义一个类
2006/11/16 PHP
php设计模式 Interpreter(解释器模式)
2011/06/26 PHP
php 批量生成html,txt文件的实现代码
2013/06/26 PHP
解析linux下安装memcacheq(mcq)全过程笔记
2013/06/27 PHP
PHP中cookie和session的区别实例分析
2014/08/28 PHP
php中序列化与反序列化详解
2017/02/13 PHP
TP5框架实现上传多张图片的方法分析
2020/03/29 PHP
jQuery在vs2008及js文件中的无智能提示的解决方法
2010/12/30 Javascript
js+CSS实现弹出居中背景半透明div层的方法
2015/02/26 Javascript
深入理解JavaScript系列(48):对象创建模式(下篇)
2015/03/04 Javascript
jquery中ready()函数执行的时机和window的load事件比较
2015/06/22 Javascript
JavaScript表单验证开发
2016/11/23 Javascript
JS作用域深度解析
2016/12/29 Javascript
JS作用域链详解
2017/06/26 Javascript
ES6中数组array新增方法实例总结
2017/11/07 Javascript
详谈vue+webpack解决css引用图片打包后找不到资源文件的问题
2018/03/06 Javascript
详解JavaScript的BUG和错误
2018/05/07 Javascript
Vue中全局变量的定义和使用
2019/06/05 Javascript
vue中在vuex的actions中请求数据实例
2019/11/08 Javascript
Vue初始化中的选项合并之initInternalComponent详解
2020/06/11 Javascript
[39:53]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.19
2020/11/19 DOTA
[51:06]DOTA2-DPC中国联赛 正赛 Elephant vs Aster BO3 第二场 1月26日
2021/03/11 DOTA
Python中为feedparser设置超时时间避免堵塞
2014/09/28 Python
使用PDB模式调试Python程序介绍
2015/04/05 Python
python Socket之客户端和服务端握手详解
2017/09/18 Python
Python语言描述随机梯度下降法
2018/01/04 Python
python字符串与url编码的转换实例
2018/05/10 Python
用python编写第一个IDA插件的实例
2018/05/29 Python
解决Python中list里的中文输出到html模板里的问题
2018/12/17 Python
Python3爬楼梯算法示例
2019/03/04 Python
python中bs4.BeautifulSoup的基本用法
2019/07/27 Python
在Mac中配置Python虚拟环境过程解析
2020/06/22 Python
医学专业大学生求职信
2014/07/12 职场文书
公司合作意向书范文
2014/07/30 职场文书
法人委托书的范本格式
2014/09/11 职场文书
Go 自定义package包设置与导入操作
2021/05/06 Golang