深入浅析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 事件流和事件绑定
Jul 16 Javascript
利用JS判断用户是否上网(连接网络)
Dec 23 Javascript
jQuery html()方法使用不了无法显示内容的问题
Aug 06 Javascript
DOM操作一些常用的属性汇总
Mar 13 Javascript
javascript常用功能汇总
Jul 05 Javascript
详解iframe与frame的区别
Jan 13 Javascript
javascript特殊日历控件分享
Mar 07 Javascript
JS检测页面中哪个HTML标签触发点击事件的方法
Jun 17 Javascript
jquery+ajax+text文本框实现智能提示完整实例
Jul 09 Javascript
在Vue组件化中利用axios处理ajax请求的使用方法
Aug 25 Javascript
vue项目打包为APP,静态资源正常显示,但API请求不到数据的操作
Sep 12 Javascript
原生JavaScript实现贪吃蛇游戏
Nov 04 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中global和$GLOBALS[]的分析之一
2012/02/02 PHP
php对数组内元素进行随机调换的方法
2015/05/12 PHP
PHP实现的简单AES加密解密算法实例
2017/05/29 PHP
php变量与字符串的增删改查操作示例
2020/05/07 PHP
列表内容的选择
2006/06/30 Javascript
this[] 指的是什么内容 讨论
2007/03/24 Javascript
二行代码解决全部网页木马
2008/03/28 Javascript
13个绚丽的Jquery 界面设计网站推荐
2010/09/28 Javascript
checkbox设置复选框的只读效果不让用户勾选
2013/08/12 Javascript
javascript操作html控件实例(javascript添加html)
2013/12/02 Javascript
js实现编辑div节点名称的方法
2014/12/17 Javascript
jQuery随机密码生成的方法
2015/03/09 Javascript
Nodejs实战心得之eventproxy模块控制并发
2015/10/27 NodeJs
JavaScript获取function所有参数名的方法
2015/10/30 Javascript
js中获取时间new Date()的全面介绍
2016/06/20 Javascript
Angular页面间切换及传值的4种方法
2016/11/04 Javascript
js微信分享实现代码
2020/10/11 Javascript
ES6解构赋值的功能与用途实例分析
2017/10/31 Javascript
vue如何自动化打包测试环境和正式环境的dist/test文件
2019/06/06 Javascript
[01:46]TI4西雅图DOTA2前线报道 中国选手抱团调时差
2014/07/08 DOTA
[50:11]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第三场
2018/04/09 DOTA
python字符串连接的N种方式总结
2014/09/17 Python
Python实现一个简单的MySQL类
2015/01/07 Python
python 定时修改数据库的示例代码
2018/04/08 Python
Django分页查询并返回jsons数据(中文乱码解决方法)
2018/08/02 Python
python创建文件备份的脚本
2018/09/11 Python
centos6.8安装python3.7无法import _ssl的解决方法
2018/09/17 Python
详解Python给照片换底色(蓝底换红底)
2019/03/22 Python
Ranorex通过Python将报告发送到邮箱的方法
2020/01/12 Python
Python实现计算图像RGB均值方式
2020/06/04 Python
监察建议书范文
2014/03/12 职场文书
党的群众路线教育实践活动对照检查材料范文
2014/09/24 职场文书
三十年同学聚会感言
2015/07/30 职场文书
公司要求试用期员工提交“述职报告”,该怎么写?
2019/07/17 职场文书
tensorflow+k-means聚类简单实现猫狗图像分类的方法
2021/04/28 Python
MySQL提升大量数据查询效率的优化神器
2022/07/07 MySQL