美文网首页
巧用 vue 过滤器

巧用 vue 过滤器

作者: Avery_G | 来源:发表于2020-07-09 16:48 被阅读0次

 前言

在项目中经常会遇到时间戳转换,手机号、身份证号脱敏,状态的转换等,如果不复用会存在很多问题:

一、维护困难

二、开发重复性工作比较多

三、代码量比较多,不雅观那么,如何解决这些问题呢?

方案

我们可以使用 Vue 的过滤器 Filter 定义工具类 globalFilter.js,然后全局注册到 Vue 中,以供各个模块使用。

// 全局导入过滤器

import filter from './utils/globalFilter'

Object.keys(filter).forEach(key => Vue.filter(key, filter[key]))

当然,前提是要先在 utils 文件夹中创建对应的文件 globalFilter.js 那么 globalFilter.js 文件中要怎么写过滤器呢?

我们以时间戳转换为例:

一般情况下,我们会写个时间戳转换的 function,粗糙一点的写法是在 function 最后 return 需要的格式(如:xxxx/xx/xx),但是假如想要换成其他格式,或者想要把时分秒也加上(如:xxxx-xx-xx xx:xx),就需要在写一个方法,或者高级一点的写法是,把需要的格式当成参数,这样一个 function 就够了,但是有日期处理类库 moment ,为什么要那么麻烦写那么多代码呢?

moment 使用

1. npm  安装

npm install moment --save

2. 在 globalFilter 中引入,并使用

// vue的时间格式化插件

import moment from 'moment'

// 时间格式化函数,默认格式为YYYY-MM-DD HH:mm:ss,若需要其他格式,只需使用的时候将想要的格式作为参数传入即可

// 使用方法 {{时间戳 | dateFormat}} 或 {{时间戳 | dateFormat('YYYY-MM-DD HH:mm:ss')}}

const dateFormat = (dataStr, pattern = 'YYYY/MM/DD') => {

    return moment(dataStr).format(pattern)

}

使用的时候,也很方便,直接在html代码处,用过滤器的形式使用就行了

{{data | dateFormat('YYYY-MM-DD HH:mm:ss')}}

这样是不是比自己写个方法要简化的多呢?

手机号、身份证号脱敏

// 手机号脱敏

const telHide = phone => {

    if (phone === undefined || phone === null) {

        return ''

    }

    return phone.toString().replace(/(\d{3})\d{4}(\d*)/, '$1****$2')

}

// 身份证号脱

const IDCardHide = IDCard => {

    if (IDCard === undefined || IDCard === null) {

        return ''

    }

    return IDCard.toString().replace(/(\d{8})\d{8}(\d*)/, '$1********$2')

}

使用方法和时间戳一样,也是过滤器的形式

{{ phone | phone }}

 状态值的转换

比如,交易类型,一般情况,后台会返回给1,2,3这种状态值,需要前端去对应,优雅的写法是在这个文件的js中去做处理,页面直接渲染就好了,但是很多时候,可能这个状态不止在一个页面中使用,所以提取成公用的还是很有必要的,这样即使后期修改状态值,前端也可以很快的改好,不必一个文件一个文件去找

// 充值类型

const SubTradeType = type => {

    const status = {

        // 1 在线充值、2 线下充值

        '1': '在线充值',

        '2': '线下充值'

    }

    return status[type]

}

使用的时候,还是过滤器的写法

{{subTradeType | SubTradeType}}

当然了,上述这些,都需要在globalFilter.js最后export

export default {

    dateFormat,

    telHide,

    IDCardHide,

    SubTradeType

}

相关文章

  • 巧用 vue 过滤器

    前言 在项目中经常会遇到时间戳转换,手机号、身份证号脱敏,状态的转换等,如果不复用会存在很多问题: 一、维护困难 ...

  • tool.js

    vue时间格式过滤器(今天,昨天,周几,年月日) vue金额过滤器 手机横屏签名功能(vue)

  • 6.Vue过滤器

    Vue过滤器: vue过滤器使用管道 | 进行调用,如:{{name | myFilter}},如果需要传入参数...

  • Vue-04

    过滤器:对显示在页面上的数据进行筛选 全局过滤器 和Vue同级 Vue.filter(“过滤器名称”,func...

  • vue自定义过滤器

    Vue的自定义过滤器有两种:全局过滤器和内部过滤器全局过滤器定义在vue实例化之前 内部过滤器注册在实例内部,仅在...

  • 9.自定义vue全局过滤器

    1.Vue.filter('过滤器名字',过滤器函数):

  • vue 过滤器做字数限制并显示省略号

    定义过滤器 使用vue中的 过滤器filters

  • 关于angular与vue在过滤器方面的不同

    目前看来,angular与vue在过滤器方面差异较大,总的来说angular的过滤器较简单方便,vue的过滤器更像...

  • vue 过滤器filter中this为undefined

    vue过滤器filters 中this为undefined 可以使用computed解决: vue中的过滤器更偏向...

  • Vue过滤器和vue-resource

    过滤器 之前我们学习了Vue的 vue基本指令 进阶学习,我们需要了解Vue的过滤器:Vue.js允许你自定义过滤...

网友评论

      本文标题:巧用 vue 过滤器

      本文链接:https://www.haomeiwen.com/subject/zmsscktx.html