2026/3/2 16:48:14
网站建设
项目流程
哪里有好网站设计,商城网站建设net2006,大兴安岭建设局网站,网站制作方案介绍及要求日历插件fullcalendar【前端】
前言版权开源推荐日历插件fullcalendar 一、下载二、初次使用 日历界面示例-添加事件#xff0c;删除事件 三、汉化四、动态数据五、前后端交互 1.环境搭建-前端搭建2.环境搭建-后端搭建3.代码编写-前端代码 fullcalendar.htmlfullcalendar.js …日历插件fullcalendar【前端】前言版权开源推荐日历插件fullcalendar一、下载二、初次使用日历界面示例-添加事件删除事件三、汉化四、动态数据五、前后端交互1.环境搭建-前端搭建2.环境搭建-后端搭建3.代码编写-前端代码fullcalendar.htmlfullcalendar.js4.代码编写-后端代码entity.CalendarEventcontroller.FullCalendarControllerservice.FullCalendarService最后前言2024-3-31 16:09:01以下内容源自《【前端】》仅供学习交流使用版权禁止其他平台发布时删除以下此话本文首次发布于CSDN平台作者是CSDN日星月云博客主页是https://jsss-1.blog.csdn.net禁止其他平台发布时删除以上此话开源日星月云 / 日历插件fullcalendarjsss-1/calendar-plugin-fullcalendar推荐fullcalendar官网FullCalendar插件的基本使用FullCalendar 日历插件中文说明文档日历插件fullcalendar一、下载https://fullcalendar.io/docs/initialize-globals解压之后二、初次使用日历界面下面这个代码是官网的代码没有其他多的功能如果要自己设计需要参考中文说明文档。FullCalendar 日历插件中文说明文档!DOCTYPE html html langen head meta charsetutf-8 / script srchttps://cdn.jsdelivr.net/npm/fullcalendar6.1.11/index.global.min.js/script script document.addEventListener(DOMContentLoaded, function() { var calendarEl document.getElementById(calendar); var calendar new FullCalendar.Calendar(calendarEl, { initialView: dayGridMonth }); calendar.render(); }); /script /head body div idcalendar/div /body /html页面就是这样的示例-添加事件删除事件下载的解压包下有一个selecttable.html文件放到自己的新建的项目中并改变这个js的地址界面如下点击某个日期就会进行事件的添加操作点击某个事件就会对其进行删除操作三、汉化对于页面加入这个就可以了可以按照自己的要求修改添加和删除的提示词locale: zh, // 设置为中文 buttonText: { today: 今天, month: 月, week: 周, day: 日 },具体的文件!DOCTYPE html html head meta charsetutf-8/ script src./js/index.global.js/script script let events [ { title: All Day Event, start: 2023-01-01 }, { title: Long Event, start: 2023-01-07, end: 2023-01-10 }, { title: Click for Google, url: http://google.com/, start: 2023-01-28 } ]; document.addEventListener(DOMContentLoaded, function () { var calendarEl document.getElementById(calendar); var calendar new FullCalendar.Calendar(calendarEl, { locale: zh, // 设置为中文 buttonText: { today: 今天, month: 月, week: 周, day: 日 }, headerToolbar: { left: prev,next today, center: title, right: dayGridMonth,timeGridWeek,timeGridDay }, initialDate: 2023-01-12, navLinks: true, // can click day/week names to navigate views selectable: true, selectMirror: true, select: function (arg) { var title prompt(事件标题:); if (title) { calendar.addEvent({ title: title, start: arg.start, end: arg.end, allDay: arg.allDay }) } calendar.unselect() }, eventClick: function (arg) { if (confirm(你确定删除这个事件吗)) { arg.event.remove() } }, editable: true, dayMaxEvents: true, // allow more link when too many events events: events }); calendar.render(); }); /script script // 函数用于添加新事件对象到事件数组中 function addEvent(title, start, end, url) { let newEvent { title: title, start: start, end: end, url: url }; events.push(newEvent); } // 调用函数添加新事件对象 addEvent(New Event, 2023-02-15, 2023-02-17, http://example.com/); // 打印更新后的事件数组 console.log(events); /script style body { margin: 40px 10px; padding: 0; font-family: Arial, Helvetica Neue, Helvetica, sans-serif; font-size: 14px; } #calendar { max-width: 1100px; margin: 0 auto; } /style /head body div idcalendar/div /body /html四、动态数据fullcalendar.html!DOCTYPE html html head meta charsetutf-8/ script src./js/index.global.js/script script let events []; document.addEventListener(DOMContentLoaded, function () { var calendarEl document.getElementById(calendar); var calendar new FullCalendar.Calendar(calendarEl, { locale: zh, // 设置为中文 buttonText: { today: 今天, month: 月, week: 周, day: 日 }, headerToolbar: { left: prev,next today, center: title, right: dayGridMonth,timeGridWeek,timeGridDay }, initialDate: new Date().toISOString().slice(0, 10), navLinks: true, // can click day/week names to navigate views selectable: true, selectMirror: true, select: function (arg) { var title prompt(事件标题:); if (title) { let newEvent { title: title, allDay: arg.allDay, start: arg.start, end: arg.end }; calendar.addEvent(newEvent); addEvent(newEvent); } calendar.unselect() }, eventClick: function (arg) { if (confirm(你确定删除这个事件吗)) { arg.event.remove(); removeEvent(arg.event); } }, editable: true, dayMaxEvents: true, // allow more link when too many events events: events }); calendar.render(); }); /script style body { margin: 40px 10px; padding: 0; font-family: Arial, Helvetica Neue, Helvetica, sans-serif; font-size: 14px; } #calendar { max-width: 1100px; margin: 0 auto; } /style /head body div idcalendar/div /body script src./js/fullcalendar.js/script /htmlfullcalendar.js// 函数用于添加新事件对象到事件数组中 function addEvent(newEvent) { events.push(newEvent); // console.log(events); } // 函数用于删除新事件对象到事件数组中 function removeEvent(e) { events events.filter(event event e); // console.log(events); }五、前后端交互使用的是前后端分离1.环境搭建-前端搭建加入bootstrap,jQuery这些js文件新建一个fullcalendar文件夹如果要移植到其他项目直接拷贝这个文件夹。编写一个common.js作为之后ajax发送请求的地址/** * 服务端PATH */ var SERVER_PATH http://127.0.0.1:8080;新建一个fullcalendar.js之后在这里编写和后端交互的代码// 函数用于添加新事件对象到事件数组中 function addEvent(newEvent) { events.push(newEvent); // console.log(events); } // 函数用于删除新事件对象到事件数组中 function removeEvent(e) { events events.filter(event event e); // console.log(events); }在fullcalendar.html中引入script src../bootstrap/js/jquery-3.5.1.min.js/script script src../bootstrap/js/bootstrap.min.js/script script src../js/common.js/script script src./js/fullcalendar.js/script2.环境搭建-后端搭建SpringBoot项目在一个fullcalendar包中完成代码如果要移植到其他项目直接拷贝这个包。pom.xml?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd modelVersion4.0.0/modelVersion parent groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-parent/artifactId version2.4.2/version relativePath/ !-- lookup parent from repository -- /parent groupIdcom.example/groupId artifactIdtest/artifactId version0.0.1-SNAPSHOT/version nametest/name descriptiontest/description properties java.version8/java.version /properties dependencies dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-devtools/artifactId scoperuntime/scope optionaltrue/optional /dependency !-- mysql 依赖-- dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId scoperuntime/scope /dependency dependency groupIdorg.projectlombok/groupId artifactIdlombok/artifactId optionaltrue/optional /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-test/artifactId scopetest/scope /dependency /dependencies build plugins plugin groupIdorg.springframework.boot/groupId artifactIdspring-boot-maven-plugin/artifactId configuration excludes exclude groupIdorg.projectlombok/groupId artifactIdlombok/artifactId /exclude /excludes /configuration /plugin /plugins /build /projectapplication.properties# server server.port8080 # mysql spring.datasource.urljdbc:mysql://localhost:3306/fullcalendar?characterEncodingutf-8useSSLfalseserverTimezoneHongkong spring.datasource.usernameroot spring.datasource.passwordroot spring.datasource.driver-class-namecom.mysql.cj.jdbc.Driver # path jsss.web.pathhttp://127.0.0.1:5500fullcalendar.controller.FullCalendarControllerpackage com.example.fullcalendar.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; Controller RequestMapping(/fullcalendar) CrossOrigin(origins ${jsss.web.path}, allowedHeaders *, allowCredentials true) public class FullCalendarController { GetMapping(/hello) ResponseBody public String hello(){ return hello; } }测试hello3.代码编写-前端代码fullcalendar.html更改了组件操作在请求完成后html!DOCTYPE html html head meta charsetutf-8/ script src./js/index.global.js/script script //放到外部定义全局变量 var calendar; let events []; document.addEventListener(DOMContentLoaded, function () { var calendarEl document.getElementById(calendar); calendar new FullCalendar.Calendar(calendarEl, { locale: zh, // 设置为中文 buttonText: { today: 今天, month: 月, week: 周, day: 日 }, headerToolbar: { left: prev,next today, center: title, right: dayGridMonth,timeGridWeek,timeGridDay }, initialDate: new Date().toISOString().slice(0, 10), navLinks: true, // can click day/week names to navigate views selectable: true, selectMirror: true, select: function (arg) { var title prompt(事件标题:); if (title) { let newEvent { title: title, allDay: arg.allDay, start: arg.start, end: arg.end }; // 请求中调用 // calendar.addEvent(newEvent); addEvent(calendar,newEvent); } calendar.unselect() }, eventClick: function (arg) { if (confirm(你确定删除这个事件吗)) { // 请求中调用 // arg.event.remove(); removeEvent(arg,arg.event); } }, editable: true, dayMaxEvents: true, // allow more link when too many events events: events }); calendar.render(); }); /script style body { margin: 40px 10px; padding: 0; font-family: Arial, Helvetica Neue, Helvetica, sans-serif; font-size: 14px; } #calendar { max-width: 1100px; margin: 0 auto; } /style /head body div idcalendar/div /body script src../bootstrap/js/jquery-3.5.1.min.js/script script src../bootstrap/js/bootstrap.min.js/script script src../js/common.js/script script src./js/fullcalendar.js/script /htmlfullcalendar.jsjs$(document).ready(function () { $.ajax({ type: GET, url: SERVER_PATH /fullcalendar/list, xhrFields: {withCredentials: true}, success: function (result) { if (result.status) { alertBox(result.data.message); return false; } result.data.forEach(function(e) { calendar.addEvent(e);//外部的全局变量 events.push(e); }); // console.log(events); } }); }); // 函数用于添加新事件对象到事件数组中 function addEvent(calendar,newEvent) { $.ajax({ type: POST, url: SERVER_PATH /fullcalendar/add, contentType: application/json, data: JSON.stringify(newEvent), xhrFields: {withCredentials: true}, success: function (result) { if (result.status) { alertBox(result.data.message); return false; } calendar.addEvent(newEvent); events.push(newEvent); // console.log(events); } }); } // 函数用于删除新事件对象到事件数组中 function removeEvent(arg,e) { let remove { title: e.title, allDay: e.allDay, start: e.start, end: e.end }; $.ajax({ type: POST, url: SERVER_PATH /fullcalendar/remove, contentType: application/json, data: JSON.stringify(remove), xhrFields: {withCredentials: true}, success: function (result) { if (result.status) { alertBox(result.data.message); return false; } arg.event.remove(); events events.filter(event event e); // console.log(events); } }); }4.代码编写-后端代码使用Redis存储数据!-- fastjson 依赖-- dependency groupIdcom.alibaba/groupId artifactIdfastjson/artifactId version1.2.73/version /dependency !-- redis 依赖-- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-data-redis/artifactId /dependencyentity.CalendarEventpackage com.example.fullcalendar.entity; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; import java.util.Date; Data ToString EqualsAndHashCode public class CalendarEvent { //标题 private String title; //是否全天 private Boolean allDay; //开始时间 private Date start; //结束时间 private Date end; }controller.FullCalendarController刚开始是存储到内存中测试ListCalendarEvent listnew ArrayList();持久化到数据库或者Redis中package com.example.fullcalendar.controller; import com.example.common.ResponseModel; import com.example.fullcalendar.entity.CalendarEvent; import com.example.fullcalendar.service.FullCalendarService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.List; Controller RequestMapping(/fullcalendar) CrossOrigin(origins ${jsss.web.path}, allowedHeaders *, allowCredentials true) public class FullCalendarController { Autowired FullCalendarService fullCalendarService; // ListCalendarEvent listnew ArrayList(); GetMapping(/list) ResponseBody public ResponseModel list(){ String keycalendarEvents; ListCalendarEvent listfullCalendarService.list(key); return new ResponseModel(list); } PostMapping(/add) ResponseBody public ResponseModel add(RequestBody CalendarEvent calendarEvent){ // list.add(calendarEvent); String keycalendarEvents; fullCalendarService.add(key,calendarEvent); return new ResponseModel(添加成功); } PostMapping(/remove) ResponseBody public ResponseModel remove(RequestBody CalendarEvent calendarEvent){ // list.remove(calendarEvent); String keycalendarEvents; fullCalendarService.remove(key,calendarEvent); return new ResponseModel(删除成功); } }service.FullCalendarServicepackage com.example.fullcalendar.service; import com.example.fullcalendar.entity.CalendarEvent; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import java.util.List; Service public class FullCalendarService { Autowired RedisTemplate redisTemplate; public ListCalendarEvent list(String key) { ListCalendarEvent calendarEvents redisTemplate.opsForList().range(key, 0, -1); return calendarEvents; } public void add(String key,CalendarEvent calendarEvent) { redisTemplate.opsForList().rightPush(key, calendarEvent); } public void remove(String key,CalendarEvent calendarEvent) { redisTemplate.opsForList().remove(key, 0, calendarEvent); } }2025开年AI技术打得火热正在改变前端人的职业命运阿里云核心业务全部接入Agent体系字节跳动30%前端岗位要求大模型开发能力腾讯、京东、百度开放招聘技术岗80%与AI相关……大模型正在重构技术开发范式传统CRUD开发模式正在被AI原生应用取代最残忍的是业务面临转型领导要求用RAG优化知识库检索你不会带AI团队微调大模型要准备多少数据你不懂想转型大模型应用开发工程师等相关岗没项目实操经验……这不是技术焦虑而是职业生存危机曾经React、Vue等热门的开发框架已不再是就业的金钥匙。如果认为会调用API就是懂大模型、能进行二次开发那就大错特错了。制造、医疗、金融等各行业都在加速AI应用落地未来企业更看重能用AI大模型技术重构业务流的技术人。如今技术圈降薪裁员频频爆发传统岗位大批缩水相反AI相关技术岗疯狂扩招薪资逆势上涨150%大厂老板们甚至开出70-100W年薪挖掘AI大模型人才不出1年 “有AI项目开发经验”或将成为前端人投递简历的门槛。风口之下与其像“温水煮青蛙”一样坐等被行业淘汰不如先人一步掌握AI大模型原理应用技术项目实操经验“顺风”翻盘大模型目前在人工智能领域可以说正处于一种“炙手可热”的状态吸引了很多人的关注和兴趣也有很多新人小白想要学习入门大模型那么如何入门大模型呢下面给大家分享一份2025最新版的大模型学习路线帮助新人小白更系统、更快速的学习大模型2025最新版CSDN大礼包《AGI大模型学习资源包》免费分享**一、2025最新大模型学习路线一个明确的学习路线可以帮助新人了解从哪里开始按照什么顺序学习以及需要掌握哪些知识点。大模型领域涉及的知识点非常广泛没有明确的学习路线可能会导致新人感到迷茫不知道应该专注于哪些内容。我们把学习路线分成L1到L4四个阶段一步步带你从入门到进阶从理论到实战。L1级别:AI大模型时代的华丽登场L1阶段我们会去了解大模型的基础知识以及大模型在各个行业的应用和分析学习理解大模型的核心原理关键技术以及大模型应用场景通过理论原理结合多个项目实战从提示工程基础到提示工程进阶掌握Prompt提示工程。L2级别AI大模型RAG应用开发工程L2阶段是我们的AI大模型RAG应用开发工程我们会去学习RAG检索增强生成包括Naive RAG、Advanced-RAG以及RAG性能评估还有GraphRAG在内的多个RAG热门项目的分析。L3级别大模型Agent应用架构进阶实践L3阶段大模型Agent应用架构进阶实现我们会去学习LangChain、 LIamaIndex框架也会学习到AutoGPT、 MetaGPT等多Agent系统打造我们自己的Agent智能体同时还可以学习到包括Coze、Dify在内的可视化工具的使用。L4级别大模型微调与私有化部署L4阶段大模型的微调和私有化部署我们会更加深入的探讨Transformer架构学习大模型的微调技术利用DeepSpeed、Lamam Factory等工具快速进行模型微调并通过Ollama、vLLM等推理部署框架实现模型的快速部署。整个大模型学习路线L1主要是对大模型的理论基础、生态以及提示词他的一个学习掌握而L3 L4更多的是通过项目实战来掌握大模型的应用开发针对以上大模型的学习路线我们也整理了对应的学习视频教程和配套的学习资料。二、大模型经典PDF书籍书籍和学习文档资料是学习大模型过程中必不可少的我们精选了一系列深入探讨大模型技术的书籍和学习文档它们由领域内的顶尖专家撰写内容全面、深入、详尽为你学习大模型提供坚实的理论基础。书籍含电子版PDF三、大模型视频教程对于很多自学或者没有基础的同学来说书籍这些纯文字类的学习教材会觉得比较晦涩难以理解因此我们提供了丰富的大模型视频教程以动态、形象的方式展示技术概念帮助你更快、更轻松地掌握核心知识。四、大模型项目实战学以致用当你的理论知识积累到一定程度就需要通过项目实战在实际操作中检验和巩固你所学到的知识同时为你找工作和职业发展打下坚实的基础。五、大模型面试题面试不仅是技术的较量更需要充分的准备。在你已经掌握了大模型技术之后就需要开始准备面试我们将提供精心整理的大模型面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。因篇幅有限仅展示部分资料需要点击下方链接即可前往获取2025最新版CSDN大礼包《AGI大模型学习资源包》免费分享