=========================================
一、需求
=========================================

有日期、星期、农历节气和国际节假日，能切换年、月、日。
界面好看，在手机上可以操作，有API可以扩展功能

=========================================
二、万年历制作流程
=========================================
1、选择一款日历UI（经过筛选，百度日历的UI比较简洁漂亮）。
2、编写JavaScript核心代码，实现农历、公历等日期信息参数的查询。
3、将JavaScript代码和UI界面，整合到一起。期间涉及DOM生成模块（实现模板功能），Event模块，CSS模块（切换主题和UI），日历算法核心模块，仿jQuery模块（工具类）。
4、使用gulp前端构建工具打包发布工程。
5、编写开发文档。

=========================================
三、核心模块
=========================================
1、核心算法模块（calender.js）
2、仿jQuery模块，提供工具函数（common.js）
3、Dom模块，生成HTML页面结构（dom.js）
4、Event模块，日历中各种事件（event.js）
5、入口模块（main.js）

=========================================
四、构建环境
=========================================
1、日历UI,UI和CSS样式,拔取的百度日历样式(时间和审美原因未能来及自己编写)
2、核心JS代码,按照模块编写
3、编辑工具HBuilder,项目构建工具gulp

=========================================
五、接口说明
=========================================

万年历接口
Calendar 
	|--init(Date)                               -- 入口函数,通过传入日期对象,构造日历         					    
	|
	|--Holiday                                  -- 法定假日,需要用过 loadCalendarLib加载,2014~2016年 					
	|
	|--HuangLi                                  -- 黄历信息,需要用过loadCalendarLib加载 ,2008~2020年  					
	|
	|--debugCalendar(y,m)                       -- 用于在控制台输出日期信息,用于调试代码使用               					
	|
	|--getCalendar(y,m)                         -- 获取y年m月,对于的日期信息,包括农历,天干地支,节气,节假日等信息             					
	|
	|--getLunarCalendar(y,m,d)                  -- 获取到公历y年m月,对应的农历日期                    					
	|
	|--getSolarCalendar(y,m,d)                  -- 获取到农历y年m月,对应的公历日期,m为润月的时候,会返回多个公历日期                   					
	|
	|--loadCalendarLib(y,callback)              -- 用于加载y年对应的黄历和法定假日信息,callback为库文件加载成功时候的回掉                        					
	|
	|----Event对象                                       			    -- 暂时没有暴露任何事件方法
	|
	|----UI对象
	     |
	     |--calendarHTML(y,m)                   -- 用于生成y年m月对应的HTML结构视图,日历主体部分                   					
	     |
	     |--detailHTML(y,m,d)                   -- 用于生成y年m月d日对应的HTML结构视图,日历右侧日期详情部分                        					
	     |
	     |--dropDownHTML(y,m,d)                 -- 用于生成y年m月d日对应的HTML结构视图 ,下拉选择框年,月,节假日                        					
	     |
	     |--getDropDown()                       -- 获取到下拉框的对应的年,月,节假日,以及当前日历选中的天                  					
	     |
	     |--setDropDown(y,m,d)                  -- 设置下拉框的对应的年,月,以及当前日历选中的天                        					
	     |
	     |--getFestival()                       -- 获取当前选中的节假日信息                    					
	     |
	     |--setFestival(festival)               -- 设置当前选中的节假日信息  eg: setFestival({date:'i0101',name'元旦'})    

DOM接口
DOM 
	|--each(obj)                                -- 静态方法,遍历元素或数组         					    
	|
	|--template(html,json)                      -- 静态方法,根据html和json生成对应的HTML结构,使用JSP标签结构<%%>,<%=%> 					
	|
	|--getScript(urls,callback)                 -- 静态方法,动态加载JS					
	|
	|----prototype对象                                                                      -- 实现jQuery的部分功能
	     |
	     |--html()                   			-- 用于获取和设置Dom元素的内容               					
	     |
	     |--addClass()                          -- 给Dom元素添加类名                       					
	     |
	     |--removeClass()                       -- 给Dom元素移除类名                        					
	     |
	     |--hasClass()                          -- 判断Dom元素是否拥有类名                  					
	     |
	     |--show()                              -- 显示Dom元素                        					
	     |
	     |--hide()                              -- 隐藏Dom元素                    					
	     |
	     |--toggle()                            -- 交替显示和隐藏 Dom元素  
	     |
	     |--attr()                              -- 获取和设置元素的属性值   
	     |
	     |--on(type,handler)                    -- 给Dom元素绑定事件  
	     |
	     |--off(type,handler)                   -- 取消Dom元素事件   	     
	     
	
=========================================
六、待优化
=========================================
1、模块之间通过require加载。
2、 CSS通过Less等css编译工具编译完成。
3、只做了简单媒体查询样式代码的编写，移动端适配的功能有待完善和开发。
4、对HTML结构要求比较苛刻,暂不支持模板替换和主题替换。


=========================================
七、作者
=========================================
作者 魏国兴    
邮箱 1607646162@qq.com
2016 年 04月 13日    


                       					


