Vue开发规范细节

解决Vue组件名称应始终为多个单词的问题 在Vue开发中,给组件起名是一个常见的任务。但是,有时我们可能会犯一些不规范的命名习惯,比如将组件名称设置为单个单词。本文将详细介绍为什么组件名称应该始终为多个单词,并提供解决方法,以确保在Vue项目中使用规范的组件名称。遵循Vue的组件命名规范,将组件名称设置为多个单词,并使用连字符“-”分隔或使用PascalCase命名法,可以提高代码的可读性和语义化,避免命名冲突和关键字冲突的问题。合理的命名习惯可以让团队成员更好地理解代码,并有助于项目的维护和扩展。希望本文对你有所帮助。 阅读详情

Vue开发规范细节

一、必要的
1、组件名为多个单词

组件名应该始终是多个单词的,根组件 App 以及 、 之类的 Vue 内置组件除外。

这样做可以避免跟现有的以及未来的 HTML 元素相冲突,因为所有的 HTML 元素名称都是单个单词的。

例如:

Vue.component(‘todo-item’, {
// …
})
export default { name: ‘TodoItem’, // … }

2、组件数据

组件的 data 必须是一个函数。

当在组件中使用 data property 的时候 (除了 new Vue 外的任何地方),它的值必须是返回一个对象的函数。

例如:

Vue.component(‘some-comp’, {
data: function () {
return {
foo: ‘bar’
}
}
})
// In a .vue file export default { data () { return { foo: ‘bar’ } } }
// 在一个 Vue 的根实例上直接使用对象是可以的, // 因为只存在一个这样的实例。 new Vue({ data: { foo: ‘bar’ } })

3、Prop 定义

Prop 定义应该尽量详细。

在你提交的代码中,prop 的定义应该尽量详细,至少需要指定其类型。

例如:

props: {
status: String
}
// 更好的做法! props: { status: { type: String, required: true, default: ‘’, } }

4、为 v-for 设置键值

总是用 key 配合 v-for。

在组件上总是必须用 key 配合 v-for,以便维护内部组件及其子树的状态。甚至在元素上维护可预测的行为,比如动画中的对象固化 (object constancy),也是一种好的做法。

例如:

  • {{ todo.text }}

5、避免 v-if 和 v-for 用在一起

一般我们在两种常见的情况下会倾向于这样做:

为了过滤一个列表中的项目 (比如 v-for=“user in users” v-if=“user.isActive”)。在这种情形下,请将 users 替换为一个计算属性 (比如 activeUsers),让其返回过滤后的列表。

为了避免渲染本应该被隐藏的列表 (比如 v-for=“user in users” v-if=“shouldShowUsers”)。这种情形下,请将 v-if 移动至容器元素上 (比如 ul、ol)。

例如:

  • {{ user.name }}
  • {{ user.name }}

6、为组件样式设置作用域

对于应用来说,顶级 App 组件和布局组件中的样式可以是全局的,但是其它所有组件都应该是有作用域的。

这条规则只和单文件组件有关。你不一定要使用 scoped attribute。设置作用域也可以通过 CSS Modules,那是一个基于 class 的类似 BEM 的策略,当然你也可以使用其它的库或约定。

不管怎样,对于组件库,我们应该更倾向于选用基于 class 的策略而不是 scoped attribute。

这让覆写内部样式更容易:使用了常人可理解的 class 名称且没有太高的选择器优先级,而且不太会导致冲突。

例如:

X

8、模板中的组件名大小写

对于绝大多数项目来说,在单文件组件和字符串模板中组件名应该总是 PascalCase 的——但是在 DOM 模板中总是 kebab-case 的。

PascalCase 相比 kebab-case 有一些优势:

编辑器可以在模板里自动补全组件名,因为 PascalCase 同样适用于 JavaScript。
视觉上比 更能够和单个单词的 HTML 元素区别开来,因为前者的不同之处有两个大写字母,后者只有一个横线。
如果你在模板中使用任何非 Vue 的自定义元素,比如一个 Web Component,PascalCase 确保了你的 Vue 组件在视觉上仍然是易识别的。
不幸的是,由于 HTML 是大小写不敏感的,在 DOM 模板中必须仍使用 kebab-case。

还请注意,如果你已经是 kebab-case 的重度用户,那么与 HTML 保持一致的命名约定且在多个项目中保持相同的大小写规则就可能比上述优势更为重要了。在这些情况下,在所有的地方都使用 kebab-case 同样是可以接受的。

例如:

或者

9、JS/JSX 中的组件名大小写

JS/JSX 中的组件名应该始终是 PascalCase 的,尽管在较为简单的应用中只使用 Vue.component 进行全局组件注册时,可以使用 kebab-case 字符串。

例如:
Vue.component(‘MyComponent’, {
// …
})
Vue.component(‘my-component’, {
// …
})
import MyComponent from ‘./MyComponent.vue’
export default { name: ‘MyComponent’, // … }

10、完整单词的组件名

组件名应该倾向于完整单词而不是缩写。

编辑器中的自动补全已经让书写长命名的代价非常之低了,而其带来的明确性却是非常宝贵的。不常用的缩写尤其应该避免。

例如:

components/

|- StudentDashboardSettings.vue

|- UserProfileOptions.vue

11、Prop 名大小写

在声明 prop 的时候,其命名应该始终使用 camelCase,而在模板和 JSX 中应该始终使用 kebab-case。

我们单纯的遵循每个语言的约定。在 JavaScript 中更自然的是 camelCase。而在 HTML 中则是 kebab-case。

例如:

props: {
greetingText: String
}

12、多个 attribute 的元素

多个 attribute 的元素应该分多行撰写,每个 attribute 一行。

在 JavaScript 中,用多行分隔对象的多个 property 是很常见的最佳实践,因为这样更易读。模板和 JSX 值得我们做相同的考虑。

例如:

<img
src=“https://vuejs.org/images/logo.png”
alt=“Vue Logo”

13、模板中简单的表达式

组件模板应该只包含简单的表达式,复杂的表达式则应该重构为计算属性或方法。

复杂表达式会让你的模板变得不那么声明式。我们应该尽量描述应该出现的是什么,而非如何计算那个值。而且计算属性和方法使得代码可以重用。

例如:

{{ normalizedFullName }}
// 复杂表达式已经移入一个计算属性 computed: { normalizedFullName: function () { return this.fullName.split(’ ‘).map(function (word) { return word[0].toUpperCase() + word.slice(1) }).join(’ ') } }

14、简单的计算属性

应该把复杂计算属性分割为尽可能多的更简单的 property。
例如:

computed: {
basePrice: function () {
return this.manufactureCost / (1 - this.profitMargin)
},
discount: function () {
return this.basePrice * (this.discountPercent || 0)
},
finalPrice: function () {
return this.basePrice - this.discount
}
}

15、带引号的 attribute 值

非空 HTML attribute 值应该始终带引号 (单引号或双引号,选你 JS 里不用的那个)。

在 HTML 中不带空格的 attribute 值是可以没有引号的,但这鼓励了大家在特征值里不写空格,导致可读性变差。

例如:

16、指令缩写

指令缩写 (用 : 表示 v-bind:、用 @ 表示 v-on: 和用 # 表示 v-slot:) 应该要么都用要么都不用。
例如:

<input
:value=“newTodoText”
:placeholder=“newTodoInstructions”

<input
v-bind:value=“newTodoText”
v-bind:placeholder=“newTodoInstructions”

<input
@input=“onInput”
@focus=“onFocus”

<input
v-on:input=“onInput”
v-on:focus=“onFocus”

Here might be a page title

Here's some contact info

三、推荐的

1、组件/实例的选项的顺序

组件/实例的选项应该有统一的顺序。

这是我们推荐的组件选项默认顺序。它们被划分为几大类,所以你也能知道从插件里添加的新 property 应该放到哪里。

副作用 (触发组件外的影响)

el
全局感知 (要求组件以外的知识)

name
parent
组件类型 (更改组件的类型)

functional
模板修改器 (改变模板的编译方式)

delimiters
comments
模板依赖 (模板内使用的资源)

components
directives
filters
组合 (向选项里合并 property)

extends
mixins
接口 (组件的接口)

inheritAttrs
model
props/propsData
本地状态 (本地的响应式 property)

data
computed
事件 (通过响应式事件触发的回调)

watch
生命周期钩子 (按照它们被调用的顺序)
beforeCreate
created
beforeMount
mounted
beforeUpdate
updated
activated
deactivated
beforeDestroy
destroyed
非响应式的 property (不依赖响应系统的实例 property)

methods
渲染 (组件输出的声明式描述)

template/render
renderError
2、元素 attribute 的顺序

元素 (包括组件) 的 attribute 应该有统一的顺序。

这是我们为组件选项推荐的默认顺序。它们被划分为几大类,所以你也能知道新添加的自定义 attribute 和指令应该放到哪里。

定义 (提供组件的选项)

is
列表渲染 (创建多个变化的相同元素)

v-for
条件渲染 (元素是否渲染/显示)

v-if
v-else-if
v-else
v-show
v-cloak
渲染方式 (改变元素的渲染方式)

v-pre
v-once
全局感知 (需要超越组件的知识)

id
唯一的 attribute (需要唯一值的 attribute)

ref
key
双向绑定 (把绑定和事件结合起来)

v-model
其它 attribute (所有普通的绑定或未绑定的 attribute)

事件 (组件事件监听器)

v-on
内容 (覆写元素的内容)

v-html
v-text
3、组件/实例选项中的空行

你可能想在多个 property 之间增加一个空行,特别是在这些选项一屏放不下,需要滚动才能都看到的时候。

当你的组件开始觉得密集或难以阅读时,在多个 property 之间添加空行可以让其变得容易。在一些诸如 Vim 的编辑器里,这样格式化后的选项还能通过键盘被快速导航。

例如:

props: {
value: {
type: String,
required: true
},

  focused: {
    type: Boolean,
    default: false
  },

  label: String,
  icon: String
},

computed: {
  formattedValue: function () {
    // ...
  },

  inputClasses: function () {
    // ...
  }

}

4、单文件组件的顶级元素的顺序

单文件组件应该总是让

<template>...</template>
<script>/* ... */</script>
<style>/* ... */</style>

…

基于SSH框架的电影订票系统网站的设计与实现 源码及论文: 源码及论文下载:http://www.byamd.xyz/tag/java/ 开发计划 1. 甘特图 2. 开发计划简述 如图所示在项目初期阶段,首先开始需求调研。 需求调研阶段,我们将首先根据初期的会议内容考虑市场需求以及基本的市场现状,并根据以上的内容设计问卷来寻找痛点。我们准备使用第三方问卷工具,以电子问卷的方式来进行调查。初步预计会收到200份问卷。 在需求调查阶段,同时开展对同类型的网站的评估工作。进入初步的需求分析阶段。目标是取得现有电影购票网站的基本购票流程,并对其交互等 阅读详情

相关推荐

Vue.js与前端工程化的完美融合

本文介绍了Vue.js在前端开发中的应用,特别是与Visual Studio Code的集成以及Vue.js官方提供的Chrome调试工具。同时,深入探讨了前端工程化的重要性以及如何通过Scrat框架和Vue.js实现高效的前端开发流程。

weixin_32869687的博客 743

Vue要求组件名称总是多字的解决

package.json添加:如下字段。

m0_73461567的博客 1517

gephi生成网络关系图_路网拓扑重建专题 (3) 网络图生成

城市道路网建模在获得基础路网之后,需要考虑道路交通网络的描述与表达问题。网络是将现实世界中的事物及其关系进行适当的抽象,构造成由节点和边按照一定规则组成的形式。一个实体网络可以由有限个“节点”集合与“边”集合构成的图表示,即网络表示为。对于一个由个节点组成的无权复杂网络,该图有邻接矩阵,这里。根据研究对象不同,建模方法主要包括原始法[1]和对偶法[2]两种,见图1,字母a-j为交叉口编号...

weixin_39761195的博客 3504

Vue项目中组件如何使用

笔记

Liw_J的博客 940

用Bus Hound和MIDIOX抓包分析USB MIDI数据流:从硬件接口到软件解析的完整实战

本文详细介绍了如何使用Bus Hound和MIDIOX工具抓包分析USB MIDI数据流,从硬件接口到软件解析的完整实战过程。通过解析MIDI协议、捕获Note On/Off事件、控制变更消息等实例,帮助开发者深入理解音乐数字接口的底层通信机制,并提供了常见问题的解决方案和调试技巧。

weixin_42692935的博客 406

Boost变换电路在新能源车充电系统中的创新应用与挑战

本文探讨了Boost变换电路在新能源车充电系统中的创新应用与挑战,重点分析了其在高压快充、能量回收等场景中的技术突破。通过电力电子仿真和新型器件应用,如SiC MOSFET,显著提升了功率密度和转换效率。同时,文章还深入讨论了电磁兼容性(EMC)挑战及智能控制算法的实际应用,为新能源车充电系统的优化提供了实用解决方案。

7z8x2c4v6b9的博客 218

Vue项目报错: Component name “xxx“ should always be multi-word vue/multi-word-component-names

vue

qq_40787608的博客 2万+

某手sig3-ios算法 Chomper黑盒调用

本文主要是介绍Chomper的算法模拟执行,Chomper目前已经已经是能比较完整的模拟ios可执行文件执行的模拟器,在这块有非常大的优势。以前安卓端有强势的unidbg,现在iOS也有Chomper了,后续等待作者持续更新,完善Chomper。强势推荐一波-> Chomper地址: https://github.com/sledgeh4w/chomper。我这块也已经使用Chomper完成雅迪系列、某手的算法调用。后续也会有更多扩展。

成小新的博客 2158

vue3报错error Component name “Layout“ should always be multi-word vue/multi-word-component-names

vue3的Component命名规范不能为单个词,修改为多个单词

qq_34458968的博客 1万+

【深度学习】脸部修复,CodeFormer,论文,实战

Blind face restoration是一个高度 ill-posed 的问题,通常需要辅助引导来 1) 改善从降级输入到期望输出的映射,或者 2) 补充在输入中丢失的高质量细节。在本文中,我们展示了在一个小的代理空间中学到的离散码本先验可以通过将盲目的面部恢复建模为 a code prediction task来大大减少恢复映射的不确定性和模糊性,同时为生成高质量面部提供丰富的视觉元素。

q742971636的博客 2996

在hyper-v管理器中修改WSL虚拟交换机后,打开wsl闪退

此次是因为修改了WSL虚拟交换机造成的wsl打不开或闪退,还有一种可能是关闭了hyper-v造成了wsl。

DN金猿的博客 1173

Vue和React开发规范 (一)

本文总结了Vue和React框架在HTML规范、组件样式隔离方面的差异与最佳实践。在HTML规范方面,Vue更接近原生HTML,而React采用JSX语法,在属性命名、闭合规则等方面有所不同。组件样式隔离方面,Vue提供scoped和CSS Modules方案,React则推荐CSS Modules和styled-components。文章对比了各方案的适用场景,为开发者选择合适的技术方案提供了参考

SpringHeather的专栏 1012

SOME/IP协议详解「1.0·概述」

主要讲解什么是someip,

雪云飞星的博客 5368

代码开发规范

而对于绑定在当前模板内容内的事件,尽管在onUnmounted阶段DOM通常已被销毁,导致无法直接注销监听器,现代浏览器已优化处理未与DOM关联的监听事件,自动释放它们。因此,为了确保应用程序的内存管理高效无漏,应在onUnmounted生命周期钩口中,主动调用插件提供的实例销毁方法,从而释放这些潜在的内存占用,维持应用的轻量与性能。你需要保证组件的 props 能应对不同的情况。在 Vue.js 中,组件的 props 即 API,一个稳定并可预测的 API 会使得你的组件更容易被其他开发者使用。

渐变强的小刘 899

openclaw通俗入门系列9——流式传输 + 分块

流式传输 = 不等写完就开始发。分块流式传输是把长回复切成几条消息发(所有渠道),草稿流式传输是像打字一样实时显示(仅 Telegram)。可以配置块大小、发送时机、合并规则、类人延迟。

m0_60605453的博客 507

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Uni-App - 开发规范及目录结构

为了实现微信小程序、原生App的跨端兼容,综合考虑编译速度、运行性能等因素,uni-app 约定了如下开发规范: 页面规范 - Vue 单文件组件 (SFC) 规范 .vue 文件是一个自定义的文件类型,用类 HTML 语法描述一个 Vue 组件。每个 .vue 文件包含三种类型的顶级语言块 &lt;template&gt;、&lt;script&gt; 和 &lt;style&gt;,还允许...

5712

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

ReadCat开源小说阅读器:从入门到精通的完整实战指南

在数字阅读时代,你是否厌倦了广告满天飞的阅读软件?是否渴望一款真正纯净、功能强大且完全免费的小说阅读器?ReadCat开源小说阅读器正是为追求极致阅读体验的用户而生。这款基于现代Web技术栈构建的跨平台桌面应用,以其简洁的界面、强大的插件系统和完全开源免费的特性,正在重新定义数字阅读的标准。 ## 为什么选择ReadCat?解决传统阅读器的三大痛点 ### 痛点一:广告干扰与隐私泄露 大多数商

gitblog_00664的博客 761

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

vue、vuex、vue-router初学导航配合elementui及vscode快捷键

vue基础知识及element,和vscode快捷键

孙叫兽的博客 4681

工作中开发规范

后端 JAVA 项目遵循 阿里JAVA开发手册 规范 前端 采用最新版本 Prettier 进行代码格式规范 Vue项目遵循 Vue.js风格指南 所有规则 移动端 安卓 采用JAVA开发则遵循 阿里JAVA开发手册 规范 AS 规范 使用最新的稳定版的 IDE 进行开发; 编码格式统一为 UTF-8; 编辑完 .java、.xml 等文件后一定要 格式化,格式化,格式化(如果团队有...

weixin_34232744的博客 315

vue cli 地址栏有变化而页面不变_搭建基于Vue的前端架构,总结15点经验(条理清晰,内容详实,系统全面,细节到位)...

△是新朋友吗?记得先点web前端学习圈关注我哦~1.分解需求技术栈考虑到后续招人和现有人员的技术栈,选择 Vue 作为框架。公司主要业务是 GIS 和 BIM,通常开发一些中大型的系统,所以 vue-router 和 vuex 都是必不可少的。放弃了 Element UI 选择了 Ant Design Vue(最近 Element 好像复活了,麻蛋)。工具库选择 lodash。建立脚手...

weixin_39751871的博客 258

前端开发工程师——开发规范

前端开发规范

qq_34184472的博客 530

Vue踩坑---组件命名一定要规范

一、组件命名   在写Vue项目的时候,用cube-ui的createAPI创建一个组件,结果运行的时候,报错信息是这样的: 怎么可能,让我npm 安装?这不是npm的事。后来又排查了老半天,把shopcart的组件名给改成了shop-cart,不报错了,没想到shop-cart组件名会影响到shoop-cart-list。Vue给出了官方的命名规范: 这就是我的问题所在!

JaneChelle 2万+

layui框架和vue哪个好_目前流行的9大前端框架

Vue (读音 /vjuː/,类似于view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。

ITSM/ITIL/网络安全/IT运维 3423

前端规范 - js开发规范

因为会牵扯到业务逻辑,在实际开发场景中,js开发会占绝大部分,相应的规范细节也比较多 限于篇幅原因,加上有eslint的这个利器,本文只讲一些最最常用的规范开启了eslint的项目,可以保证一个项目的底线;没有开启eslint的项目,时间长了大概率惨不忍睹我们做的是引用eslint的,然后在开发中调整成适合自己团队的规则 比如 可以关闭两格缩进,html js css三者统一为两格缩进 为什么不使用四格缩进 保持空行 [强制] 文件末尾空行 [推荐] 不同模块之间空行 [强制] 空格不超过1个 [强制]

loulanyijian的专栏 838

Vue Vben Admin 架构解析:构建企业级中后台系统的技术实现

在当前快速发展的企业数字化进程中,如何高效构建稳定可靠的中后台系统成为前端开发团队面临的核心挑战。Vue Vben Admin 作为基于 Vue 3 和 TypeScript 的现代化管理后台框架,通过其精心设计的架构为这一痛点提供了专业解决方案。 ## 技术实现深度剖析 Vue Vben Admin 采用分层架构设计,将系统划分为视图层、业务逻辑层、数据访问层和基础设施层。这种设计不仅提升了

gitblog_00386的博客 650
上一篇: Vue 更改keep-alive源码,满足条件性缓存(多个页签之间切换缓存,关闭页签重新打开不缓存)
下一篇: nginx 部署前端项目,不缓存html文件,项目发版后,不用手动刷新页面
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值