前言
在项目中经常会遇到时间戳转换,手机号、身份证号脱敏,状态的转换等,如果不复用会存在很多问题:
一、维护困难
二、开发重复性工作比较多
三、代码量比较多,不雅观那么,如何解决这些问题呢?
方案
我们可以使用 Vue 的过滤器 Filter 定义工具类 globalFilter.js,然后全局注册到 Vue 中,以供各个模块使用。
1 | // 全局导入过滤器 |
当然,前提是要先在 utils 文件夹中创建对应的文件 globalFilter.js 那么 globalFilter.js 文件中要怎么写过滤器呢?
我们以时间戳转换为例:
一般情况下,我们会写个时间戳转换的 function,粗糙一点的写法是在 function 最后 return 需要的格式(如:xxxx/xx/xx),但是假如想要换成其他格式,或者想要把时分秒也加上(如:xxxx-xx-xx xx:xx),就需要在写一个方法,或者高级一点的写法是,把需要的格式当成参数,这样一个 function 就够了,但是有日期处理类库 moment ,为什么要那么麻烦写那么多代码呢?
moment 使用
1. npm 安装
1 | npm install moment --save |
2. 在 globalFilter 中引入,并使用
1 | // vue 的时间格式化插件 |
使用的时候,也很方便,直接在html代码处,用过滤器的形式使用就行了
1 | {{data | dateFormat('YYYY-MM-DD HH:mm:ss')}} |
这样是不是比自己写个方法要简化的多呢?
手机号、身份证号脱敏
1 | // 手机号脱敏 |
使用方法和时间戳一样,也是过滤器的形式
1 | {{ phone | phone }} |
状态值的转换
比如,交易类型,一般情况,后台会返回给1,2,3这种状态值,需要前端去对应,优雅的写法是在这个文件的js中去做处理,页面直接渲染就好了,但是很多时候,可能这个状态不止在一个页面中使用,所以提取成公用的还是很有必要的,这样即使后期修改状态值,前端也可以很快的改好,不必一个文件一个文件去找
1 | // 充值类型 |
使用的时候,还是过滤器的写法
1 | {{subTradeType | SubTradeType}} |
当然了,上述这些,都需要在globalFilter.js最后export
1 | export default { |