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 相关文章推荐
Javascript中获取出错代码所在文件及行数的代码
Sep 23 Javascript
基于jquery的复制网页内容到WORD的实现代码
Feb 16 Javascript
深入理解JavaScript系列(31):设计模式之代理模式详解
Mar 03 Javascript
JavaScript设计模式学习之“类式继承”
Mar 12 Javascript
Vue.js组件tab实现选项卡切换
Mar 23 Javascript
JavaScript 实现 Tab 点击切换实例代码
Mar 25 Javascript
详解Angular.js数据绑定时自动转义html标签及内容
Mar 30 Javascript
SelectPage v2.4 发布新增纯下拉列表和关闭分页功能
Sep 07 Javascript
微信小程序实现收藏与取消收藏切换图片功能
Aug 03 Javascript
浅谈webpack+react多页面开发终极架构
Nov 11 Javascript
Vue+Element UI实现概要小弹窗的全过程
May 30 Vue.js
使用JS前端技术实现静态图片局部流动效果
Aug 05 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
《超神学院》霸气归来, 天使彦上演维多利亚的秘密
2020/03/02 国漫
php中计算程序运行时间的类代码
2012/11/03 PHP
开启PHP的伪静态模式
2015/12/31 PHP
Kindeditor编辑器添加图片上传水印功能(php代码)
2017/08/03 PHP
php+redis消息队列实现抢购功能
2018/02/08 PHP
PHP bin2hex()函数基础实例讲解
2019/02/11 PHP
JS 操作符整理[推荐收藏]
2011/11/15 Javascript
jQuery()方法的第二个参数详解
2015/04/29 Javascript
AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值
2016/01/25 Javascript
功能强大的jquery.validate表单验证插件
2016/11/07 Javascript
BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法
2016/12/01 Javascript
清除输入框内的空格
2016/12/21 Javascript
Angular实现可删除并计算总金额的购物车功能示例
2017/12/26 Javascript
在vue中v-bind使用三目运算符绑定class的实例
2018/09/29 Javascript
Vue.js子组件向父组件通信的方法实例代码详解
2018/12/10 Javascript
vue draggable resizable 实现可拖拽缩放的组件功能
2019/07/15 Javascript
webpack优化之代码分割与公共代码提取详解
2019/11/22 Javascript
详解vue中$nextTick和$forceUpdate的用法
2019/12/11 Javascript
忘记ftp密码使用python ftplib库暴力破解密码的方法示例
2014/01/22 Python
总结网络IO模型与select模型的Python实例讲解
2016/06/27 Python
听歌识曲--用python实现一个音乐检索器的功能
2016/11/15 Python
Python基础中所出现的异常报错总结
2016/11/19 Python
详解Python中的相对导入和绝对导入
2017/01/06 Python
tensorflow实现图像的裁剪和填充方法
2018/07/27 Python
Python判断字符串是否为字母或者数字(浮点数)的多种方法
2018/08/03 Python
Python实现html转换为pdf报告(生成pdf报告)功能示例
2019/05/04 Python
Python语言异常处理测试过程解析
2020/01/08 Python
python3中TQDM库安装及使用详解
2020/11/18 Python
html通过canvas转成base64的方法
2019/07/18 HTML / CSS
SQL面试题
2013/04/30 面试题
廉洁自律演讲稿
2014/05/22 职场文书
体育馆的标语
2014/06/24 职场文书
关于工作经历的证明书
2014/10/11 职场文书
三潭印月的导游词
2015/02/12 职场文书
2015年八一建军节慰问信
2015/03/23 职场文书
Python访问Redis的详细操作
2021/06/26 Python