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中实现多态采用和继承类似的方法
Aug 22 Javascript
JavaScript中的console.log()函数详细介绍
Dec 29 Javascript
Jquery日期选择datepicker插件用法实例分析
Jun 08 Javascript
JavaScript+html5 canvas制作色彩斑斓的正方形效果
Jan 27 Javascript
jQuery增加与删除table列的方法
Mar 01 Javascript
详解windows下vue-cli及webpack 构建网站(三)使用组件
Jun 17 Javascript
详解Vue-cli代理解决跨域问题
Sep 27 Javascript
浅谈js的解析顺序 作用域 严格模式
Oct 23 Javascript
Vue源码学习之关于对Array的数据侦听实现
Apr 23 Javascript
实用的 vue tags 创建缓存导航的过程实现
Dec 03 Vue.js
JS addEventListener()和attachEvent()方法实现注册事件
Jan 11 Javascript
vue-resource 拦截器interceptors使用详解
Jan 18 Vue.js
从零到一详聊创建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自动给文章加关键词链接的函数代码
2012/11/29 PHP
详解yii2使用多个数据库的案例
2017/06/16 PHP
php变量与字符串的增删改查操作示例
2020/05/07 PHP
top.location.href 没有权限 解决方法
2008/08/05 Javascript
IE浏览器PNG图片透明效果代码
2008/09/02 Javascript
Javascript 遍历对象中的子对象
2009/07/03 Javascript
Jquery 监视按键,按下回车键触发某方法的实现代码
2014/05/11 Javascript
js获取内联样式的方法
2015/01/27 Javascript
jQuery仿淘宝网产品品牌隐藏与显示效果
2015/09/01 Javascript
jQuery实现监控页面所有ajax请求的方法
2015/12/10 Javascript
jQuery on()方法绑定动态元素的点击事件无响应的解决办法
2016/07/07 Javascript
jQuery插件HighCharts绘制的基本折线图效果示例【附demo源码下载】
2017/03/07 Javascript
jQuery Plupload上传插件的使用
2017/04/19 jQuery
Vue中定义全局变量与常量的各种方式详解
2017/08/23 Javascript
微信小程序基于picker实现级联菜单
2019/02/15 Javascript
layui实现把数据表格时间戳转换为时间格式的例子
2019/09/12 Javascript
基于javascript处理nginx请求过程详解
2020/07/07 Javascript
webpack+vue-cil 中proxyTable配置接口地址代理操作
2020/07/18 Javascript
python2.7 mayavi 安装图文教程(推荐)
2017/06/22 Python
Python中的id()函数指的什么
2017/10/17 Python
python 循环读取txt文档 并转换成csv的方法
2018/10/26 Python
python根据txt文本批量创建文件夹
2020/12/08 Python
python实现连连看辅助(图像识别)
2020/03/25 Python
Python zip函数打包元素实例解析
2019/12/11 Python
解决jupyter notebook 前面书写后面内容消失的问题
2020/04/13 Python
关于Theano和Tensorflow多GPU使用问题
2020/06/19 Python
Django视图类型总结
2021/02/17 Python
腾讯公司的一个sql题
2013/01/22 面试题
2014新课程改革心得体会
2014/03/10 职场文书
社会调查研究计划书
2014/05/01 职场文书
党员承诺践诺书
2014/05/20 职场文书
食堂采购员岗位职责
2015/04/03 职场文书
业务内勤岗位职责
2015/04/13 职场文书
Pytest allure 命令行参数的使用
2021/04/18 Python
Django drf请求模块源码解析
2021/06/08 Python
详细分析PHP7与PHP5区别
2021/06/26 PHP