前端项目中常用JS方法封装分享

写在前面

我在写项目时,会把经常用到的方法专门用一个JS文件来管理,下面是我项目中经常用的一些方法
1、日期格式化(时间戳转年月日时分秒);
2、千分位格式化(10000转10,000);
3、Element UI前端el-table前端导出;
4、两个数组对象去重;
5、后端返回数据流前端下载方法;
6、富文本标签过滤(去除HTML标签)
7、WEB复制到剪贴板功能
6、判断是不是JSON字符串

一、日期格式化

在实际项目中,后端返回时间基本都是以时间戳的格式,我们前端拿到肯定是要转换成相应的年月日时分秒格式的,以下是方法:

1、对Date的扩展:新建js文件,并全局引入

Date.prototype.Format = function (fmt) { // author: meizz
  const DateObjs = {
    'M+': this.getMonth() + 1, // 月份
    'd+': this.getDate(), // 日
    'h+': this.getHours(), // 小时
    'm+': this.getMinutes(), // 分
    's+': this.getSeconds(), // 秒
    'q+': Math.floor((this.getMonth() + 3) / 3), // 季度
    S: this.getMilliseconds() // 毫秒
  }
  if (/(y+)/.test(fmt)) {
    fmt = fmt.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length))
  }
  for (var key in DateObjs) {
    if (new RegExp('(' + key + ')').test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (DateObjs[key]) : (('00' + DateObjs[key]).substr(('' + DateObjs[key]).length)))
  }
  return fmt
}

2、封装常用时间方法:将时间戳转换成指定格式时间

export const dateFilter = (time, format = 'yyyy-MM-dd hh:mm:ss') => {
  return time ? new Date(time).Format(format) : ''
}
// 使用方法
dateFilter(时间戳, 'yyyy年MM月dd日 hh:mm:ss')

二、千分位格式化

即:1000000 => 1,000,000,这个比较简单,以下是方法:

// 千分位数字
export const numberFormat = (number) => number.toLocaleString()
// 使用方法
numberFormat(1000000)

三、Element UI前端el-table前端导出

前端导出速度更快,体验更好

1、安装三个依赖包
npm install -S file-saver
npm install -S xlsx
npm install -D script-loader

2、把Blob.js和 Export2Excel.js这两个文件放到项目中
百度云链接: https://pan.baidu.com/s/1sXMEce5MbTOvgf1yFvd5IQ
密码: qvi7
*此链接转载自@一条小鲨鱼

3、封装

// 导出
export const exportTable = (columns, list, name = '未命名') => {
  return new Promise((resolve, reject) => {
    var columnNames = []
    var columnValues = []
    for (var i = 0; i < columns.length; i++) {
      columnNames[i] = columns[i].label
      columnValues[i] = columns[i].prop
    }
    require.ensure([], () => {
      const { exportJsonToExcel } = require('./Export2Excel')
      const tHeader = columnNames
      const filterVal = columnValues
      const data = list.map(v => filterVal.map(j => v[j]))
      exportJsonToExcel(tHeader, data, name)
      resolve()
    })
  })
}

4、使用

// 声明要导出的字段
const columns = [
  { prop: 'userName', label: '姓名' },
  { prop: 'userPwd', label: '密码' },
  { prop: 'sex', label: '性别' },
  { prop: 'school', label: '学校' }
]
// 调用方法,三个参数:(要导出的字段,后台返回的数据,文件名字)
// data数据格式:
exportTable(columns, data, '文件名').finally(data => {
  // 导出成功要做的事情
})

四、两个数组对象去重

// 方法
export const filterTwoArray = (arr1, arr2, key) => {
  if (arr1.length && arr2.length) {
    return arr1.filter(x => arr2.every(y => y[key] !== x[key]))
  } else {
    return []
  }
}

五、后端返回数据流前端下载方法

实际项目中后台接口有可能是返回一个文档流的方式,前端下载需要处理一下

1、方法封装

// 下载文件
export const downFile = (file, fileName) => {
  return new Promise((resolve, reject) => {
    const blob = new Blob([file], { type: 'application/xls' }) // data就是接口返回的文件流了
    const link = document.createElement('a') // 生成一个a标签。
    link.href = window.URL.createObjectURL(blob) // href属性指定下载链接
    link.download = fileName // dowload属性指定文件名
    link.click() // click()事件触发下载
    resolve()
  })
}

2、使用方法

// 请求接口
// *注意:如果后端返回的文档流格式,前端请求接口时需要传递参数responseType: 'blob'
downloadFile().then(data => {
  // data为后端返回的文档流,第二个参数为文件名字
  downFile(data, '成绩导入模版.xls')
})

六、富文本标签过滤

去除富文本中的HTML标签

// 富文本过滤
export const textFormat = (text) => {
  if (!text) return
  text = text.replace(/&nbsp;/g, '')
  text = text.replace(/(\n)/g, '')
  text = text.replace(/(\t)/g, '')
  text = text.replace(/(\r)/g, '')
  text = text.replace(/<\/?[^>]*>/g, '')
  text = text.replace(/\s*/g, '')
  return text
}

七、WEB复制到剪贴板功能

export const copyText = (text, cb) => {
  // 数字转换成字符串
  text = typeof text === 'number' ? text.toString() : text
  const textarea = document.createElement('textarea')
  textarea.value = text
  textarea.readOnly = 'readOnly'
  document.body.appendChild(textarea)
  textarea.select()
  textarea.setSelectionRange(0, text.length)
  document.execCommand('copy')
  textarea.remove()
  cb()
}

八、判断是不是JSON字符串

export const isJSON = (str) => {
  if (typeof str === 'string') {
    try {
      JSON.parse(str)
      return true
    } catch {
      return false
    }
  } else {
    return false
  }
}

此条博客会一直更新,有新的方法会一直添加,大家多多关注哦!
觉得有用就给我点个赞吧,蟹蟹,(●ˇ∀ˇ●)
个人联系方式(添加请备注):
QQ:332983810
微信:hu_jiliang

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
我们可以使用 JavaScript 的 `WebSocket` 对象来创建一个 WebSocket 连接,然后封装一些常用方法来简化操作。以下是一个简单的封装示例: ```javascript class WebSocketClient { constructor(url) { this.url = url; this.websocket = null; this.isConnected = false; this.connect(); } connect() { this.websocket = new WebSocket(this.url); this.websocket.onopen = () => { this.isConnected = true; console.log('WebSocket 连接成功'); }; this.websocket.onmessage = (event) => { console.log('收到消息:', event.data); }; this.websocket.onclose = () => { this.isConnected = false; console.log('WebSocket 连接关闭'); }; this.websocket.onerror = (error) => { console.error('WebSocket 错误:', error); }; } send(message) { if (this.isConnected) { this.websocket.send(message); console.log('发送消息:', message); } else { console.error('WebSocket 连接未建立'); } } close() { if (this.isConnected) { this.websocket.close(); console.log('WebSocket 连接关闭'); } else { console.error('WebSocket 连接未建立'); } } } ``` 使用示例: ```javascript const ws = new WebSocketClient('ws://localhost:8080'); ws.send('Hello, WebSocket!'); ws.close(); ``` 在上面的示例,我们使用 `WebSocketClient` 类来封装了一个 WebSocket 客户端,提供了 `connect`、`send` 和 `close` 方法。其,`connect` 方法用于建立 WebSocket 连接,`send` 方法用于发送消息,`close` 方法用于关闭连接。在创建实例时,会自动调用 `connect` 方法来建立连接。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值