Vue-Cli中自定義過濾器的實(shí)現(xiàn)代碼
本文主要介紹了Vue-Cli中自定義過濾器,分享給大家,也給自己做個(gè)筆記
vue2里面移除了內(nèi)置過濾器,所有過濾器都需要自己定義。
以下例子是使用webpack模版自定義一個(gè)日期格式過濾器的例子。
文件結(jié)構(gòu)
. ├── src │ ├── Filters │ │ ├── DataFormat.js │ │ └── index.js │ └── main.js └── ...
所有過濾器都放在Filters文件夾下,剩下的就是webpack模版的文件結(jié)構(gòu),在這里就不完全寫出來。
Filters/DataFormat.js
這個(gè)文件主要是寫了過濾器實(shí)現(xiàn)的方法,然后export進(jìn)行導(dǎo)出。
export default (time, fmt) => {
fmt = fmt || 'yyyy-MM-dd hh:mm';
let date = new Date(time);
if (/(y+)/.test(fmt)) {
fmt = fmt.replace(
RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length)
);
}
let dt = {
'M+': date.getMonth() + 1,
'd+': date.getDate(),
'h+': date.getHours(),
'm+': date.getMinutes(),
's+': date.getSeconds()
}
for (let key in dt) {
if (new RegExp(`(${key})`).test(fmt)) {
let str = dt[key] + ''
fmt = fmt.replace(RegExp.$1,
(RegExp.$1.length === 1) ? str : ('00' + str).substr(str.length)
);
}
}
return fmt;
}
這段代碼是在網(wǎng)上找的,我只是對其中稍作修改。
Filters/index.js
這里把所有自定義的過濾器都匯總,方便待會在main.js中一次性添加到全局過濾器中。
如果有多個(gè)自定義的過濾器就只需要在這個(gè)文件內(nèi)依次導(dǎo)出就行。
// 導(dǎo)出日期過濾器
import dateFormat from './DateFormat'
// 導(dǎo)出的時(shí)候以key value的形式導(dǎo)出,這里就設(shè)置了在全局過濾器中的過濾器名字。
export {dateFormat}
// 可以繼續(xù)導(dǎo)出其他的過濾器
src/main.js
這個(gè)文件是程序的主入口,一般負(fù)責(zé)配置相關(guān)的東西。所以添加過濾器的工作毫無疑問的交給它了(也只有在這里能夠拿到Vue對象)。
// 默認(rèn)會找 Filters/index.js
import * as filters from './Filters/'
// 遍歷所有導(dǎo)出的過濾器并添加到全局過濾器
Object.keys(filters).forEach((key) => {
Vue.filter(key, filters[key]);
})
使用
使用起來很簡單,和正常的使用方式一摸一樣,寫在項(xiàng)目中需要的.vue文件中即可
<template>
<!-- 2017-08-11 21:21 -->
<h1>{{ new Date() | dateFormat }}</h1>
<!-- 2017年08月11日 21:21:05 -->
<h1>{{ new Date() | dateFormat('yyyy年MM月dd日 hh:mm:ss') }}</h1>
</template>
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
在Vue3里使用scss實(shí)現(xiàn)簡單的換膚功能
這篇文章主要介紹了在Vue3里使用scss實(shí)現(xiàn)簡單的換膚功能,主題色切換、亮色模式和暗黑模式切換、背景圖切換,文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下2024-12-12
vue實(shí)現(xiàn)虛擬滾動(dòng)的示例詳解
虛擬滾動(dòng)或者移動(dòng)是指禁止原生滾動(dòng),之后通過監(jiān)聽瀏覽器的相關(guān)事件實(shí)現(xiàn)模擬滾動(dòng),下面小編就來和大家詳細(xì)介紹一下vue實(shí)現(xiàn)虛擬滾動(dòng)的示例代碼,需要的可以參考下2023-10-10
關(guān)于Vue項(xiàng)目使用scss終端發(fā)出警告解決方法
這篇文章主要介紹了關(guān)于Vue項(xiàng)目使用scss終端發(fā)出警告的解決方法,出現(xiàn)這個(gè)問題的原因是項(xiàng)目中使用了DartSass舊版的JavaScriptAPI,這些API已被棄用,文章將解決的辦法介紹的非常詳細(xì),需要的朋友可以參考下2025-04-04
在vue.js中使用JSZip實(shí)現(xiàn)在前端解壓文件的方法
今天小編就為大家分享一篇在vue.js中使用JSZip實(shí)現(xiàn)在前端解壓文件的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09
KKFileView結(jié)合vue多格式文件在線預(yù)覽功能實(shí)現(xiàn)
kkFileView是git的開源在線文件預(yù)覽項(xiàng)目,這篇文章主要介紹了KKFileView結(jié)合vue多格式文件在線預(yù)覽功能,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2024-02-02
Vue新手指南之創(chuàng)建第一個(gè)vue-cli腳手架程序
vue-cli 是一個(gè)官方發(fā)布 vue.js 項(xiàng)目腳手架,使用 vue-cli 可以快速創(chuàng)建 vue 項(xiàng)目。這篇文章主要給大家介紹了關(guān)于Vue新手指南之創(chuàng)建第一個(gè)vue-cli程序的相關(guān)資料,需要的朋友可以參考下2021-05-05

