创建第一个SPA应用--2015-03-30记录

简介: 创建第一个SPA应用从项目管理的思路开始进行。按照需求、功能、技术、测试、维护等都要先出文档,把需求和设计的文档、计划都完成后,就开始项目的开发工作。

创建第一个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>

效果就是页面右下角有一块白色区域,点击后展开一个窗口,再点击缩回原来的状态

目录
相关文章
|
28天前
|
关系型数据库 MySQL 测试技术
当update修改数据与原数据相同时会再次执行吗
当update修改数据与原数据相同时会再次执行吗
23 1
|
10月前
|
SQL 关系型数据库 MySQL
操作delete或者update语句,加个limit或者循环分批次删除
操作delete或者update语句,加个limit或者循环分批次删除
|
11月前
|
存储 编译器 C++
【c++】:list模拟实现“任意位置插入删除我最强ƪ(˘⌣˘)ʃ“
【c++】:list模拟实现“任意位置插入删除我最强ƪ(˘⌣˘)ʃ“
70 0
|
11月前
|
关系型数据库 MySQL 索引
Mysql中REPLACE INTO用法,判断数据是否存在,如果不存在,则插入,如果存在,则先删除此行数据,然后插入新的数据...
Mysql中REPLACE INTO用法,判断数据是否存在,如果不存在,则插入,如果存在,则先删除此行数据,然后插入新的数据...
173 0
|
SQL 关系型数据库 MySQL
十一、操作delete或者update语句,加个limit或者循环分批次删除
十一、操作delete或者update语句,加个limit或者循环分批次删除
207 0
SwiftUI—如何调整记录在List列表里的顺序
SwiftUI—如何调整记录在List列表里的顺序
204 0
SwiftUI—如何调整记录在List列表里的顺序
怎样去掉list里重复的数据(多种方法)
怎样去掉list里重复的数据(多种方法)
147 0
怎样去掉list里重复的数据(多种方法)