Vue中使用Day.js時(shí)間轉(zhuǎn)化插件詳細(xì)教程(附Vue2與Vue3寫(xiě)法)
一、引言
在前端開(kāi)發(fā)中,日期和時(shí)間的處理是常見(jiàn)需求。Day.js 是一個(gè)輕量級(jí)的 JavaScript 日期處理庫(kù),與 Moment.js 功能類(lèi)似,但體積更小、速度更快。在 Vue 項(xiàng)目里,使用 Day.js 能方便地進(jìn)行日期格式化、計(jì)算、比較等操作。不過(guò),由于 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è)全局過(guò)濾器用于日期格式化 Vue.filter('formatDate', (value, format = 'YYYY-MM-DD') => { return dayjs(value).format(format); }); new Vue({ render: h => h(App) }).$mount('#app');
在上述代碼中,我們定義了一個(gè)名為 formatDate
的全局過(guò)濾器,它接收一個(gè)日期值和一個(gè)可選的格式字符串作為參數(shù),使用 Day.js 對(duì)日期進(jìn)行格式化。
2.3 在組件中使用過(guò)濾器
在組件的模板中,可以直接使用這個(gè)全局過(guò)濾器。
<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
上,這樣在所有組件中都可以通過(guò) this.$dayjs
來(lái)使用 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:通過(guò)
Vue.filter
定義全局過(guò)濾器,或者在組件中直接引入使用。 - Vue 3:使用
createApp
創(chuàng)建應(yīng)用實(shí)例后,通過(guò)app.config.globalProperties
掛載全局屬性,也可在組件中直接引入。
4.2 組件使用方式
- Vue 2:在選項(xiàng)式 API 中,使用
this
訪問(wèn)全局過(guò)濾器或在計(jì)算屬性、方法中使用 Day.js。 - Vue 3:在 Composition API 里,使用
getCurrentInstance
獲取實(shí)例上下文來(lái)訪問(wèn)全局屬性,或者直接在setup
函數(shù)中局部引入使用。
4.3 靈活性
- Vue 2:基于選項(xiàng)式 API,結(jié)構(gòu)相對(duì)固定,在處理復(fù)雜邏輯時(shí)可能不夠靈活。
- Vue 3:Composition API 提供了更高的靈活性,代碼組織更模塊化,更易于復(fù)用和維護(hù)。
結(jié)語(yǔ)
無(wú)論是 Vue 2 還是 Vue 3,Day.js 都能很好地滿(mǎn)足日期和時(shí)間處理的需求。在 Vue 2 中,可以通過(guò)全局過(guò)濾器或局部引入的方式使用 Day.js;在 Vue 3 中,則可以借助全局屬性或局部引入來(lái)實(shí)現(xiàn)。開(kāi)發(fā)者可根據(jù)項(xiàng)目的具體情況和個(gè)人喜好,選擇合適的使用方式。如果你在使用 Day.js 時(shí)遇到任何問(wèn)題或有不同的使用經(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中實(shí)時(shí)監(jiān)聽(tīng)div元素盒子的寬高方法
這篇文章主要給大家介紹了關(guān)于vue中如何實(shí)時(shí)監(jiān)聽(tīng)div元素盒子的寬高的相關(guān)資料,在Vue中你可以使用Vue的計(jì)算屬性和偵聽(tīng)器來(lái)動(dòng)態(tài)監(jiān)測(cè)元素的高度,文中給出了簡(jiǎn)單代碼示例,需要的朋友可以參考下2023-09-09vue實(shí)現(xiàn)錨點(diǎn)跳轉(zhuǎn)scrollIntoView()使用案例
這篇文章主要介紹了vue實(shí)現(xiàn)錨點(diǎn)跳轉(zhuǎn)scrollIntoView()使用案例,文中結(jié)合實(shí)例代碼介紹了vue錨點(diǎn)跳轉(zhuǎn)的三種方式(頁(yè)內(nèi)跳轉(zhuǎn),跨頁(yè)跳轉(zhuǎn),函數(shù)跳轉(zhuǎn)),需要的朋友可以參考下2023-07-07如何在Vue 3中擴(kuò)展Vue Router鏈接詳解
vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,適合用于構(gòu)建單頁(yè)面應(yīng)用,這篇文章主要給大家介紹了關(guān)于如何在Vue 3中擴(kuò)展Vue Router鏈接的相關(guān)資料,需要的朋友可以參考下2021-06-06vue路由事件beforeRouteLeave及組件內(nèi)定時(shí)器的清除方法
今天小編就為大家分享一篇vue路由事件beforeRouteLeave及組件內(nèi)定時(shí)器的清除方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-09-09Vue Router中的冗余導(dǎo)航錯(cuò)誤及解決方案
在現(xiàn)代前端開(kāi)發(fā)中,單頁(yè)應(yīng)用(SPA)已經(jīng)成為主流,而 Vue.js 作為一款流行的前端框架,其官方路由庫(kù) Vue Router 則是構(gòu)建 SPA 的核心工具之一,在使用 Vue Router 的過(guò)程中,開(kāi)發(fā)者可能會(huì)遇到一些常見(jiàn)的錯(cuò)誤,本文將深入探討這一錯(cuò)誤的原因、影響以及解決方案2025-01-01Vuex Store 數(shù)據(jù)在頁(yè)面刷新后丟失的解決方法
當(dāng)我們使用 Vue.js 和 Vuex 進(jìn)行狀態(tài)管理時(shí),一個(gè)常見(jiàn)的問(wèn)題是頁(yè)面刷新會(huì)導(dǎo)致 Vuex store 中的數(shù)據(jù)丟失,本文將詳細(xì)介紹解決 Vuex Store 數(shù)據(jù)在頁(yè)面刷新后丟失的方法,感興趣的朋友一起看看吧2024-08-08