近年来前端框架层出不穷,让前端学习者们眼花缭乱,笔者却认为,不论框架怎么变化,js才是核心与基础。最近笔者用jQuery封装了一个日程表插件,在这里和大家分享一下个人心得。
前期准备
- 1.日程表要实现哪些功能
- 2.日程表的功能该如何实现
- 3.日程表准备如何排版
- 4.如何封装接口
方案确定
1.日程表要实现哪些功能
答: 基本的日历功能 + 日程数据显示功能,日历功能是指显示当月日历,并可以左右切换月份;日程数据显示功能是指根据一定的数据格式和算法,解析到页面上,实现对应的日程显示到对应的日期当中。2.日程表的功能该如何实现
如何计算某一天对应某个星期数
1、3、5、7、8、10、12月份是31天;4、6、9、11月份是30天,闰年的2月份是29天,平年的2月份是28天;
闰年:年份能被4整除且不能被100整除或者可以被400整除;getFullYear()
-> Returns the year;getMonth()
-> Returns the month (from 0-11);getDay()
-> Returns the day of the week (from 0-6);
由此可见,只需要确定某年某月的第一天的星期数+指定月份天数便可以算出指定月份的每一天的星期值。如何实现月份切换功能
setFullYear()
-> Sets the year of a date object;setMonth()
-> Sets the month of a date object;
由此可见,我们只需要知道当前的年份和月份,便可算出需要切换的年月,然后根据不同月份,算出不同天数,然后重新渲染日期即可。如何渲染日程表
在日历的日期中绑定一个ID,与日程数据中日期ID一致。
晒选出当月数据,并和绑定的ID匹配并渲染
- 3.日程表准备如何排版
- 4.如何封装并定义数据接口
笔者之前未封装过接口,于是查阅了部分资料,决定采用我司架构师和Bootstrap的封装风格,先自定义常量,数据,选择器,HTML模板,然后采用ES6 Class 的写法。做到接口灵活,提高接口的灵活性以及和维护性;
在传入日程数据时,用户可以自定义日程的标题,日期,链接等。
用户可以自定义表格的高度
封装代码(部分)
1 | const Calender = (($) => { |
完整项目地址
个人心得
这个小插件写完以后,笔者才发现自己的js板块十分薄弱,日后定当勤加练习,弥补自身不足。最后奉上一句话:
写代码应心有猛虎,细嗅蔷薇