深入浅析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 相关文章推荐
Jquery常用技巧收集整理篇
Nov 14 Javascript
使用jquery实现IE下按backspace相当于返回操作
Mar 18 Javascript
jQuery实现倒计时按钮功能代码分享
Sep 03 Javascript
jQuery实现带有动画效果的回到顶部和底部代码
Nov 04 Javascript
基于javascript简单实现对身份证校验
Jan 25 Javascript
JavaScript仿微信(电话)联系人列表滑动字母索引实例讲解(推荐)
Aug 16 Javascript
基于vue2.0实现简单轮播图
Nov 27 Javascript
vue2.0 + element UI 中 el-table 数据导出Excel的方法
Mar 02 Javascript
用Node编写RESTful API接口的示例代码
Jul 04 Javascript
JS获取表格视图所选行号的ids过程解析
Feb 21 Javascript
js 闭包深入理解与实例分析
Mar 19 Javascript
vue 输入电话号码自动按3-4-4分割功能的实现代码
Apr 30 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中cookie的作用域
2008/03/27 PHP
PHP之COOKIE支持详解
2010/09/20 PHP
PHP目录函数实现创建、读取目录教程实例
2011/01/13 PHP
PHP实现的线索二叉树及二叉树遍历方法详解
2016/04/25 PHP
laravel开发环境homestead搭建过程详解
2020/07/03 PHP
Javascript操作select方法大全[新增、修改、删除、选中、清空、判断存在等]
2008/09/26 Javascript
基于jQuery的ajax功能实现web service的json转化
2009/08/29 Javascript
JQuery动态给table添加、删除行 改进版
2011/01/19 Javascript
详解angularjs中的隔离作用域理解以及绑定策略
2017/05/31 Javascript
js实现随机数字字母验证码
2017/06/19 Javascript
解决vue页面刷新或者后退参数丢失的问题
2018/03/13 Javascript
element ui table(表格)实现点击一行展开功能
2018/12/04 Javascript
Node.js实现用户评论社区功能(体验前后端开发的乐趣)
2019/05/09 Javascript
JavaScript实现留言板案例
2020/03/17 Javascript
vue 自定指令生成uuid滚动监听达到tab表格吸顶效果的代码
2020/09/16 Javascript
python实现机械分词之逆向最大匹配算法代码示例
2017/12/13 Python
Python实现的爬虫刷回复功能示例
2018/06/07 Python
python 在指定范围内随机生成不重复的n个数实例
2019/01/28 Python
python实现移位加密和解密
2019/03/22 Python
解决win7操作系统Python3.7.1安装后启动提示缺少.dll文件问题
2019/07/15 Python
Python银行系统实战源码
2019/10/25 Python
python实现大量图片重命名
2020/03/23 Python
Python文字截图识别OCR工具实例解析
2020/03/05 Python
python判断一个变量是否已经设置的方法
2020/08/13 Python
cookies应对python反爬虫知识点详解
2020/11/25 Python
解决pytorch 的state_dict()拷贝问题
2021/03/03 Python
你的自行车健身专家:FaFit24
2016/11/16 全球购物
Nike台湾官方商店:Nike.com (TW)
2017/08/16 全球购物
日本即尚网:JSHOPPERS.com(支持中文)
2019/12/03 全球购物
C和C++经典笔试题附答案解析
2014/08/18 面试题
党校学习自我鉴定
2014/02/24 职场文书
创建精神文明单位实施方案
2014/03/08 职场文书
庆七一活动简报
2015/07/20 职场文书
阳光体育运动标语口号
2015/12/26 职场文书
2016全国“质量月”活动标语口号
2015/12/26 职场文书
MYSQL中文乱码问题的解决方案
2022/06/14 MySQL