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 eval和JSON之间的联系
Dec 31 Javascript
javascript开发随笔一 preventDefault的必要
Nov 25 Javascript
解决Jquery鼠标经过不停滑动的问题
Mar 03 Javascript
js+css实现的圆角边框TAB选项卡滑动门代码分享(2款)
Aug 26 Javascript
jQuery实现区域打印功能代码详解
Jun 17 Javascript
jQuery序列化表单成对象的简单实现
Nov 29 Javascript
Node.js与Sails redis组件的使用教程
Feb 14 Javascript
jQuery实现字体颜色渐变效果的方法
Mar 29 jQuery
react-native android状态栏的实现
Jun 15 Javascript
wx-charts 微信小程序图表插件的具体使用
Aug 18 Javascript
Element Tooltip 文字提示的使用示例
Jul 26 Javascript
基于js实现的图片拖拽排序源码实例
Nov 04 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
基于empty函数的输出详解
2013/06/17 PHP
php语言中使用json的技巧及json的实现代码详解
2015/10/27 PHP
老生常谈PHP数组函数array_merge(必看篇)
2017/05/25 PHP
Laravel5.1框架注册中间件的三种场景详解
2019/07/09 PHP
JQUERY 对象与DOM对象之两者相互间的转换
2009/04/27 Javascript
基于jQuery的获得各种控件Value的方法
2010/11/19 Javascript
node.js中的path.delimiter方法使用说明
2014/12/09 Javascript
JavaScript父子窗体间的调用方法
2015/03/31 Javascript
jQuery UI Bootstrap是什么?
2016/06/17 Javascript
Bootstrap导航简单实现代码
2017/03/06 Javascript
BootStrap Table 后台数据绑定、特殊列处理、排序功能
2017/05/27 Javascript
使用JavaScript根据图片获取条形码的方法
2017/07/04 Javascript
mui 打开新窗口的方式总结及注意事项
2017/08/20 Javascript
AngularJS 监听变量变化的实现方法
2018/10/09 Javascript
javascript中函数的写法实例代码详解
2018/10/28 Javascript
vue.js实现图书管理功能
2019/09/24 Javascript
vue计算属性无法监听到数组内部变化的解决方案
2019/11/06 Javascript
JS实现普通轮播图特效
2020/01/01 Javascript
Python压缩解压缩zip文件及破解zip文件密码的方法
2015/11/04 Python
Python实现iOS自动化打包详解步骤
2018/10/03 Python
Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析)
2019/06/28 Python
Form表单及django的form表单的补充
2019/07/25 Python
Python3实现配置文件差异对比脚本
2019/11/18 Python
10个很棒的 CSS3 开发工具 推荐
2011/05/16 HTML / CSS
css3 仿写阿里云水纹效果的示例代码
2018/02/10 HTML / CSS
高职教师岗位职责
2013/12/24 职场文书
《乌塔》教学反思
2014/02/17 职场文书
保险内勤岗位职责
2014/04/05 职场文书
《长江之歌》教学反思
2014/04/17 职场文书
保密工作整改情况汇报
2014/11/06 职场文书
中秋节晚会开场白
2015/05/29 职场文书
外科护士长工作总结
2015/08/12 职场文书
Pandas加速代码之避免使用for循环
2021/05/30 Python
vue基于Teleport实现Modal组件
2021/05/31 Vue.js
详解jQuery的核心函数和事件处理
2022/02/18 jQuery
MybatisPlus EntityWrapper如何自定义SQL
2022/03/22 Java/Android