创建第一个SPA应用从项目管理的思路开始进行。按照需求、功能、技术、测试、维护等都要先出文档,把需求和设计的文档、计划都完成后,就开始项目的开发工作。有计划的开展工作,才能定期跟踪和回顾。这样才能知道这段时间:做了什么,哪些功能是列了计划但没做的,问题和风险在哪里,有哪些需要进行调整的?一个软件的生命周期每个阶段的里程碑是不同的,要抓住重点。
2015-04-04新增--总是觉得时间不够用,每天工作的内容都要加班到很晚才完成,我已经工作了好几年了,解决问题应该很快很好才对,怎么越来越没有效率了?本来想做个文档,把该做的事情都详细的描述清楚,并且做个计划,但是时间不够啊~~~还是慢慢先看书,然后把代码贴上来吧,也算读完了一本书。
第一个小功能就是做一个右下角的聊天滑块,页面加载时是收起来的,点击是他会展开,再次点击时,他又恢复。在开始之前我们先把要做的事情做个提纲:
1、一个HTML页面,右下角有个默认关闭的滑块,div+css编码工作;
2、引入jquery,他提供浏览器兼容性良好的动画效果(可以用各个平台CDN资源)
3、JavaScript工作,编写一个chat函数,用来创建和管理聊天滑块。
4、当浏览器DOM可用时,就调用chat函数。
代码时间
<!doctype html> <html> <head> <meta charset="utf-8"> <title>SPA chapter 1</title> <style type="text/css"> body{width:100%;height:100%;overflow:hidden;background:#777;padding:0;margin:0;} #spa{top:8px;left:8px;bottom:8px;right:8px;border-radius:8px 8px 0 8px;} .spa-slider{position:absolute;bottom:0;right:2px;width:300px;height:16px;cursor:pointer;border-radius:8px 0 0;background-color:#fff;} </style> <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script> <script type="text/javascript"> /* jslint browser : true, continue : true, devel : true, indent : 2, maxerr : 50, newcap : true, nomen : true,plusplus:true, regexp : true, sloppy : true,vars :true, white : true */ //Module /spa/ // provides chat slider capability var spa = (function($){ //Module scope variables var // set constants configMap = { extended_height : 433, extended_title : '点击缩放', retracted_height:16, retracted_title : '点击展开', template_html : '<div class="spa-slider"><\/div>' }, // declare all other module scope variables $chatSlider, toggleSlider,onClickSlider,initModule, // DOM method /toggleSlider/ // alternates slider height // toggleSlider = function(){ var slider_height = $chatSlider.height(); //console.log(slider_height); // extend slider if fully retracted if(slider_height === configMap.retracted_height){ $chatSlider.animate({height : configMap.extended_height}).attr("title",configMap.extended_title); return true; } // retract slider if fully extended else if(slider_height == configMap.extended_height){ $chatSlider.animate({height : configMap.retracted_height}).attr("title",configMap.retracted_title); return true; } // do not take action if slider is in transition return false; }, // Event handler /onClickSlider/ // receive click event and calls toggleSlider // onClickSlider = function(event){ toggleSlider(); return false; }, // Public method /initModules/ // sets initial state and provides feature // initModule = function($container){ // render HTML $container.html(configMap.template_html); $chatSlider = $container.find(".spa-slider"); // initialize slider height and title // bind the user click event to the event handler $chatSlider.attr('title',configMap.retracted_title).click(onClickSlider); return true; }; return {initModule : initModule} }(jQuery)); // start spa once DOM is ready jQuery(document).ready(function(e) { spa.initModule(jQuery("#spa")); }); </script> </head> <body> <div id="spa"> <div class="spa-slider"></div> </div> </body> </html>
效果就是页面右下角有一块白色区域,点击后展开一个窗口,再点击缩回原来的状态