记录一些前端好用的小技巧

记录一些前端好用的小技巧

1.优雅编写js的if判断

在项目中我们难免会遇到一些需要判断很多个条件的if判断

// 多条件判断开始,如下

if (obj.radio1 || obj.checkbox1.length > 0 || obj.input1 || obj.inputNumber1 > 0 || obj.select1 || obj.select2.length > 0 || obj.switch1 || obj.radio2 || obj.checkbox2.length > 0 || obj.input2 || obj.inputNumber2 > 0 || obj.select3 || obj.select4.length > 0 || obj.switch2  ...) {
  // do something
} else {
  // 条件不符,提示
  this.$message({
    message: '请选择条件后重试',
    type: 'warning'
  })
  return false
} 

实际项目场景中的变量名因为语义化字符很多, if 判断没写几个就写了很长一串, 然后写了几个就写不动了(感觉在写一坨 shi ),且对代码的阅读体验也不好

能不能用更优雅的方式实现呢?

·思路一

把这些需要判断的变量放到一个数组里,用 map 处理成 Boolean 类型,使用 includes 判断数组中是否包含指定的 Boolean 值

// 多条件判断开始,如下

const arr = [
  obj.radio1,
  obj.checkbox1.length,
  obj.input1,
  obj.inputNumber1,
  obj.select1,
  obj.select2.length,
  obj.switch1,
  obj.radio2,
  obj.checkbox2.length,
  obj.input2,
  obj.inputNumber2,
  obj.select3,
  obj.select4.length,
  obj.switch2 
  ...
]

const arr1 = arr.map(item => Boolean(item))
if (arr1.includes(true)) {
  // do something
} else {
  // 条件不符,提示
  this.$message({
    message: '请选择条件后重试',
    type: 'warning'
  })
  return false
} 

2.时间判断

2.1 判断两个时间是否是同一天
new Date(date1).toDateString() === new Date(date2).toDateString();

3.vue的filters里拿不到this

3.1 filters多传参

如果只是需要this里面少量的参数,可以用如下写法

// template
{{ breadcrumbNameId | breadcrumbNameFilter(你要的参数) }}
3.2 利用计算属性或方法
// template
{{ breadcrumbNameId | breadcrumbNameFilter }}
// computed / methods
breadcrumbNameFilter() {
	return this
}

4.Object.is(val1, val2)

方法用来比较两个值是否严格相等,与严格比较运算符(===)的行为基本一致。
不同之处只有两个:一是: +0不等于-0,二是: NaN等于自身。

+0 === -0 //true
NaN === NaN // false

{} === {} // false
Object.is({}, {}); // false

Object.is(+0, -0) // false
Object.is(NaN, NaN) // true

5.null、undefined、NaN转Number/Boolean类型数据

对于null、undefined、NaN进行类型转换

	// 转成布尔类型
	!!null === false
	!!undefined === false
	!!NaN === false

	// 转成数字类型
	~~null === 0
	~~undefined === 0
	~~NaN === 0

6.对obj类型数据简单格式化

对于需要在页面格式化展示json格式的obj数据,可以进行简单格式化

	JSON.stringify(JSON.parse(json数据格式), null, '\t')
	// 或者
	JSON.stringify(obj, null, '\t')

7.对node_modules里的某个组件或插件进行改造,改造后代码同步问题

在开发时我们经常会遇到,安装的组件或插件不完全符合需求的情况,一般我们会选择去改造或者自己从零编写,在此处我们说改造的情况

我们对node_modules里的代码进行改造时,会遇到一个问题,重新安装依赖包后会覆盖掉我们的代码,并且其他开发小伙伴也不能同步拉取你改造的代码,我们可以这样做,把某个组件/插件复制一份到自己的远程仓库,然后在自己的远程仓库去改造,最后在package.json里面如此修改

// package.json 文件
"dependencies": {
    "xxx": "git+远程仓库地址",
    ...
 }
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值