当前位置: 首页 > news >正文

FullCalendar日历组件集成实战(1)

背景

有一些应用系统或应用功能,如日程管理、任务管理需要使用到日历组件。虽然Element Plus也提供了日历组件,但功能比较简单,用来做数据展现勉强可用。但如果需要进行复杂的数据展示,以及互动操作如通过点击添加事件,则需要做大量的二次开发。
FullCalendar是一款备受欢迎的开源日历组件,以其强大的功能而著称。其基础功能不仅免费且开源,为开发者提供了极大的便利,仅有少量高级功能需要收费。然而,尽管该组件功能卓越,其文档却相对简洁,导致在集成过程中需要开发者自行摸索与探索,这无疑增加了不少学习和验证的时间成本。
为此,本专栏通过日程管理系统的真实案例,手把手带你了解该组件的属性和功能,通过需求导向的方式,详细阐述FullCalendar组件的集成思路和实用解决方案。
在介绍过程中,我们将重点关注集成要点和注意事项,力求帮助开发者在集成过程中少走弯路,提供有效的避坑指南,从而提升开发效率,更好地利用这款优秀的日历组件。

官网:https://fullcalendar.io/
image.png
环境Vue3+Element Plus+FullCalendar 6.1.11。

整体预览

月视图

支持中文,并且把周一放在第一天。
image.png

周视图

image.png

日视图

image.png

日程视图

image.png

版本差异

官方提供了三个版本,其中标准版是MIT协议。
image.png
邮件技术支持我们不需要,打印功能的友好展现同样不需要。有差异的功能主要就是两个,一个是时间线视图,可自定义的水平时间轴和行形式的资源,即显示一个任务的当天或跨天情况。
image.png
这个功能其实还不错,但也不属于强需求,既然不免费,可以暂时不考虑。

另外一个是垂直资源视图,能够将资源显示为列,例如会议室预定系统,显示各会议室各时间段的预定情况。
image.png
以个人为对象的日程管理,不需要这方面的功能。

安装

在vscode终端中执行以下命令安装日历组件相关的包。

pnpm install  @fullcalendar/core  @fullcalendar/vue3 

image.png

使用

初始配置

按照官方示例https://fullcalendar.io/docs/vue,写了一个初始化页面,源码如下:

<template><FullCalendar :options="calendarOptions" />
</template><script>
import FullCalendar from '@fullcalendar/vue3'
import dayGridPlugin from '@fullcalendar/daygrid'
import interactionPlugin from '@fullcalendar/interaction'export default {name: 'ListByCalendar',components: { FullCalendar },data() {return {calendarOptions: {plugins: [dayGridPlugin, interactionPlugin],initialView: 'dayGridMonth'}}}
}
</script><style scoped></style>

运行报错,提示dayGridPlugin未找到。
查阅官方文档有句话是Then install any additional FullCalendar plugins like @fullcalendar/daygrid,即所有的插件也都需要单独安装。

在vscode终端中执行以下命令安装两个插件相关的包。

pnpm install  @fullcalendar/daygrid @fullcalendar/interaction 

然后,组件可以正常加载了,如下图所示
image.png
界面不怎么美观,默认显示语种是英文,右上角切换上一个月和下一个月按钮就是两个黑块。

注意:
Vue 中“属性”(通过 v-bind 或 :)与“事件”(通过 v-on 或 @)是不同的概念。 对于 FullCalendar 二次封装出来的Vue组件,属性和事件之间没有区别, 都是作为键值对传递到主选项对象options中。
接下来就是通过配置选项进行调整。

设置中文语种

第一件要做的事情,就是把界面调整为中文。
关于vue版本的说明,只有一页简要介绍https://fullcalendar.io/docs/vue,并没有各属性的详细说明,而其他部分说明是针对日历组件主体的,需要自己去摸索对应。
例如,语种的变更,官方文档是针对ES6的,跟vue 组件使用方式并不一样。

import { Calendar } from '@fullcalendar/core';
import esLocale from '@fullcalendar/core/locales/es';
...
let calendar = new Calendar(calendarEl, {locale: esLocale
});

参照上面,推测option中传入locale: 'zh-cn’的键值对就行了,但是是否需要类似引入
import esLocale from ‘@fullcalendar/core/locales/es’;并不确定。

  calendarOptions: {// 插件列表plugins: [dayGridPlugin, interactionPlugin],// 默认视图initialView: 'dayGridMonth',// 语言locale: 'zh-cn'
}

动手试了下,不需要再引入语言包了,封装的vue组件中应该已经内置了。
但是汉化不完整,标题和周如期变成了中文,右上角的按钮依旧是英文。
image.png
补充说明:通过后面的深入探索,将语种配置为中文后,右上角按钮依旧显示是英文,其原因是日历组件并没有把所有的显示元素都放到了语言包里,而是提供了自定义配置功能,后续有详细说明。

http://www.lryc.cn/news/348175.html

相关文章:

  • wps
  • 【软设】常见易错题汇总
  • 安全数据交换系统哪个好?该如何选型?
  • 用matplotlib制作代码和色块
  • centos无法tab补全至文件
  • 大模型训练框架DeepSpeed使用入门(1): 训练设置
  • 自定义类型——结构体、枚举和联合
  • Windows11系统安装Mysql8之后,启动服务net start mysql报错“服务没有响应控制功能”的解决办法
  • WIFI模块的AT指令联网数据交互--第十天
  • 设计模式Java实现-迭代器模式
  • 单页源码加密屋zip文件加密API源码
  • 47.全排列
  • 呼叫中心系统选pscc好还是okcc好
  • 【SRC实战】前端脱敏信息泄露
  • 区块链 | NFT 水印:Review on Watermarking Techniques(三)
  • 初识C语言——第十九天
  • 软件需求工程习题
  • Win10弹出这个:https://logincdn.msauth.ne
  • Vue2 动态路由
  • LeetCode746:使用最小花费爬楼梯
  • DockerFile介绍与使用
  • Java基础知识(六) 字符串
  • 为什么跨境电商大佬都在自养号测评?看完你就懂了!
  • AtCoder Beginner Contest 353
  • 深度解读《深度探索C++对象模型》之虚继承的实现分析和效率评测(一)
  • 计算机Java项目|Springboot房产销售系统
  • 学习3D几何和特征一致的高斯溅射目标去除
  • PHP 使用常量实现枚举类
  • Linux操作系统基础题库
  • Java抽象类:为何它是你代码架构的基石?