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 相关文章推荐
解密效果
Jun 23 Javascript
TFDN图片播放器 不错自动播放
Oct 03 Javascript
jQuery插件实现屏蔽单个元素使用户无法点击
Apr 12 Javascript
jQuery实现多按钮单击变色
Nov 27 Javascript
PHP结合jQuery实现红蓝投票功能特效
Jul 22 Javascript
jQuery右下角旋转环状菜单特效代码
Aug 10 Javascript
JQuery用户名校验的具体实现
Mar 18 Javascript
JS设置时间无效问题的解决办法
Feb 18 Javascript
解决vue router使用 history 模式刷新后404问题
Jul 19 Javascript
基于vue-element组件实现音乐播放器功能
May 06 Javascript
基于vue-cli、elementUI的Vue超简单入门小例子(推荐)
Apr 17 Javascript
使用 Jest 和 Supertest 进行接口端点测试实例详解
Apr 25 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与MongoDB简介|安全|M+PHP应用实例详解
2013/06/17 PHP
php使用PDO从数据库表中读取数据的实现方法(必看)
2017/06/02 PHP
Yii框架 session 数据库存储操作方法示例
2019/11/18 PHP
JavaScript的Function详细
2006/11/14 Javascript
JavaScript中实现块作用域的方法
2010/04/01 Javascript
一些经常会用到的Javascript检测函数
2010/05/31 Javascript
详解JS 比较两个Json对象的值是否相等的实例
2013/11/20 Javascript
javascript检测flash插件是否被禁用的方法
2016/01/14 Javascript
JS实现关闭当前页而不弹出提示框的方法
2016/06/22 Javascript
移动端js触摸事件详解
2016/09/18 Javascript
jQuery post数据至ashx实例详解
2016/11/18 Javascript
Bootstrap 轮播(Carousel)插件
2016/12/26 Javascript
vue2.0数据双向绑定与表单bootstrap+vue组件
2017/02/27 Javascript
angular 基于ng-messages的表单验证实例
2017/05/04 Javascript
Angular.JS中指令ng-if、ng-show/ng-hide和ng-switch的使用教程
2017/05/07 Javascript
vue.js与element-ui实现菜单树形结构的解决方法
2018/04/21 Javascript
手把手教你写一个微信小程序(推荐)
2018/10/17 Javascript
使用vue-cli4.0快速搭建一个项目的方法步骤
2019/12/04 Javascript
[03:03]DOTA2校园争霸赛 济南城市决赛欢乐发奖活动
2013/10/21 DOTA
[01:45]绝对公平!DOTA2队长征召模式详解
2014/04/25 DOTA
[01:15:29]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第三局
2016/03/04 DOTA
[46:23]OG vs EG 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
[01:36]极致酷炫!TI9典藏宝瓶+撼地者至宝展示
2019/06/11 DOTA
Python黑魔法Descriptor描述符的实例解析
2016/06/02 Python
Python实现查找最小的k个数示例【两种解法】
2019/01/08 Python
简单介绍python封装的基本知识
2019/08/10 Python
python super的使用方法及实例详解
2019/09/25 Python
Python中顺序表原理与实现方法详解
2019/12/03 Python
Python实现将蓝底照片转化为白底照片功能完整实例
2019/12/13 Python
django rest framework使用django-filter用法
2020/07/15 Python
欧洲领先的技术商店:eibmarkt.com
2019/05/10 全球购物
俄语专业毕业生求职信
2014/07/12 职场文书
雷峰塔导游词
2015/02/09 职场文书
广播体操比赛主持词
2015/06/29 职场文书
导游词之香港-太平山顶
2019/10/18 职场文书
Python基于Tkinter开发一个爬取B站直播弹幕的工具
2021/05/06 Python