Open Twlig opened 2 years ago
产生大小写问题的原因就是HTML 中的 attribute 名是大小写不敏感的,浏览器会把所有大写字符解释为小写字符。但是Vue中大小写是需要一一对应的,因此,存在大小写混乱问题。
Vue.component('my-component-name', { /* ... */ })
<div id="app"> <my-component-name></my-component-name> </div>
Vue.component('MyComponentName', { /* ... */ })
<my-component-name></my-component-name> <MyComponentName></MyComponentName>
注意:直接在 DOM (即非字符串的模板)如:在单个组件的<template></template>中 或者 index.html中直接CDN引入vue.js的<div id="app"></div>中,使用时只有 kebab-case 是有效的。
<template></template>
<div id="app"></div>
⭐建议:定义时两种方式都可以,引用使用kebab-case。不过为了统一还是建议定义和引用都用kebab-case。
定义prop
只能使用camelCase (驼峰命名法)
Vue.component('blog-post', { // 在 JavaScript 中是 camelCase 的 props: ['postTitle'], template: '<h3>{{ postTitle }}</h3>' })
如果使用kebab-case:会报错,变量名不能使用kebab-case命名。
Vue.component('blog-post', { // 在 JavaScript 中是 camelCase 的 props: ['post-title'], template: '<h3>{{ post-title }}</h3>' })
引用
只能使用kebab-case格式引用
<!-- 在 HTML 中是 kebab-case 的 --> <blog-post post-title="hello!"></blog-post>
⭐建议:定义只能使用camelCase,引用使用kebab-case。
不同于组件和 prop,事件名不存在任何自动化的大小写转换。而是触发的事件名需要完全匹配监听事件名称。
触发事件
此处触发事件名为myEvent
this.$emit('myEvent')
监听事件
监听事件名为myevent
<!-- 有效果 --> <my-component v-on:myevent="doSomething"></my-component>
这是因为HTML大小写不敏感,事件监听器在 DOM 模板中会被自动转换为全小写,因此只有小写的监听事件名myevent可以匹配上,而myEvent匹配不上。
myevent
myEvent
⭐建议:使用kebab-case 的事件名。都写成my-event。
my-event
CSS property 名可以用驼峰式或短横线分隔 (kebab-case,记得用引号''括起来否则会报错) 来命名:
''
<div v-bind:style="{ color: activeColor, 'font-size': fontSize + 'px' }"></div> data: { activeColor: 'red', fontSize: 30 }
⭐建议:两种写法都可以,但是kebab-case记得用引号''括起来。
产生大小写问题的原因就是HTML 中的 attribute 名是大小写不敏感的,浏览器会把所有大写字符解释为小写字符。但是Vue中大小写是需要一一对应的,因此,存在大小写混乱问题。
组件名
kebab-case(短横线分隔命名)
PascalCase(首字母大写命名)
⭐建议:定义时两种方式都可以,引用使用kebab-case。不过为了统一还是建议定义和引用都用kebab-case。
prop
定义prop
只能使用camelCase (驼峰命名法)
如果使用kebab-case:会报错,变量名不能使用kebab-case命名。
引用
只能使用kebab-case格式引用
⭐建议:定义只能使用camelCase,引用使用kebab-case。
事件名
不同于组件和 prop,事件名不存在任何自动化的大小写转换。而是触发的事件名需要完全匹配监听事件名称。
触发事件
此处触发事件名为myEvent
监听事件
监听事件名为myevent
这是因为HTML大小写不敏感,事件监听器在 DOM 模板中会被自动转换为全小写,因此只有小写的监听事件名
myevent
可以匹配上,而myEvent
匹配不上。⭐建议:使用kebab-case 的事件名。都写成
my-event
。CSS 样式名
CSS property 名可以用驼峰式或短横线分隔 (kebab-case,记得用引号
''
括起来否则会报错) 来命名:⭐建议:两种写法都可以,但是kebab-case记得用引号
''
括起来。