vuejs2 - Vue组件名必须小写?
问题描述
我正在尝试在我的视图文件中使用一个组件。当我尝试在我的视图中安装组件时,以下内容不起作用<CampaignCreate></CampaignCreate>
const app = new Vue({
el: '#rewards-app',
components: {
CampaignCreate,
}
});
如果我将其更改为:
const app = new Vue({
el: '#rewards-app',
components: {
'campaign-create': CampaignCreate,
}
});
<campaign-create></campaign-create>
我可以毫无问题地将组件安装在我的视图文件中。我试图了解这背后的原因。我目前在 vuejs 2.x
解决方案
简而言之,这是因为 HTML 不区分大小写。Evan You 本人在 2 年前在 VueJS tracker 中进行了一次大讨论,理由如下:
所以众所周知,HTML 是不区分大小写的。
myProp="123"
被解析为myprop="123"
,这导致了 Vue.js 中的警告,您必须使用它my-prop="123"
来引用 JavaScript 中声明为myProp
. 这经常咬初学者。
该问题最终因决定保持原样而关闭。这是一个有说服力的报价:
本质上,问题的存在是因为 js 和 html 是不同的技术,使用不同的命名系统。在两种技术中使用相同的案例(烤肉串或骆驼)会将怪异从一个地方转移到另一个地方,但潜在的问题将持续存在所以我相信,我们能做的最好的事情就是划清界限。和当前行,即 html 上下文中的 kebab case 和 js 上下文中的 camelCase(和 PascalCase)非常好。
推荐阅读
- android - Firebase 库必须使用确切的版本错误
- ruby-on-rails - 在 ruby 中传递带有参数的方法作为参数
- php - scandir() 以什么顺序加载文件?
- java - Exiftool 没有打印到 ProcessBuilder 中的文件?
- java - 使用服务生成器将数据库数据显示到数据表
- algorithm - 分布式算法的空间复杂度
- angular - Angular 5 中具有不同输入的反应式表单和数学运算
- python - 从两列(标签、文本)数据源进行文本分类从哪里开始?
- jquery - 在打字稿中使用 $.get 的成功回调时无法将数据绑定到类变量
- datetimepicker - 如何将最小日期设置为 datetimepicker