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 相关文章推荐
jQuery插件 tabBox实现代码
Feb 09 Javascript
jQuery Ajax 仿AjaxPro.Utility.RegisterTypeForAjax辅助方法
Sep 27 Javascript
javascript属性访问表达式用法分析
Apr 25 Javascript
简述Jquery与DOM对象
Jul 10 Javascript
js中substring和substr两者区别和使用方法
Nov 09 Javascript
jQuery多选框选择数量限制方法
Feb 08 Javascript
轻松玩转BootstrapTable(后端使用SpringMVC+Hibernate)
Sep 06 Javascript
微信小程序实现刷脸登录
May 25 Javascript
Vue项目中跨域问题解决方案
Jun 05 Javascript
一秒学会微信小程序制作table表格
Feb 14 Javascript
layui table单元格事件修改值的方法
Sep 24 Javascript
js实现简单点赞操作
Mar 17 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生成sitemap.xml地图函数
2013/11/13 PHP
php检测iis环境是否支持htaccess的方法
2014/02/18 PHP
ThinkPHP快速入门实例教程之数据分页
2014/07/01 PHP
Yii中CGridView关联表搜索排序方法实例详解
2014/12/03 PHP
PHP递归遍历多维数组实现无限分类的方法
2016/05/06 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
Laravel 5.4向IoC容器中添加自定义类的方法示例
2017/08/15 PHP
javascript控制在光标位置插入文字适合表情的插入
2014/06/09 Javascript
JavaScript获取鼠标移动时的坐标(兼容IE8、chome谷歌、Firefox)
2014/09/13 Javascript
深入学习JavaScript中的Rest参数和参数默认值
2015/07/28 Javascript
jquery图片倾斜层叠切换特效代码分享
2015/08/27 Javascript
jquery跟随屏幕滚动效果的实现代码
2016/04/13 Javascript
jQuery获取this当前对象子元素对象的方法
2016/11/29 Javascript
JS实现加载和读取XML文件的方法详解
2017/04/24 Javascript
解决vue点击控制单个样式的问题
2018/09/05 Javascript
微信小程序后端实现授权登录
2020/02/24 Javascript
js实现验证码干扰(静态)
2021/02/22 Javascript
[36:33]完美世界DOTA2联赛循环赛 Matador vs Forest 第一场 11.06
2020/11/06 DOTA
Python的lambda匿名函数的简单介绍
2013/04/25 Python
Python语言的12个基础知识点小结
2014/07/10 Python
Python中return语句用法实例分析
2015/08/04 Python
利用Python写一个爬妹子的爬虫
2018/06/08 Python
python 异或加密字符串的实例
2018/10/14 Python
python实现kmp算法的实例代码
2019/04/03 Python
Python通过递归获取目录下指定文件代码实例
2019/11/07 Python
python实现布隆过滤器及原理解析
2019/12/08 Python
tensorflow 实现数据类型转换
2020/02/17 Python
pandas分组聚合详解
2020/04/10 Python
一个非常简单好用的Python图形界面库(PysimpleGUI)
2020/12/28 Python
捷克家居装饰及图书音像购物网站:Velký košík
2018/04/16 全球购物
竞选学习委员演讲稿
2014/09/01 职场文书
户籍证明书标准模板
2014/09/10 职场文书
群众路线教育实践活动整改落实情况汇报
2014/10/28 职场文书
2016全国“质量月”活动标语口号
2015/12/26 职场文书
Go timer如何调度
2021/06/09 Golang
java.util.NoSuchElementException原因及两种解决方法
2022/06/28 Java/Android