中秋不加班:js枚举值enums在业务中的应用案例

简介: 中秋不加班:js枚举值enums在业务中的应用案例

不使用枚举值面临的问题

1、问题1


比如写vue组件的时候,需要多层传递参数,如果是二选一还好,传递一个bool值,true/false。


如果是有很多值,传递0、1、2、3…,过短时间来看代码,不知道什么心情


2、问题2


如果不使用枚举值,代码中到处是字符串 ‘red’, 有一天后端接口说这个枚举值需要修改一下,处处修改代码,稍有不慎,将面临雪崩,导致一些未能及时发现的问题


正常来说,定义好枚举值之后,不应该随意修改,可是接口代码在后端同学手里,你自然无法控制


当然也可以说服后端同学不要改


如何使用枚举值

1、第一步:定义枚举值


// enums.js
// 颜色枚举值,可以是字符串,也可以是数值
export const colorEnum = {
  RED: 'red',
  GREEN: 'green',
  BLUE: 'blue',
}
// 颜色枚举值和显示值对应关系,也可以包含其他字段属性
// 该数据也可以用于select下拉选择
export const colorOptions = [
  {
    label: '红色',
    value: colorEnum.RED,
  },
  {
    label: '绿色',
    value: colorEnum.GREEN,
  },
  {
    label: '蓝色',
    value: colorEnum.BLUE,
  },
]
// 可能在不同的场景下,显示不一样的值,也可支持传递额外参数
export function getColorLabel(colorValue) {
  for (let item of colorOptions) {
    if (item.value == colorValue) {
      return item.label
    }
  }
}

2、第二步:使用枚举值


使用场景一:真实值 和 枚举值 做逻辑判断


import { colorEnum } from './enums.js'
// 可以通过接口返回的 真实值 和 枚举值 做逻辑判断
let res = { color: 'red' }
// 最好使用 ===,减少不必要的错误
console.log(colorEnum.RED == res.color);
// true

使用场景二:真实值 转换 显示值


后端接口返回一个list列表,列表没有返回显示值,需要通过真实值进行转换显示

import { getColorLabel } from './enums.js'
// 这个时候,服务端的接口返回了一个值 red
// 通过 值 获取 显示内容,显示到界面
let colorLabel = getColorLabel('red');
console.log(colorLabel);
// 红色

相关文章
|
14天前
|
设计模式 前端开发 JavaScript
【JavaScript 技术专栏】JavaScript 设计模式与实战应用
【4月更文挑战第30天】本文探讨JavaScript设计模式在提升开发效率和代码质量中的关键作用。涵盖单例、工厂、观察者、装饰器和策略模式,并通过实例阐述其在全局状态管理、复杂对象创建、实时数据更新、功能扩展和算法切换的应用。理解并运用这些模式能帮助开发者应对复杂项目,提升前端开发能力。
|
17天前
|
JavaScript 前端开发
js变量的作用域、作用域链、数据类型和转换应用案例
【4月更文挑战第27天】JavaScript 中变量有全局和局部作用域,全局变量在所有地方可访问,局部变量只限其定义的代码块。作用域链允许变量在当前块未定义时向上搜索父级作用域。语言支持多种数据类型,如字符串、数字、布尔值,可通过 `typeof` 检查类型。转换数据类型用 `parseInt` 或 `parseFloat`,将字符串转为数值。
18 1
|
1天前
|
设计模式 JavaScript 算法
js设计模式-策略模式与代理模式的应用
策略模式和代理模式是JavaScript常用设计模式。策略模式通过封装一系列算法,使它们可互换,让算法独立于客户端,提供灵活的选择。例如,定义不同计算策略并用Context类执行。代理模式则为对象提供代理以控制访问,常用于延迟加载或权限控制。如创建RealSubject和Proxy类,Proxy在调用RealSubject方法前可执行额外操作。这两种模式在复杂业务逻辑中发挥重要作用,根据需求选择合适模式解决问题。
|
2天前
|
存储 监控 JavaScript
使用Node.js构建实时聊天应用的技术指南
【5月更文挑战第12天】本文指导使用Node.js、Express.js和Socket.IO构建实时聊天应用。技术栈包括Node.js作为服务器环境、WebSocket协议、Express.js作为Web框架和Socket.IO处理实时通信。步骤包括项目初始化、安装依赖、搭建服务器、实现实时聊天功能、运行应用以及后续的完善和部署建议。通过这个指南,读者可以学习到创建简单实时聊天应用的基本流程。
|
8天前
|
数据采集 JavaScript 数据可视化
Node.js爬虫在租房信息监测与分析中的应用
Node.js爬虫在租房信息监测与分析中的应用
|
14天前
|
开发框架 JavaScript 前端开发
【JavaScript 与 TypeScript 技术专栏】TypeScript 在 Web 开发中的前沿应用
【4月更文挑战第30天】TypeScript在Web开发中日益重要,以其强大的类型系统提升代码质量,支持组件化开发,与React、Vue、Angular等框架良好集成。在大型项目管理中,TypeScript助于代码组织和优化,提高团队协作效率。此外,它提升开发体验,提供智能提示和错误检测。众多成功案例证明其前沿应用,未来将在Web开发领域持续发挥关键作用。
|
14天前
|
前端开发 JavaScript 网络协议
【JavaScript技术专栏】WebSockets在JavaScript中的应用
【4月更文挑战第30天】WebSocket是为解决HTTP协议在实时通信上的局限而诞生的技术,提供全双工、持久连接的通信方式,适合在线聊天、实时游戏等场景。JavaScript中的WebSocket API使浏览器与服务器能建立持久连接,通过事件处理连接、发送/接收数据及错误。相较于AJAX轮询和长轮询,WebSockets更高效、实时,是现代Web实时通信的优选。
|
14天前
|
移动开发 JavaScript 前端开发
【JavaScript技术专栏】Web Worker在JavaScript中的应用
【4月更文挑战第30天】HTML5的Web Worker API解决了JavaScript单线程性能瓶颈问题,允许在后台线程运行JS代码。本文介绍了Web Worker的基本概念、类型、用法和应用场景,如复杂计算、图像处理和数据同步。通过实例展示了搜索建议、游戏开发和实时数据分析等应用,并提醒注意其无法直接访问DOM、需消息传递通信以及移动端资源管理。Web Worker为前端开发提供了多线程能力,提升了Web应用性能和用户体验。
|
15天前
|
JSON 前端开发 JavaScript
使用JavaScript制作一个简单的天气应用
使用JavaScript制作一个简单的天气应用
|
17天前
|
JavaScript 前端开发
js的let、const、var的区别以及应用案例
【4月更文挑战第27天】ES6 中,`let` 和 `const` 是新增的变量声明关键字,与 `var` 存在显著差异。`let` 允许重新赋值,而 `const` 不可,且两者都具有块级作用域。`var` 拥有函数级作用域,并可在函数内任意位置访问。`let` 和 `const` 声明时必须初始化,而 `var` 不需。根据需求选择使用:局部作用域用 `let`/`const`,全局或函数范围用 `var`,不可变值用 `const`。
24 2