Vue注册组件命名时不能用大写的原因浅析


Posted in Javascript onApril 25, 2019

这段时间一直在弄vue,当然也遇到很多问题,这里就来跟大家分享一些注册自定义模板组件的心得。

首先“VUE注册组件命名时不能用大写“其实这句话是不对的,但我们很多人开始都觉得是对的,因为大家都踩过大写命名的坑

下面我们来看个例子:

<div id="app">
  <myTemplate></myTemplate>
</div>
<script>
  Vue.component('myTemplate',{
    template: '<h1>这里是自定义组件的内容</h1>'
  })
  new Vue({
    el: '#app'
  })
</script>

当我看完官网的文档后,信心满满的第一次准备自定义组件时,就写的跟上面差不多类型的代码

但是当我运行代码时,组件并没有被渲染出来,反而报错了说我用的组件没有注册,我当时真是挤破脑袋想了半天也没发现问题出在哪里

这时候我在想难道我的命名和源码里的冲突了?于是我把代码改成这样了↓

<div id="app">
  <mytemplate></mytemplate>
</div>
<script>
  Vue.component('mytemplate',{
    template: '<h1>这里是自定义组件的内容</h1>'
  })
  new Vue({
    el: '#app'
  })
</script>

然后运行代码,ok完全正常,这时候大家都会认为vue注册组件不能用大写命名,我当时也这么认为的,直到这两天在用饿了么elementUI框架,当我看了他们的源码,发现原来并不是这样

他们注册组件的命名就和我第一次一样myTemplate,标准的驼峰命名方法,那么我一开始为什么会报错呢?这是为什么呢?难道VUE嫌弃我?

原来是我调用组件时的方法错了,VUE是允许用大写字母来注册组件的,但当你使用时得在驼峰命名的大写字母间加上”-“并都改为小写,看下面代码

<div id="app">
  <my-template></my-template>
</div>
<script>
  Vue.component('myTemplate',{
    template: '<h1>这里是自定义组件的内容</h1>'
  })
  new Vue({
    el: '#app'
  })
</script>

代码运行正常,这个时候大家是不是看出来,vue其实是可以用大写字母命名注册的

后面我也试了很多种命名方式,比如”my-template“这样也是可以的

”My-template“这样的会报错

----------------------------------------------------------------

后来在官网看到这句话camelCase vs. kebab-case    HTML 特性是不区分大小写的。所以,当使用的不是字符串模版,camelCased (驼峰式) 命名的 prop 需要转换为相对应的 kebab-case (短横线隔开式) 命名: 如果你使用字符串模版,则没有这些限制。

总结

以上所述是小编给大家介绍的Vue注册组件命名时不能用大写的原因浅析,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
Code: write(s,d) 输出连续字符串
Aug 19 Javascript
js表数据排序 sort table data
Feb 18 Javascript
js输出阴历、阳历、年份、月份、周示例代码
Jan 29 Javascript
jQuery EasyUI 菜单与按钮之创建简单的菜单和链接按钮
Nov 18 Javascript
易被忽视的js事件问题总结
May 14 Javascript
WebStorm ES6 语法支持设置&amp;babel使用及自动编译(详解)
Sep 08 Javascript
基于jquery.page.js实现分页效果
Jan 01 jQuery
利用angular、react和vue实现相同的面试题组件
Feb 19 Javascript
微信小程序数据分析之自定义分析的实现
Aug 17 Javascript
利用Electron简单撸一个Markdown编辑器的方法
Jun 10 Javascript
JQuery使用属性addClass、removeClass和toggleClass实现增加和删除类操作示例
Nov 18 jQuery
electron踩坑之dialog中的callback解决
Oct 06 Javascript
从零到一详聊创建Vue工程及遇到的常见问题
Apr 25 #Javascript
详解vue项目中调用百度地图API使用方法
Apr 25 #Javascript
Vue开发之watch监听数组、对象、变量操作分析
Apr 25 #Javascript
详解JS实现简单的时分秒倒计时代码
Apr 25 #Javascript
node.js ws模块搭建websocket服务端的方法示例
Apr 25 #Javascript
JS实现指定区域的全屏显示功能示例
Apr 25 #Javascript
使用React手写一个对话框或模态框的方法示例
Apr 25 #Javascript
You might like
php 不使用js实现页面跳转
2014/02/11 PHP
在laravel-admin中列表中禁止某行编辑、删除的方法
2019/10/03 PHP
总结一些js自定义的函数
2006/08/05 Javascript
javascript之卸载鼠标事件的代码
2007/05/14 Javascript
input:checkbox多选框实现单选效果跟radio一样
2014/06/16 Javascript
js实现单击图片放大图片的方法
2015/02/17 Javascript
使用jquery清空、复位整个输入域
2015/04/02 Javascript
js实现按钮控制带有停顿效果的图片滚动
2016/08/30 Javascript
AngularJS实现单独作用域内的数据操作
2016/09/05 Javascript
基于Vue.js实现简单搜索框
2020/03/26 Javascript
Bootstrap基本组件学习笔记之列表组(11)
2016/12/07 Javascript
JavaScript判断浏览器及其版本信息
2017/01/20 Javascript
nodejs基础知识
2017/02/03 NodeJs
Bootstrap下拉菜单Dropdowns的实现代码
2017/03/17 Javascript
nodejs利用ajax实现网页无刷新上传图片实例代码
2017/06/06 NodeJs
Vue 中使用 CSS Modules优雅方法
2018/04/09 Javascript
使用Jenkins部署React项目的方法步骤
2019/03/11 Javascript
使用mixins实现elementUI表单全局验证的解决方法
2019/04/02 Javascript
vue滚动固定顶部及修改样式的实例代码
2019/05/30 Javascript
Nodejs封装类似express框架的路由实例详解
2020/01/05 NodeJs
python回调函数的使用方法
2014/01/23 Python
分析在Python中何种情况下需要使用断言
2015/04/01 Python
Python异常的检测和处理方法
2018/10/26 Python
Python中extend和append的区别讲解
2019/01/24 Python
Python制作微信好友背景墙教程(附完整代码)
2019/07/17 Python
python用TensorFlow做图像识别的实现
2020/04/21 Python
selenium如何定位span元素的实现
2021/01/13 Python
Html5页面内使用JSON动画的实现
2019/01/29 HTML / CSS
台湾网友喜爱的综合型网路购物商城:Yahoo! 奇摩购物中心
2018/03/10 全球购物
欧尚俄罗斯网上超市:Auchan俄罗斯
2018/05/03 全球购物
高等学院职业生涯规划书范文
2014/09/16 职场文书
教师批评与自我批评
2014/10/15 职场文书
工作失职检讨书范文
2015/05/05 职场文书
2015年小学数学教师工作总结
2015/05/20 职场文书
民间借贷纠纷案件代理词
2015/05/26 职场文书
教你快速开启Apache SkyWalking的自监控
2021/04/25 Servers