使用 Vue 快速集成 FullCalendar 日历组件教程

FullCalendar 是一款功能强大的 JavaScript 日历组件,支持 React/Vue 等主流框架,提供丰富的日历视图和交互功能。本文将手把手教你在 Vue 项目中快速集成,并演示核心功能实现。

📦 主要特性亮点

✅ 月/周/日多视图切换

✅ 拖拽调整事件

✅ 自定义主题样式

✅ 支持iCalendar格式

✅ 丰富的插件生态

🚀 Vue 3 集成步骤(需先安装依赖)

复制代码
npm install @fullcalendar/vue @fullcalendar/daygrid @fullcalendar/interaction

📝 核心示例代码

html 复制代码
<template>
  <div class="calendar-container">
    <FullCalendar
      :options="calendarOptions"
      ref="fullCalendar"
    />
  </div>
</template>

<script>
import FullCalendar from '@fullcalendar/vue'
import dayGridPlugin from '@fullcalendar/daygrid'
import interactionPlugin from '@fullcalendar/interaction'

export default {
  components: { FullCalendar },
  data() {
    return {
      calendarOptions: {
        plugins: [dayGridPlugin, interactionPlugin],
        initialView: 'dayGridMonth',
        headerToolbar: {
          left: 'prev,next today',
          center: 'title',
          right: 'dayGridMonth,dayGridWeek,dayGridDay'
        },
        events: [
          { 
            title: '团队周会', 
            start: new Date(),
            color: '#3b82f6'
          },
          {
            title: '项目里程碑',
            start: '2024-03-15',
            end: '2024-03-18',
            color: '#10b981'
          }
        ],
        dateClick: this.handleDateClick,
        eventClick: this.handleEventClick,
        editable: true
      }
    }
  },
  methods: {
    handleDateClick(arg) {
      const title = prompt('输入事件标题')
      if (title) {
        this.$refs.fullCalendar.getApi().addEvent({
          title,
          start: arg.dateStr,
          allDay: arg.allDay
        })
      }
    },
    handleEventClick(info) {
      if(confirm(`删除 "${info.event.title}" 事件?`)) {
        info.event.remove()
      }
    }
  }
}
</script>

<style>
/* 推荐引入官方基础样式 */
@import '@fullcalendar/core/main.css';
@import '@fullcalendar/daygrid/main.css';

.calendar-container {
  max-width: 1000px;
  margin: 2rem auto;
  padding: 20px;
}
</style>

🔍 代码解析

  1. 插件配置:dayGridPlugin 提供月/周视图,interactionPlugin 启用日期点击

  2. 事件管理:通过 addEvent/removeEvent 实现动态增删

  3. 交互处理:dateClick 处理日期点击,eventClick 处理事件点击

  4. 视图控制:headerToolbar 自定义工具栏布局

💡 扩展建议

• 集成时间轴视图(需安装 timeGrid 插件)

• 添加事件拖拽功能(使用 @fullcalendar/interaction)

• 对接后端API实现数据持久化

• 自定义事件渲染模板

📌 注意事项

  1. 确保插件与 Vue 版本兼容(示例基于Vue3)

  2. 生产环境建议按需引入CSS

  3. 复杂交互建议使用Calendar API实例

完整配置文档参考官方文档:Vue Component - Docs | FullCalendar

通过这个示例,您可以快速搭建企业级日历系统,轻松实现会议管理、排班系统等场景需求。FullCalendar 的灵活配置和丰富扩展性,使其成为前端日历解决方案的优选方案。

如果对你有帮助,请帮忙点个赞

相关推荐
古一|39 分钟前
Vue3中ref与reactive实战指南:使用场景与代码示例
开发语言·javascript·ecmascript
peachSoda741 分钟前
封装一个不同跳转方式的通用方法(跳转外部链接,跳转其他小程序,跳转半屏小程序)
前端·javascript·微信小程序·小程序
@PHARAOH1 小时前
HOW - 浏览器兼容(含 Safari)
前端·safari
undefined在掘金390411 小时前
flutter 仿商场_首页
前端
少卿1 小时前
react-native图标替换
前端·react native
熊猫钓鱼>_>1 小时前
TypeScript前端架构与开发技巧深度解析:从工程化到性能优化的完整实践
前端·javascript·typescript
敲敲敲敲暴你脑袋1 小时前
Canvas绘制自定义流动路径
vue.js·typescript·canvas
JYeontu2 小时前
肉眼难以分辨 UI 是否对齐,写个插件来辅助
前端·javascript
fox_2 小时前
别再踩坑!JavaScript的this关键字,一次性讲透其“变脸”真相
前端·javascript
盛夏绽放2 小时前
uni-app Vue 项目的规范目录结构全解
前端·vue.js·uni-app