深入浅析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 相关文章推荐
检测是否已安装 .NET Framework 3.5的js脚本
Feb 14 Javascript
对之前写的jquery分页做下升级
Jun 19 Javascript
深入理解Javascript中this的作用域
Aug 12 Javascript
Bootstrap所支持的表单控件实例详解
May 16 Javascript
Js调用Java方法并互相传参的简单实例
Aug 11 Javascript
判断数组的最佳方法(推荐)
Oct 11 Javascript
JavaScript正则表达式替换字符串中图片地址(img src)的方法
Jan 13 Javascript
js实现手机拍照上传功能
Jan 17 Javascript
详解Webpack DLL用法以及功能
Jul 11 Javascript
微信小程序switch组件使用详解
Jan 31 Javascript
vue实现评价星星功能
Jun 30 Javascript
原生js+canvas实现贪吃蛇效果
Aug 02 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之第九天
2006/10/09 PHP
PHP5新特性: 更加面向对象化的PHP
2006/11/18 PHP
php使用ftp实现文件上传与下载功能
2017/07/21 PHP
Javascript模块模式分析
2008/05/16 Javascript
jquery.alert 弹出式复选框实现代码
2009/06/15 Javascript
javaScript call 函数的用法说明
2010/04/09 Javascript
jquery easyui combobox模糊过滤(示例代码)
2013/11/30 Javascript
javascript实现密码验证
2015/11/10 Javascript
JavaScript获取当前url根目录(路径)
2016/06/17 Javascript
js获取form表单所有数据的简单方法
2016/08/18 Javascript
jquery dataTable 获取某行数据
2017/05/05 jQuery
使用AngularJS编写多选按钮选中时触发指定方法的指令代码详解
2017/07/24 Javascript
前端常见跨域解决方案(全)
2017/09/19 Javascript
不依任何赖第三方,单纯用vue实现Tree 树形控件的案例
2020/09/21 Javascript
原生js实现表格循环滚动
2020/11/24 Javascript
python抓取网页内容示例分享
2014/02/24 Python
python 平衡二叉树实现代码示例
2018/07/07 Python
Python对切片命名的实现方法
2018/10/16 Python
python 随机森林算法及其优化详解
2019/07/11 Python
Python for循环及基础用法详解
2019/11/08 Python
Python 写了个新型冠状病毒疫情传播模拟程序
2020/02/14 Python
python3+selenium获取页面加载的所有静态资源文件链接操作
2020/05/04 Python
python 实现单例模式的5种方法
2020/09/23 Python
TensorFlow的环境配置与安装方法
2021/02/20 Python
CSS3 box-shadow属性实例详解
2020/06/19 HTML / CSS
HTML5 新标签全部总汇(推荐)
2016/06/13 HTML / CSS
美国最好的保健品打折网店:Swanson
2017/08/04 全球购物
智能旅行箱:Horizn Studios
2018/04/30 全球购物
屈臣氏官方旗舰店:亚洲享负盛名的保健及美妆零售商
2019/03/15 全球购物
秋游活动策划方案
2014/02/16 职场文书
常务副总经理任命书
2014/06/05 职场文书
党员学习群众路线教育实践活动对照检查材料
2014/09/23 职场文书
幼儿园工作总结2015
2015/04/01 职场文书
电力企业职工培训心得体会
2016/01/11 职场文书
高中语文教学反思范文
2016/02/16 职场文书
Win11软件图标固定到任务栏
2022/04/19 数码科技