Clover周报模块 -- 开发总结

2014年7月8日 00:16:05

一、切图

这次开发,切图花了不少时间,样式是用scss写的,第一次用,不过用着用着就发现它的强大,层级、作用域、重用等都非常的方便,还有考拉神器,用着真是爽!不过,改起样式来就蛋疼了,通过浏览器看到的是css样式,然后从css里找到它是scss的第几行,多了一层转折,不能通过浏览器直接看到scss的样式,略感麻烦。

二、布局

整个周报页面是在一张HTML页面上实现的,用Ajax请求各种数据,然后展现到页面的不同位置。因为神框架Avalon的存在,数据的处理变得简单、直观,所以我只需要布一个简单、直观的局就行了。 曾考虑过用表格布局,不过直接被老大否掉了(原因:古老,效率低);因为布局时,页面总有小改动,多一列少一行的,所以就没有去用百分比计算它的宽度(包括用calc),也不想套好几个div把层级弄的无比复杂,最后采用的-webkit-box这个样式来布的局。 但,-webkit-box也是一个不靠谱的样式,坑爹之处在于如果一个有内容,其他没内容,内容会自己独立出来,然后所有有-webkit-box-flex样式的标签来瓜分空间,如图这种坑爹的情况: 一张图(网页在公司,回头截个图) 然后就果断抛弃-webkit-box,用display:flex;来布的局,这个样式硬,不会受内容影响,就它了!

三、模式

使用的MVVM这种设计模式,完全简化DOM操作,交互更加便利。

四、模块

js用的MVVM框架Avalon,除了一直都带的左侧菜单模块(我的前任JS做的,主要用来导航到各个模块,但是没有WordPress这种“收起菜单”的功能),其他内容都由我一个人完成。 主要功能分为“写周报”和“看周报”,将整个body作为一个vm对象,所有数据和方法都绑定在这个对象上(写完之后,感觉这么做有些不太好,一个臃肿的对象,会给浏览器带来更大的处理压力,但当时对于不同vm对象间的通信掌握并不好,所以所有内容全堆在一起了,耦合度高,不利于维护,之后的开发要注意拆分),利用路由器系统进行通信,后期还会加入canvas图表。

五、路由

路由(router)系统是我除MVVM外又一个新接触的东西,通过控制浏览器hash来判断内容的展示,灰常强大与实用。利用路由器系统可以更加便利的进入到正确的内容中,而不是只能从主页面一步一步找到项目所在的位置,也不用像PHP一样?后面加一堆东西来判断,完全由前端控制,用得能不能不要这么爽,不过也有一些开发中实用路由遇到的小问题,会总结一下写一篇博文出来。

六、数据

数据这里,主要由后台进行数据库的各种操作,感觉主要问题在于本周和上周周报的分开存储,本来一个周报需要包含上周完成和本周计划,但这两者都可以不写东西,而传到后台的内容都是分开的,所以到了“看周报”那里经常出现一个周报只有半份(有本周没上周,或有上周没本周)这种状态,非常蛋疼。 然后说一下“看周报”这里的数据结构问题,通过路由器获取的周数和当前浏览部门的id来请求后台,但返回的数据很大(将近200kb)很复杂(7维到8维数组),而只将其到一个时间-部门-项目-周报-细节这样的表格里,在没有简化数据结构时,有时页面的加载的速度(主要是Avalon框架循环数据来创建DOM)会打到惊人的2分钟,让我们老大的老大感到灰常不爽,而后台奈落大汉在忙别的,只能自己优化了。 主要通过ECMA5.0中数组的新方法forEach(再也不用写for循环了),首先将时间单摘出来,然后将大数组简化为部门-项目-细节这样的3维数组(只展示3周周报,将这三周作为项目的属性week0,week1,week2),去除原先大数组中那一堆个用不到的属性,瞬间,页面的加载10秒内就能完成,数据结构真是利器啊,难怪大牛们都说,算法、数据结构优于一切,终于切身的体会到了。   经过将近5周的开发,一个月的辛苦加班,终于在这周一之前上线了(老大还带我们去吃了铁板烧大餐,真是爽啊),而且公司提交周报的情况不错,大佬们也都发出好评,一些自豪感油然而生。不过只把写和看的一些关键功能做出来了,还差统计这里没有完成,需要用到百度的Echart来展示图表,而且还有bug要改,细节要优化,一些开发中的收获也需要整理,未来的日子依旧充实,充满挑战,不过最开心的还是终于不用加班了,欧耶!

Clover周报模块 -- 开发总结,布布扣,bubuko.com

时间: 2024-10-11 21:45:54

Clover周报模块 -- 开发总结的相关文章

微控工具xp模块-开发版[微信(wechat)二次开发模块]

http://repo.xposed.info/module/com.easy.wtool 微控工具xp模块-开发版[微信(wechat)二次开发模块] 基于xposed框架的微信二次开发模块,方便开发者用微信做一些扩展功能(如微信群发.多群直播等...) 目前支持功能: 发文本消息 发图片消息 发语音消息 发视频消息 获取微信好友列表 群列表 支持群发消息 支持消息转发(目前支持文本.图片.语音.视频.图文消息转发) 群管理功能(建群.加人.踢人.设置公告.改群名.退群.解散群) [注:本模块

第二篇 基于微擎的模块开发—PHP

从陌生到如今能勉强完成第一个微网站模块的实现.也算是一个小小的进步,从设计数据库到,返回数据,前端模版渲染 每一点都是有点难度的.所以我想总结一下,我是如何实现一个微擎模块. 第一,首先得分析某个模块的想实现什么需求,根据需求设计合理的数据库结构. 第二,了解微擎的结构,运行流程,设计模块结构. 第三,重点就是site.php , 完成site.php 需要一定的php的编程能力, 第四,site.php 其中 通过 pdo 从数据库的获取我们想得到数据源. 微擎已封装其路由机制, doWeb

VB 核心编程及通用模块开发 笔记1

前言:学习任何编程语言.编程工具的目的不外乎解决生活问题,能够快速.高效解决问题的方式就是不错的方式,至于选择什么“工具”,众位看官看着办,本人虽然有过3年vb开发经验,但是一直没有深入学习,现已购买 <张宁著 老兵新传  核心编程及通用模块开发>,深入学习vb开发,继续将vb发扬光大. 一.知识准备 本章从API函数开始介绍vb下如何使用api函数,模块.类模块的编写.主要还是阐述的一种思想,通用模块开发,编写的模块能够通用,多次使用,尽量要降低错误,以达到重复利用目的,从通篇介绍来看,以后

服务器架设笔记——Apache模块开发基础知识

通过上节的例子,我们发现Apache插件开发的一个门槛便是学习它自成体系的一套API.虽然Apache的官网上有对这些API的详细介绍,但是空拿着一些零散的说明书,是很难快速建立起一套可以运行的系统.(转载请指明出于breaksoftware的csdn博客) 为了实现最基础的URL解析等功能,我把<Apache模块开发指南>一书粗略了翻看了两遍,以利于迅速了解Apache模块编程的相关知识.至于书中具体的知识点,我并不在此赘述.但是为了便于大家了解之后遇到的各种相关的知识点,我大致罗列几条(摘

Nginx Http模块开发

关于Nginx Http模块开发的文章非常少,只有Emiler的那篇关于Http模块的文章,但是那篇文章里面,并没有说到事件型的模块如何进行开发.而且文章里面提到的内容实在是让人有点意犹未尽.因此,对于Http事件型模块的开发进行了一些总结,与大家分享.但是,无论如何,要进行Nginx模块开发,最好的方法还是找到相似性较大的模块的代码进行参考,多试多看. 通常,一个Http模块均是有以下的几个部分组成: 1.模块配置结构体:(configure structure) 负责存储配置项的内容,每一条

Titanium Module 模块开发(二)蓝牙控制 Module

今天 ,正好项目需要添加蓝牙的控制功能,我去Titianium 文档搜了一下,发现 只有Tizen 系统有,其他的都没有,只能自己做Module. 借这个机会,记录一下蓝牙控制Module 的开发过程中遇到的问题和一些知识点. 编写Module 建立项目 首先 ,建立一个Module 项目,不会的话参考:Titanium-Modules 模块开发 (一) :模块开发基础 创建完成后会是这样: 添加蓝牙相关方法 打开BluetoothadapterModule.java 文件 可看到如下代码: 2

DNN模块开发之利器篇:七种武器

我们在进行DNN模块开发时经常需要调用Dotnetnuke.dll中的方法函数,模块开发用到DNN的方法函数会让你的开发更加得心应手,下面我们就来介绍一下. 1) PortalModuleBase 所属命名空间:DotNetNuke.Entities.Modules 这是一个开发DNN模块所必须继承的基类,标志性的基类,在此基类中,你可以得到DNN所为你封装的一些模块基本信息,毋需你多费周折,其中包括当前用户UseID,UserInfo,TabID,ModulePath,ModuleConfig

Nginx模块开发入门(转)

前言 Nginx是当前最流行的HTTP Server之一,根据W3Techs的统计,目前世界排名(根据Alexa)前100万的网站中,Nginx的占有率为6.8%.与Apache相比,Nginx在高并发情况下具有巨大的性能优势. Nginx属于典型的微内核设计,其内核非常简洁和优雅,同时具有非常高的可扩展性.Nginx最初仅仅主要被用于做反向代理,后来随着HTTP核心的成熟和各种HTTP扩展模块的丰富,Nginx越来越多被用来取代Apache而单独承担HTTP Server的责任,例如目前淘宝内

linux下nginx模块开发入门

本文模块编写参考http://blog.codinglabs.org/articles/intro-of-nginx-module-development.html 之前讲了nginx的安装,算是对nginx有了最初步的了解,在配置完之后,我们就可以进行简单的nginx模块开发了. 下面本文展示一个简单的Nginx模块开发全过程,我们开发一个叫echo的handler模块,这个模块功能非常简单,它接收“echo”指令,指令可指定一个字符串参数,模块会输出这个字符串作为HTTP响应.例如,对ngi