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 相关文章推荐
使用EXT实现无刷新动态调用股票信息
Nov 01 Javascript
jQuery基本过滤选择器使用介绍
Apr 18 Javascript
基于javascript的COOkie的操作实现只能点一次
Dec 26 Javascript
浅谈JavaScript数据类型及转换
Feb 28 Javascript
Javascript控制div属性动态变化实例分析
Oct 08 Javascript
jQuery实现侧浮窗与中浮窗切换效果的方法
Sep 05 Javascript
快速解决vue动态绑定多个class的官方实例语法无效的问题
Sep 05 Javascript
vue中的router-view组件的使用教程
Oct 23 Javascript
详解vue 项目白屏解决方案
Oct 31 Javascript
vue form check 表单验证的实现代码
Dec 09 Javascript
jquery实现直播视频弹幕效果
Feb 25 jQuery
基于vue实现简易打地鼠游戏
Aug 21 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 和 MySQL 时区的一点总结
2008/03/26 PHP
解析php中const与define的应用区别
2013/06/18 PHP
php中分页及SqlHelper类用法实例
2017/01/12 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
2018/01/16 PHP
PHP中rename()函数的妙用讲解
2019/02/28 PHP
jquery 插件学习(六)
2012/08/06 Javascript
Javascript中匿名函数的多种调用方式总结
2013/12/06 Javascript
js监听滚动条滚动事件使得某个标签内容始终位于同一位置
2014/01/24 Javascript
js实现使用鼠标拖拽切换图片的方法
2015/05/04 Javascript
浅谈利用JavaScript进行的DDoS攻击原理与防御
2015/06/04 Javascript
JS实现支持Ajax验证的表单插件
2016/03/24 Javascript
Bootstrap 3的box-sizing样式导致UEditor控件的图片无法正常缩放的解决方案
2016/09/15 Javascript
vue.js+Element实现表格里的增删改查
2017/01/18 Javascript
js for循环倒序输出数组元素的实例
2017/03/01 Javascript
vue.js实现价格格式化的方法
2017/05/23 Javascript
nodejs超出最大的调用栈错误问题
2017/12/27 NodeJs
jQuery轻量级表单模型验证插件
2018/10/15 jQuery
教你如何编写Vue.js的单元测试的方法
2018/10/17 Javascript
spring+angular实现导出excel的实现代码
2019/02/27 Javascript
详解JS判断页面是在手机端还是在PC端打开的方法
2019/04/26 Javascript
Node.js使用MongoDB的ObjectId作为查询条件的方法
2019/09/10 Javascript
vue控制多行文字展开收起的实现示例
2019/10/11 Javascript
extjs图形绘制之饼图实现方法分析
2020/03/06 Javascript
[36:14]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第二局
2016/02/28 DOTA
[02:10]探秘浦东源深体育馆 DOTA2 Supermajor不见不散
2018/05/17 DOTA
对numpy中的transpose和swapaxes函数详解
2018/08/02 Python
pyqt5实现登录界面的模板
2020/05/30 Python
基于selenium及python实现下拉选项定位select
2020/07/22 Python
澳大利亚Mocha官方网站:包、钱包、珠宝和配饰
2019/07/18 全球购物
不错的求职信范文
2014/07/20 职场文书
检察院院长群众路线教育实践活动个人整改措施
2014/10/04 职场文书
领导班子作风建设剖析材料
2014/10/11 职场文书
2014年学校总务处工作总结
2014/12/08 职场文书
安全生产会议制度
2015/08/06 职场文书
大学生社会服务心得体会
2016/01/22 职场文书
python中如何对多变量连续赋值
2021/06/03 Python