創建第一個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>
效果就是頁面右下角有一塊白色區域,點擊後展開一個窗口,再點擊縮回原來的狀態