我们的日历组件的时间格式
发表时间:2023-11-17 21:52:19
文章来源:炫佑科技
浏览次数:108
菏泽炫佑科技 菏泽炫佑小程序开发 菏泽炫佑app制作 炫佑科技
地址:
我们继续在这里实现我们的日历组件。 这个日历组件有点特殊,是一个比较复杂的组件。 然后一般的日历组件还有很多变化,所以我们这里可以实现*基本的标签:
让视图 = ('-视图');
= ('../utils/util.js');
// const = util.;
({
:[
看法
],
:{
},
数据: {
: ['日','一','二','三','四','五','六'],
: 1,
//当前显示时间
: 无效的,
//*早可以选择的时间
: 无效的,
//*新时间
: 无效的,
//当前时间,有时从服务器端读取
:()
},
:(){
//.log(这个)
},
:{
})
=(日期){
&& 日期。;
};
=(年份){
//需要处理传入的时间格式
if((年))年=年.()
if((年份 % 4 == 0 && 年份 % 100 != 0) || (年份 % 400 == 0));
;
};
=(日期){
= date.();//注意月份需要加1,所以我们需要减1。
= 日期.();
[31,(年)?29 : 28,31,30,31,30,31,31,30,31,30,31][月];
h =(日期){
= 日期.();
= 日期.();
vard = (年,月,1);
.();
=(日期){
如果(!(日期)){
日期=(日期)
= 日期.();
= 日期.();
vard = (年,月);
//这个月有多少天?
= (d);
//本月从星期几开始?
= (d);
/*
.log('信息',JSON.( {
年: 年,
月: 月,
天: 天,
:
}));
*/
{
年: 年,
月: 月,
天: 天,
:
。 = {
:
{{物品}}
{{索引 + 1 - .().}}
这是一个非常粗糙的日历原型。 编码过程中比较痛苦的有以下几点:
① WXML和js之间只能传递数据,根本不能传递方法。 应该是两人之间的沟通。 这里的日历组件要在WXML层写一些逻辑。
② 用WXML来写逻辑已经不对了,而且我们引入的WXS也和HTML中的js片段有很大不同。
这些问题一度让代码变得复杂,可以看到简单的组件没有复杂的功能,涉及的文件太多。 这是调用层:
其实我们上面的数据根本不应该写入data,而应该作为属性来传递。 我们先简单实现一下功能我们的日历组件的时间格式,然后再继续完善这个组件。 具体代码请查看git:
这个日历组件应该是小程序中写的*复杂的组件了,尤其是很多逻辑判断代码都放在WXML中。 根据之前的理解,小程序在一个中渲染,js逻辑在另一个中。 这样做的目的可能是为了让性能更好,但是这里写代码其实有点蛋疼。 这里我们开始组装组件,将数据配置放到属性上,开始组装页面。 事实上,我认为日历这个非全局组件不应该放在基类中:
① 因为提供的是标签,且涉及文件较多,继承关系难以管理。
② 因为日历组件实际上是一个标签,所以我们将引入一个基本的WXML并使用一个js。 拥有一个完全独立的文件就更复杂了。
③本来小程序或者复杂的页面应该用组件来开发,所以我们创建一个页面级的组件,分散到对应的页面中。
小程序似乎给灵活的HTML&JS戴上了枷锁,只允许在允许的范围内灵活。 这里我们再次尝试拆分页面:
/*
事实上,一个mod只是一个对象,但是为了方便分割,将对象分割成单独的mod。
mod对应于wxml,但共享外部css。 暂时是这样的设计。
所有日历模块要求都在这里实现
*/
。 = {
问:1,
ddd: (){},
数据: {
: '',
数量: 2,
:(),
: 无效的
核心代码仍在-page中:
//是页面级数据,mod是模块数据,要求不能重复
(,mod){
//;
让= {};
让键,值,k,v;
//动态添加操作组件到页面的方法
。(微信小程序开发需要什么语言,这。(),);
//生成真实页面数据
.data = {};
.(.data,this.(),.data || {});
for(键 inmod){
值 = mod[键];
为了(){
v = 值[k];
if(k === '数据'){
.(.数据,v);
}别的{
[k] = v;
。日志();
;
这是另一个修改,我们的基本日历组件已完成 80%:
/*
事实上,一个mod只是一个对象,但是为了方便分割,将对象分割成单独的mod。
mod对应于wxml,但共享外部css。 暂时是这样的设计。
所有日历模块要求都在这里实现
*/
。 = {
问:1,
ddd: (){},
: (e){
让数据= e。;
= (数据.年,数据.月,数据.日);
.log(日期)
这。({
:日期
});
},
数据: {
: '',
数量: 2,
:(),
: 无效的
至此,我们组件相关的话题就基本结束了。 接下来,我们开始我们的业务代码。
【关于投稿】
如果您有原创好文章可以贡献,请直接给公众号留言。
①消息格式:
【提交】+“文章标题”+文章链接
②示例:
【投稿】《别自称程序员,我十几年IT生涯的总结》:
③*后请附上你的个人资料~