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 相关文章推荐
JS声明变量背后的编译原理剖析
Dec 28 Javascript
javascript获取鼠标点击元素对象(示例代码)
Dec 20 Javascript
浅谈javascript的call()、apply()、bind()的用法
Feb 21 Javascript
一道关于JavaScript变量作用域的面试题
Mar 08 Javascript
Bootstrap组件系列之福利篇几款好用的组件(推荐二)
Jul 12 Javascript
jQuery插件easyUI实现通过JS显示Dialog的方法
Sep 16 Javascript
基于Javascript实现文件实时加载进度的方法
Oct 12 Javascript
js实现可输入可选择的select下拉框
Dec 21 Javascript
discuz表情的JS提取方法分析
Mar 22 Javascript
Js 利用正则表达式和replace函数获取string中所有被匹配到的文本(推荐)
Oct 28 Javascript
服务端预渲染之Nuxt(使用篇)
Apr 08 Javascript
JavaScript利用html5新方法操作元素类名详解
Nov 27 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用身份证号获取星座和生肖的方法
2013/11/07 PHP
Zend Framework动作助手Url用法详解
2016/03/05 PHP
深入理解PHP之源码目录结构与功能说明
2016/06/01 PHP
PHP简单获取多个checkbox值的方法
2016/06/13 PHP
微信支付扫码支付php版
2016/07/22 PHP
Jquery 基础学习笔记之文档处理
2009/05/29 Javascript
匹配任意字符的正则表达式写法
2010/04/29 Javascript
jsPDF生成pdf后在网页展示实例
2014/01/16 Javascript
分享几种比较简单实用的JavaScript tabel切换
2015/12/31 Javascript
JavaScript 正则表达式中global模式的特性
2016/02/25 Javascript
js判断复选框是否选中及选中个数的实现代码
2016/05/30 Javascript
获取JS中网页各种高宽与位置的方法总结
2016/07/27 Javascript
BootStrap table表格插件自适应固定表头(超好用)
2016/08/24 Javascript
jQuery过滤选择器用法示例
2016/09/12 Javascript
JS从非数组对象转数组的方法小结
2018/03/26 Javascript
如何用input标签和jquery实现多图片的上传和回显功能
2018/05/16 jQuery
JavaScript数据结构与算法之基本排序算法定义与效率比较【冒泡、选择、插入排序】
2019/02/21 Javascript
修改layui的后台模板的左侧导航栏可以伸缩的方法
2019/09/10 Javascript
js基于canvas实现时钟组件
2021/02/07 Javascript
Python求导数的方法
2015/05/09 Python
python爬虫入门教程--正则表达式完全指南(五)
2017/05/25 Python
python实现对象列表根据某个属性排序的方法详解
2019/06/11 Python
如何基于Python批量下载音乐
2019/11/11 Python
python hash每次调用结果不同的原因
2019/11/21 Python
如何配置关联Python 解释器 Anaconda的教程(图解)
2020/04/30 Python
Html5新增标签与样式及让元素水平垂直居中
2019/07/11 HTML / CSS
英国高级百货公司:Harvey Nichols
2017/01/29 全球购物
加拿大鞋网:Globo Shoes
2019/12/26 全球购物
教师师德演讲稿
2014/05/06 职场文书
敲诈同学钱财检讨书范文
2014/11/18 职场文书
2014年工商所工作总结
2014/12/09 职场文书
宝宝满月祝酒词
2015/08/10 职场文书
《工作是最好的修行》读后感3篇
2019/12/13 职场文书
如何利用Python实现一个论文降重工具
2021/07/09 Python
安装Windows Server 2012 R2企业版操作系统并设置好相关参数
2022/04/29 Servers
python开发制作好看的时钟效果
2022/05/02 Python