Vue中使用Day.js時(shí)間轉(zhuǎn)化插件詳細(xì)教程(附Vue2與Vue3寫法)
一、引言
在前端開發(fā)中,日期和時(shí)間的處理是常見需求。Day.js 是一個(gè)輕量級(jí)的 JavaScript 日期處理庫(kù),與 Moment.js 功能類似,但體積更小、速度更快。在 Vue 項(xiàng)目里,使用 Day.js 能方便地進(jìn)行日期格式化、計(jì)算、比較等操作。不過,由于 Vue 2 和 Vue 3 在語(yǔ)法和架構(gòu)上存在差異,在這兩個(gè)版本中使用 Day.js 的方式也有所不同。下面我們就分別介紹在 Vue 2 和 Vue 3 中如何使用 Day.js 插件。
二、在 Vue 2 中使用 Day.js
2.1 安裝 Day.js
首先,需要在項(xiàng)目中安裝 Day.js??梢允褂?npm 或 yarn 進(jìn)行安裝:
npm install dayjs --save # 或者 yarn add dayjs
2.2 全局引入和使用
在 Vue 2 里,通常會(huì)在入口文件(如 main.js)中全局引入 Day.js,這樣在所有組件中都能使用。
// main.js
import Vue from 'vue';
import App from './App.vue';
import dayjs from 'dayjs';
// 定義一個(gè)全局過濾器用于日期格式化
Vue.filter('formatDate', (value, format = 'YYYY-MM-DD') => {
return dayjs(value).format(format);
});
new Vue({
render: h => h(App)
}).$mount('#app');在上述代碼中,我們定義了一個(gè)名為 formatDate 的全局過濾器,它接收一個(gè)日期值和一個(gè)可選的格式字符串作為參數(shù),使用 Day.js 對(duì)日期進(jìn)行格式化。
2.3 在組件中使用過濾器
在組件的模板中,可以直接使用這個(gè)全局過濾器。
<template>
<div>
<p>格式化后的日期: {{ currentDate | formatDate }}</p>
</div>
</template>
<script>
export default {
data() {
return {
currentDate: new Date()
};
}
};
</script>2.4 局部使用 Day.js
除了全局引入,也可以在單個(gè)組件中局部引入 Day.js
<template>
<div>
<p>格式化后的日期: {{ formattedDate }}</p>
</div>
</template>
<script>
import dayjs from 'dayjs';
export default {
data() {
return {
currentDate: new Date()
};
},
computed: {
formattedDate() {
return dayjs(this.currentDate).format('YYYY-MM-DD');
}
}
};
</script>三、在 Vue 3 中使用 Day.js
3.1 安裝 Day.js
同樣,先使用 npm 或 yarn 安裝 Day.js:
npm install dayjs --save # 或者 yarn add dayjs
3.2 全局引入和使用
在 Vue 3 中,結(jié)合 createApp 創(chuàng)建應(yīng)用實(shí)例,可以在 main.js 中全局引入 Day.js 并定義全局屬性或指令。
// main.js
import { createApp } from 'vue';
import App from './App.vue';
import dayjs from 'dayjs';
const app = createApp(App);
// 定義全局屬性
app.config.globalProperties.$dayjs = dayjs;
app.mount('#app');在上述代碼中,我們將 Day.js 掛載到全局屬性 $dayjs 上,這樣在所有組件中都可以通過 this.$dayjs 來使用 Day.js。
3.3 在組件中使用全局屬性
<template>
<div>
<p>格式化后的日期: {{ formattedDate }}</p>
</div>
</template>
<script setup>
import { getCurrentInstance } from 'vue';
const { appContext } = getCurrentInstance();
const dayjs = appContext.config.globalProperties.$dayjs;
const currentDate = new Date();
const formattedDate = dayjs(currentDate).format('YYYY-MM-DD');
</script>3.4 局部使用 Day.js
也可以在單個(gè)組件中直接局部引入 Day.js。
<template>
<div>
<p>格式化后的日期: {{ formattedDate }}</p>
</div>
</template>
<script setup>
import dayjs from 'dayjs';
const currentDate = new Date();
const formattedDate = dayjs(currentDate).format('YYYY-MM-DD');
</script>四、對(duì)比總結(jié)
4.1 引入方式
- Vue 2:通過
Vue.filter定義全局過濾器,或者在組件中直接引入使用。 - Vue 3:使用
createApp創(chuàng)建應(yīng)用實(shí)例后,通過app.config.globalProperties掛載全局屬性,也可在組件中直接引入。
4.2 組件使用方式
- Vue 2:在選項(xiàng)式 API 中,使用
this訪問全局過濾器或在計(jì)算屬性、方法中使用 Day.js。 - Vue 3:在 Composition API 里,使用
getCurrentInstance獲取實(shí)例上下文來訪問全局屬性,或者直接在setup函數(shù)中局部引入使用。
4.3 靈活性
- Vue 2:基于選項(xiàng)式 API,結(jié)構(gòu)相對(duì)固定,在處理復(fù)雜邏輯時(shí)可能不夠靈活。
- Vue 3:Composition API 提供了更高的靈活性,代碼組織更模塊化,更易于復(fù)用和維護(hù)。
結(jié)語(yǔ)
無論是 Vue 2 還是 Vue 3,Day.js 都能很好地滿足日期和時(shí)間處理的需求。在 Vue 2 中,可以通過全局過濾器或局部引入的方式使用 Day.js;在 Vue 3 中,則可以借助全局屬性或局部引入來實(shí)現(xiàn)。開發(fā)者可根據(jù)項(xiàng)目的具體情況和個(gè)人喜好,選擇合適的使用方式。如果你在使用 Day.js 時(shí)遇到任何問題或有不同的使用經(jīng)驗(yàn),歡迎在評(píng)論區(qū)留言分享。希望本文能幫助你在 Vue 項(xiàng)目中更好地使用 Day.js。
到此這篇關(guān)于Vue中使用Day.js時(shí)間轉(zhuǎn)化插件的文章就介紹到這了,更多相關(guān)Vue Day.js時(shí)間轉(zhuǎn)化插件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue web-print-pdf實(shí)現(xiàn)在線預(yù)覽打印PDF的技術(shù)深度解析
在現(xiàn)代Web應(yīng)用開發(fā)中,在線預(yù)覽打印PDF是一個(gè)重要的技術(shù)需求,本文將深入探討如何通過Vue技術(shù)棧結(jié)合web-print-pdf npm包,實(shí)現(xiàn)真正的在線預(yù)覽打印功能,需要的可以了解下2025-09-09
基于uniapp+vue3自定義增強(qiáng)版table表格組件「兼容H5+小程序+App端」
uv3-table:一款基于uniapp+vue3跨端自定義手機(jī)端增強(qiáng)版表格組件,支持固定表頭/列、邊框、斑馬紋、單選/多選,自定義表頭/表體插槽、左右固定列陰影高亮顯示,支持編譯兼容H5+小程序端+App端,H5+小程序+App端,多端運(yùn)行一致2024-05-05
vue開發(fā)中的base和publicPath的區(qū)別
本文主要介紹了vue開發(fā)中的base和publicPath的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-07-07
vue響應(yīng)式原理與雙向數(shù)據(jù)的深入解析
Vue 最獨(dú)特的特性之一,是其非侵入性的響應(yīng)式系統(tǒng)。下面這篇文章主要給大家介紹了關(guān)于vue響應(yīng)式原理與雙向數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2021-06-06
Vue彈窗的兩種實(shí)現(xiàn)方式實(shí)例詳解
這篇文章主要介紹了Vue彈窗的兩種實(shí)現(xiàn)方式,一種使用.sync修飾符另一種使用v-model,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08

