当前位置: 首页 > news >正文

Vue驼峰与短横线分割命名中有哪些坑

目录

0.前言

驼峰和短横线分割命名注意事项

组件注册命名

父子组件数据传递时命名

父子组件函数传递


0.前言

        Vue驼峰命名法指的是将变量以驼峰形式命名,例如 userName、userId 等,而短横线分隔符法则指的是用短横线分隔变量名,例如 user_name、user_id 等。

        两种命名方式在实际应用中都有其优势和缺点,但是它们的主要区别在于可读性和可维护性。Vue使用驼峰命名法有助于提高变量的可读性,因为驼峰命名法可以更好地表示变量的意思,但是这也可能对于像JavaScript这样的动态语言带来问题,因为它可能会引发一些预期以外的问题。而用短横线分隔符法来命名变量,几乎可以避免上述问题,并且它更具可维护性,但是它往往不具可读性。

驼峰和短横线分割命名注意事项

我们一般定义组件的方式有两种:

  • 短横线分隔命名:kebab-case
  • 首字母大写命名:PascalCase 。

组件注册命名

例如,我写一个简单的子组件。

<template><div class="border"><h2>我是子组件</h2></div>
</template>
<script setup>
</script>
<style scoped>
.border {border: 1px solid;width: 400px;
}
</style>

注册的时候采用PascalCase命名:

createApp(App).component('MyComponent', MyComponent).mount('#app')

使用的时候:

<template><div class="border"><h1 >我是父组件</h1><my-component /><!-- <MyComponent /> --><!-- <myComponent /> --></div>
</template>
<style scoped>
.border {border: 1px solid;width: 400px;height: 200px;
}
</style>

结果如下:

 

自定义的组件在使用上,命名的规则如下:

  • 注册的时候:使用了PascalCase命名。
  • 使用的时候:可以使用PascalCase命名(首字母不区分大小写)或者kebab-case命名(每个单词的首字母不区分大小写)。

一般编码的时候,习惯这样:命名的时候采取PascalCase命名法,使用的时候采取kebab-case法(每个单词的首字母小写)。

父子组件数据传递时命名

父组件在给子组件传递变量的时候,如果变量名称采用kebab-case法,那么子组件在接收的时候应该写驼峰命名法。

例如,我再父组件中这么传参:

 

<MyComponent :user-name="name"/>

子组件的接收:驼峰命名法。

<template><div class="border"><h2>我是子组件</h2><div>接收来自父组件传入的参数:{{ props.userName }}</div></div>
</template>
<script setup lang="ts">
import { computed, defineProps, withDefaults } from "vue";
interface Props {// 记得使用驼峰命名法userName: string;
}
const props = withDefaults(defineProps<Props>(), {userName: "",
});
</script>
<style scoped>
.border {border: 1px solid;width: 400px;
}
</style>

效果如下:

 

父子组件函数传递

父组件在传递给子组件的时候,命名上我测试下来没有什么特殊的要求。先说下传递的命名上:

父组件传递:

 

<MyComponent :user-name="name" @sayHello="sayHello"/>
const sayHello =  ()=>{console.log('Hello')
}

子组件的接收上:

<template><div class="border"><h2>我是子组件</h2><div>接收来自父组件传入的参数:{{ props.userName }}</div><a @click="hello">点击</a><br><a @click="hello2">点击2</a></div>
</template>
<script setup lang="ts">
import { defineProps, withDefaults } from "vue";
interface Props {userName: string;
}
const props = withDefaults(defineProps<Props>(), {userName: "",
});
const emit = defineEmits(["say-hello", "sayHello"]);
const hello = () => {emit("say-hello");
};
const hello2 = () => {emit("sayHello");
};
</script>
<style scoped>
.border {border: 1px solid;width: 400px;
}
</style>

结果如下:

无论是使用下划线分割还是原名,都可以正常接收。

经过测试,父组件在传函数的时候,使用kebab-case法,和上述案例一个效果。

因此我们就这么约定吧:

父组件传递函数的时候,就原名传入即可。

 

http://www.lryc.cn/news/3967.html

相关文章:

  • 从文件中加载数据以及异常处理
  • 【JavaSE】方法的使用
  • ModelScope 垂类检测系列模型介绍
  • Linux | Linux卸载和安装MySQL(Ubuntu版)
  • 【C1】数据类型,常量变量,输入输出,运算符,if/switch/循环,/数组,指针,/结构体,文件操作,/编译预处理,gdb,makefile,线程
  • 【深度学习】pytorch的基础操作
  • MWORKS--同元软控MWORKS介绍、安装与使用
  • Python 解决dilb和face_recognition第三方包安装失败
  • Mac系统Mysql的8.0.22版本安装笔记和密码重置修改密码等问题方法
  • 驱动 | Linux | NVMe 不完全总结
  • 一个测试人员,在现阶段的环境下如何在测试行业发展和自我价值。
  • pwn手记录题2
  • CSS ~ 从入门到入坑。
  • 成都哪家机构的Java培训比较好,求一个不坑的?
  • 《爆肝整理》保姆级系列教程python接口自动化(十二)--https请求(SSL)(详解)
  • 离线数据仓库
  • 【前端】Vue项目:旅游App-(23)detail:房东介绍、热门评论、预定须知组件
  • JUC并发编程与源码分析
  • Spark09: Spark之checkpoint
  • 《剑指offer》:数组部分
  • 基于微信小程序图书馆座位预约管理系统
  • 剑指 Offer Day1——栈与队列(简单)
  • 详解Python正则表达式中group与groups的用法
  • Spring面试重点(三)——AOP循环依赖
  • 计算机网络之HTTP04ECDHE握手解析
  • 【MySQL数据库】主从复制原理和应用
  • 复现随记~
  • 【计组】设计大型DMP系统--《深入浅出计算机组成原理》(十四)
  • 66 使用注意力机制的seq2seq【动手学深度学习v2】
  • NextJS(ReactSSR)