组件的基本使用

注册组件

注册组件就是利用Vue.component()方法,先传入一个自定义组件的名字,然后传入这个组件的配置。vue.component()注册的全局组件

Vue.component('hello-world',{template: `<div>这是一个自定义组件</div>`,data () {return {message: 'hello world'}}})

组件使用

以在一个通过 new Vue 创建的 Vue 根实例中,把这个组件作为自定义元素来使用

html

<div id="app"><hello-world></hello-world>
</div>var app = new Vue({ el: '#app'})

定义局部组件(局部组件只能在当前vue实例中使用)

var app = new Vue({el: '#app',data: {},components: {'my-component': {template: `<div>这是一个局部的自定义组件,只能在当前Vue实例中使用</div>`,}}})

模板的要求

注意:组件的模板只能有一个根元素。下面的情况是不允许的。

template: `<div>这是一个局部的自定义组件,只能在当前Vue实例中使用</div><button>hello</button>`,//改为   template: `<div><div>这是一个局部的自定义组件,只能在当前Vue实例中使用</div><button>hello</button></div>`,

模板可以在外面定义

    <div id="app"><mycomponent></mycomponent></div><template id="mycomponent"><h1>mycomponent</h1></template><script>Vue.component('mycomponent', {template: '#mycomponent'})var app = new Vue({ el: '#app'})</script>

组件中的data必须是函数

可以看出,注册组件时传入的配置和创建Vue实例差不多,但也有不同,其中一个就是data属性必须是一个函数。
这是因为如果像Vue实例那样,传入一个对象,由于JS中对象类型的变量实际上保存的是对象的引用,所以当存在多个这样的组件时,会共享数据,导致一个组件中数据的改变会引起其他组件数据的改变。
而使用一个返回对象的函数,每次使用组件都会创建一个新的对象,这样就不会出现共享数据的问题来了。

DOM模板的解析问题

当使用 DOM 作为模版时 (例如,将 el 选项挂载到一个已存在的元素上), 你会受到 HTML 的一些限制,因为 Vue只有在浏览器解析和标准化HTML后才能获取模板内容。尤其像这些元素 ul,ol,table,select 限制了能被它包裹的元素,而一些像 这样的元素只能出现在某些其它元素内部

在自定义组件中使用这些受限制的元素时会导致一些问题,例如:

<table><my-tr>...</my-tr>
</table>

自定义组件 被认为是无效的内容,因此在渲染的时候会导致错误。这时应使用特殊的 is 属性:

<table><tr is="my-tr"></tr>
</table>

也就是说,标准HTML中,一些元素中只能放置特定的子元素,另一些元素只能存在于特定的父元素中。比如table中不能放置div,tr的父元素不能div等。所以,当使用自定义标签时,标签名还是那些标签的名字,但是可以在标签的is属性中填写自定义组件的名字。

应当注意,如果您使用来自以下来源之一的字符串模板,这些限制将不适用:

  • <script type="text/x-template">
  • JavaScript 内联模版字符串
  • vue 组件

转载于:https://www.cnblogs.com/wentutu/p/10917228.html

vue 组件基本使用相关推荐

  1. Vue组件绑定自定义事件

    Vue组件使用v-on绑定自定义事件: 可以分为3步理解: 1.在组件模板中按照正常事件机制绑定事件: template: '<button v-on:click="increment ...

  2. vue组件定义、组件的切换、组件的通信、渲染组件的几种方式(标签、路由、render)...

    vue中全局的概念是什么?---就是全局定义的功能,所有实例化的vm都可以使用,  全局定义的是挂在构造函数Vue上面的,所以实例化出的对象都可以使用这个功能 1.什么是组件?---从UI的角度把页面 ...

  3. 使用vue加svg实现流程图代码_京东风格的移动端Vue组件库NutUI2.0来啦

    移动端 Vue 组件库 NutUI 自发布以来受到了广泛的关注.据不完全统计,目前至少有30多个京东的 web 项目正在使用 NutUI . 经过一段时间紧锣密鼓的开发,近期,京东正式发布了 NutU ...

  4. vue 新手指引_精通react/vue组件设计之快速实现一个可定制的进度条组件

    前言 这篇文章是笔者写组件设计的第四篇文章,之所以会写组件设计相关的文章,是因为作为一名前端优秀的前端工程师,面对各种繁琐而重复的工作,我们不应该按部就班的去"辛勤劳动",而是要根 ...

  5. 京东Vue组件库NutUI 2.0发布:将支持跨平台!

    NutUI 是一套来自京东用户体验设计部(JDC)前端开发部的移动端 Vue 组件库,NutUI 1.0 版本于 2018 年发布.据不完全统计,目前在京东至少有30多个 web 项目正在使用 Nut ...

  6. Vue组件的三种调用方式

    最近在写fj-service-system的时候,遇到了一些问题.那就是我有些组件,比如Dialog.Message这样的组件,是引入三方组件库,比如element-ui这样的,还是自己实现一个?虽然 ...

  7. vue 带全选和多选的表格怎么写_vue实现下拉列表多选全选以及模糊查询的vue组件...

    vue实现下拉列表多选全选以及模糊查询的vue组件 发布时间:2018-09-12 17:41, 浏览次数:3776 , 标签: vue <>前端,有时有这样的需求,需要一个下拉列表,还要 ...

  8. vue组件中的样式属性:scoped,解决在父组件中无法修改子组件样式问题

    Scoped CSS规范是Web组件产生不污染其他组件,也不被其他组件污染的CSS规范. vue组件中的style标签标有scoped属性时表明style里的css样式只适用于当前组件元素,它是通过使 ...

  9. java socket中属性详解_前端开发:关于Vue组件中的data属性值是函数而不是对象的详解...

    最近在搞关于前端开发的基础知识归纳,发现了不少经典知识点,那么本篇博文就来分享一个经典的知识点:Vue组件中的data属性值为什么是函数而不是对象.首先来了解一下Vue组件的使用理念:在Vue组件使用 ...

  10. webpack配置vue组件加载器

    前言 App.vue单文件组件代码 <template><div><h1>App根组件</h1></div> </template&g ...

最新文章

  1. 系统架构设计师 - 软件架构设计 - 基于架构开发方法 ABSD (Architecture-Based Soft Design)
  2. java aio socket_java核心学习(三十三) 网络编程---AIO实现异步Socket通信
  3. java数值精度问题
  4. Vue打包发布项目---vue工作笔记0020
  5. 日留存、周留存、月留存,究竟怎样才能让更多的用户留下来?
  6. vue项目eslint配置
  7. Matlab2012b安装步骤(附带Matlab2012b破解码及序列号)
  8. 计算机绘图国标规定,机械制图教程(1.1)国家标准关于制图的一般规定
  9. appscan 9.0.3.12 版本下载
  10. map和object对象互转
  11. selenium模拟键盘操作大全
  12. OneNote无法粘贴图片
  13. 算法精解----log符号什么意思
  14. [小技巧]怎么把电脑PC微信通知声调小?单独调整电脑微信音量
  15. 2.Buffer详解
  16. saltstack自动化运维部署--安装apache\原码安装nginx服务
  17. 缔造微软帝国的程序员保罗·艾伦因病离世
  18. pythonista检测内容自动点击_Pythonista中文教程:100行代码实现一款远程键盘
  19. [已发表,转载勘误]Android upx脱壳
  20. 在线靶场-墨者-安全意识3星-日常密码泄露分析溯源

热门文章

  1. 均值定理最大值最小值公式_如何理解中值定理?三大微分中值定理的几何意义及其证明介绍。...
  2. CAD批量提取数值lisp插件_一键批量提取CAD填充图案边界线
  3. python输出出现频率最高的字母_用Python实现搜索某一网页中出现频率最高的前N个英文单词 输入: 网址,N值 输出:按出现频率由高到低排...
  4. 个人或者企业怎么进行app开发?开发一款APP应用大概须要多少钱?
  5. 学习C++和编程的50个观点
  6. QT之在QML中使用C++类和对象的两种方式
  7. C++ socket编程 实现服务端与客户端的通讯
  8. MacBook笔记本的几个快捷键的使用(学会事半功倍)
  9. 神经计算棒 [Error 5] Toolkit Error: Stage Details Not Supported: Transpose
  10. matlab gui 中指定axes窗口画进度条