Vue中使用Day.js时间转化插件详细教程(附Vue2与Vue3写法)

 更新时间:2025年05月27日 09:53:52   作者:码上前端  
Day.js是一个极简的JavaScript库,可以为现代浏览器解析、验证、操作和显示日期和时间,这篇文章主要介绍了Vue中使用Day.js时间转化插件的相关资料,需要的朋友可以参考下

一、引言

在前端开发中,日期和时间的处理是常见需求。Day.js 是一个轻量级的 JavaScript 日期处理库,与 Moment.js 功能类似,但体积更小、速度更快。在 Vue 项目里,使用 Day.js 能方便地进行日期格式化、计算、比较等操作。不过,由于 Vue 2 和 Vue 3 在语法和架构上存在差异,在这两个版本中使用 Day.js 的方式也有所不同。下面我们就分别介绍在 Vue 2 和 Vue 3 中如何使用 Day.js 插件。

二、在 Vue 2 中使用 Day.js

2.1 安装 Day.js

首先,需要在项目中安装 Day.js。可以使用 npm 或 yarn 进行安装:

npm install dayjs --save
# 或者
yarn add dayjs

2.2 全局引入和使用

在 Vue 2 里,通常会在入口文件(如 main.js)中全局引入 Day.js,这样在所有组件中都能使用。

// main.js
import Vue from 'vue';
import App from './App.vue';
import dayjs from 'dayjs';

// 定义一个全局过滤器用于日期格式化
Vue.filter('formatDate', (value, format = 'YYYY-MM-DD') => {
  return dayjs(value).format(format);
});

new Vue({
  render: h => h(App)
}).$mount('#app');

在上述代码中,我们定义了一个名为 formatDate 的全局过滤器,它接收一个日期值和一个可选的格式字符串作为参数,使用 Day.js 对日期进行格式化。

2.3 在组件中使用过滤器

在组件的模板中,可以直接使用这个全局过滤器。

<template>
  <div>
    <p>格式化后的日期: {{ currentDate | formatDate }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      currentDate: new Date()
    };
  }
};
</script>

2.4 局部使用 Day.js

除了全局引入,也可以在单个组件中局部引入 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 中,结合 createApp 创建应用实例,可以在 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

也可以在单个组件中直接局部引入 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>

四、对比总结

4.1 引入方式

  • Vue 2:通过 Vue.filter 定义全局过滤器,或者在组件中直接引入使用。
  • Vue 3:使用 createApp 创建应用实例后,通过 app.config.globalProperties 挂载全局属性,也可在组件中直接引入。

4.2 组件使用方式

  • Vue 2:在选项式 API 中,使用 this 访问全局过滤器或在计算属性、方法中使用 Day.js。
  • Vue 3:在 Composition API 里,使用 getCurrentInstance 获取实例上下文来访问全局属性,或者直接在 setup 函数中局部引入使用。

4.3 灵活性

  • Vue 2:基于选项式 API,结构相对固定,在处理复杂逻辑时可能不够灵活。
  • Vue 3:Composition API 提供了更高的灵活性,代码组织更模块化,更易于复用和维护。

结语

无论是 Vue 2 还是 Vue 3,Day.js 都能很好地满足日期和时间处理的需求。在 Vue 2 中,可以通过全局过滤器或局部引入的方式使用 Day.js;在 Vue 3 中,则可以借助全局属性或局部引入来实现。开发者可根据项目的具体情况和个人喜好,选择合适的使用方式。如果你在使用 Day.js 时遇到任何问题或有不同的使用经验,欢迎在评论区留言分享。希望本文能帮助你在 Vue 项目中更好地使用 Day.js。

到此这篇关于Vue中使用Day.js时间转化插件的文章就介绍到这了,更多相关Vue Day.js时间转化插件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue中实时监听div元素盒子的宽高方法

    vue中实时监听div元素盒子的宽高方法

    这篇文章主要给大家介绍了关于vue中如何实时监听div元素盒子的宽高的相关资料,在Vue中你可以使用Vue的计算属性和侦听器来动态监测元素的高度,文中给出了简单代码示例,需要的朋友可以参考下
    2023-09-09
  • 解决使用vue.js路由后失效的问题

    解决使用vue.js路由后失效的问题

    下面小编就为大家分享一篇解决使用vue.js路由后失效的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • vue实现锚点跳转scrollIntoView()使用案例

    vue实现锚点跳转scrollIntoView()使用案例

    这篇文章主要介绍了vue实现锚点跳转scrollIntoView()使用案例,文中结合实例代码介绍了vue锚点跳转的三种方式(页内跳转,跨页跳转,函数跳转),需要的朋友可以参考下
    2023-07-07
  • Vue 2源码解析Parse函数定义

    Vue 2源码解析Parse函数定义

    这篇文章主要为大家介绍了Vue 2源码解析Parse函数定义,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Vue Mixins混入介绍与使用

    Vue Mixins混入介绍与使用

    如果我们在每个组件中去重复定义这些属性和方法会使得项目出现代码冗余并提高了维护难度,针对这种情况官方提供了Mixins特性,这时使用Vue mixins混入有很大好处,下面就介绍下Vue mixins混入使用方法,需要的朋友参考下吧
    2023-02-02
  • 如何在Vue 3中扩展Vue Router链接详解

    如何在Vue 3中扩展Vue Router链接详解

    vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,适合用于构建单页面应用,这篇文章主要给大家介绍了关于如何在Vue 3中扩展Vue Router链接的相关资料,需要的朋友可以参考下
    2021-06-06
  • vue路由事件beforeRouteLeave及组件内定时器的清除方法

    vue路由事件beforeRouteLeave及组件内定时器的清除方法

    今天小编就为大家分享一篇vue路由事件beforeRouteLeave及组件内定时器的清除方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • Vue Router中的冗余导航错误及解决方案

    Vue Router中的冗余导航错误及解决方案

    在现代前端开发中,单页应用(SPA)已经成为主流,而 Vue.js 作为一款流行的前端框架,其官方路由库 Vue Router 则是构建 SPA 的核心工具之一,在使用 Vue Router 的过程中,开发者可能会遇到一些常见的错误,本文将深入探讨这一错误的原因、影响以及解决方案
    2025-01-01
  • vue如何实现无缝轮播图

    vue如何实现无缝轮播图

    这篇文章主要介绍了vue如何实现无缝轮播图,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • Vuex Store 数据在页面刷新后丢失的解决方法

    Vuex Store 数据在页面刷新后丢失的解决方法

    当我们使用 Vue.js 和 Vuex 进行状态管理时,一个常见的问题是页面刷新会导致 Vuex store 中的数据丢失,本文将详细介绍解决 Vuex Store 数据在页面刷新后丢失的方法,感兴趣的朋友一起看看吧
    2024-08-08

最新评论