大连民族学院本科毕业设计(论文)
Let’sgo 网站设计与实现--服务器端
|
学生姓名:
学 | 号: |
指导教师:
评阅教师:
完成日期: 2014-06-06
大连民族学院
Let’sgo网站设计与实现--服务器端
摘 要
Les’sgo是基于nodejs开发的校园社交网站服务平台。系统设计的宗旨是给高校里的学生提供一个能互动交流的平台,提高学生与学生、老师与学生间的联系,让校园活
动能更有效的被组织起来。系统通过发布活动、审核活动、查询活动等核心功能,搭建
了一个功能丰富高效的学生交流的地方。
系统中使用nodejs做为服务器端编程语言,数据库使用mongodb,利用JavaScript、CSS增强系统在浏览器上的表现力。利用nodejs的高并发性解决了用户在报名发布活动时的高并发问题,利用mongodb对平台产生的数据进行管理,利用Ajax的异步加载,实现了良好的用户体验,通过CSS,让本系统在多个浏览器里依然能保持统一的风格。通过这些前后端的技术,让系统能更完善的组织起高校间的活动。
本平台在功能上实现了对用户发布活动的显示、管理、查询,并将与用户有关的消
息及时推送给用户,让用户间能更自在的线上交流,很好的组织师生参加线上与线下的
关键词:校园社交网站;mongodb;nodejs;JavaScript;CSS;Ajax活动,能大大促进校园里的社交关系发展。
全套设计加扣3012250582
-I -
Let’sgo网站设计与实现--服务器端
Designand implementation of Let’s go website -- server Abstract
Thesystem is based on nodejs development of the campus social networkingsite service platform. System design aim is to provide students witha university in the interactive communication platform can improvestudents' contact with students, between teachers and students, socampus activities can be organized more effectively. System bypublishing activities, audits, inquiries and other activities of thecore functions, to build a feature-rich and efficient studentexchange.
Systemsusing nodejs as the server-side programming language , database usemongodb, use of JavaScript, CSS enhance system performance in thebrowser force . Use nodejs high user concurrency to solve problems inhighly concurrent enrollment publishing activities , the use of datagenerated mongodb on the platform to manage the use of Ajaxasynchronous loading, to achieve a good user experience , throughCSS, so that the system in a multi- a browser still able to maintaina unified style . Through these front end technology, so the
query, and user -related messages pushed to users in a timely manner, allowing more The platform implements functionality for users topublish events to display , manage,
system can better organizeactivities between universities .
relationships on campus . Key Words:Campussocial networking;mongodb;nodejs;JavaScript;CSS;Ajax
-II -
Let’sgo网站设计与实现--服务器端
目 录
摘 要.....................................................................................................................................IAbstract......................................................................................................................................II1绪论.........................................................................................................................................1 1.1项目背景......................................................................................................................1 1.1.1什么是校园SNS..............................................................................................1 1.1.2JavaScript现状.................................................................................................1 1.2课题开发的意义..........................................................................................................2 1.2.1弥补校园SNS之前存在的问题.....................................................................2 1.2.2用nodejs开发校园SNS应用的初步尝试.....................................................2 1.3系统开发的目标..........................................................................................................3 1.3.1功能性...............................................................................................................3 1.3.2可扩展性...........................................................................................................3
1.4系统简介......................................................................................................................41.4系统开发方法..............................................................................................................4
1.3.3http请求响应时间............................................................................................4
2.3系统功能分析..............................................................................................................6 2.3.1发起活动...........................................................................................................7 2.3.2查看活动详情&参加活动................................................................................7 2.3.3活动通知...........................................................................................................7 2.3.4活动评价...........................................................................................................7 2.3.5系统权限管理...................................................................................................7 2.4数据流分析..................................................................................................................8 2.5系统架构图..................................................................................................................93.数据库设计.........................................................................................................................10 3.1数据库选择................................................................................................................10 3.2数据库中的数据模型................................................................................................104.系统设计.............................................................................................................................11 4.1系统架构设计............................................................................................................11
-III -
Let’sgo网站设计与实现--服务器端
4.2系统详细设计............................................................................................................115.系统测试.............................................................................................................................13 5.1单元测试意义和价值................................................................................................13 5.2单元测试工具............................................................................................................13 5.3单元测试方法............................................................................................................14 5.4系统单元测试结果分析............................................................................................146.系统展示.............................................................................................................................15 6.1 Let’s go前台系统展示..............................................................................................15 6.2 Let’s go后台系统展示..............................................................................................16结论.......................................................................................................................................17参考文献...................................................................................................................................18致 谢...................................................................................................................................18团队成员任务完成情况总结...................................................................................................19
-IV -
Let’sgo网站设计与实现--服务器端
1绪论
1.1项目背景
1.1.1什么是校园SNS
SNS[1]是SocialNetwork Service的缩写,也就是现在流行社交网络服务。随着web2.0时代的到来,因互联网所产生的很多产品将现实生活中人们的社交关系神奇的搬
到了网络上,在网络上,每个人都有属于自己的网络社交关系。
校园SNS就是属于SNS的一种:校园生活型网络社区平台。它所针对的主要客户为在校的学生。在校大学生都有很强的向他人表现自己的欲望,并且喜欢多交朋友,这让每个学生间可以通过校园SNS的相关功能,来向其他还不认识的同学告知自己的存在,让其它同学注意到自己,从而相互之间建立联系与友谊。而且因为整个校园SNS都是采取实名注册,比如利用每个学生的学号等作为登录信息,所以整个校园SNS的网络环境非常和谐、安全、顺畅。
娱乐、学习。校园SNS实现了让学生可以轻松自在、低成本、便捷高效的管理自己的校园SNS现在已经成为很多大学生必不可少的工具甚至是日常习惯,通过它交友、
1.1.2 JavaScript 现状的变化。
十年前,因为客户端一些简单的表单验证的需要,JavaScript作为一种简单脚本编程语言为了满足这种简单需求产生了。当时它的功能仅仅只包括一些简单逻辑判断、生
硬的交互提示。它的主要职责是在一定的程度上减轻后台服务器的压力和提高一定的客
户端性能,但网站上主要的核心功能依然是交给服务器完成。
但是转机出现了,随着Ajax[3]技术的崛起,Ajax能实现服务器端向客户端无刷新的传输数据,大大的提高了用户体验,支持Ajax的JavaScript开始迅速流行起来,越来越受到程序员的欢迎,基于JavaScript的开源库:jQuery[10-11]、YUI、Backbone[12]等在很多知名互联网企业受到了广泛的使用。世界上最活跃的程序员开源社区Github[13],代码量最多的编程语言目前由JavaScript牢牢占据。
同时由于JavaScript语言设计的特性(1.异步机制2.单线程3.事件驱动)使它对并发编程的支持十分高效,由此产生了以JavaScript为基础的服务器端语言Nodejs。这个
–1–
Let’sgo网站设计与实现--服务器端
里程碑的事件意味着JavaScript编程已经不仅仅局限在客户端,在服务器端编程领域也已经被它涉及。
Nodejs是近2年发展起来的,与java、php[14]这些编程语言相比还不够成熟,但基本的web应用还是十分稳定、安全的。
1.2课题开发的意义
1.2.1弥补校园SNS之前存在的问题
在之前的校园SNS应用中,普遍采用的编程语言大多都是java[9]、php之流,这样会总是出现加载网页、请求数据的时间过长,尤其是当用户同时在线数量过多,请求频繁时,这样的高并发情况往往会使服务器崩溃,导致平台瘫痪,影响用户的使用性。
考虑到这些问题,本系统采用了全新的服务器端编程语言(Nodejs)。新的开发语言给予了这款应用无限的可能性,很有可能对原有的校园SNS应用中的缺点进行弥补,让用户能更加流畅的使用系统存在的功能。
个性化服务使得内容数据不能在前端服务器做缓存,因为每个人看到的都不一样。在这个阶段前端服务器对于每个请求需要做出必要的处理,但不会影响后端数据计算的运行, 如果在未来个性化服务是一种趋势,那么Node.js[6-8]高并发的优势就比较明显。
提高了用户体验。秀产品想法的突破口,并且与客户端的JavaScript编程语言完全一致,只是宿主环境不同,而且在前后端传输数据的过程中,能很轻易采用json对象传输。在这种种基础上,会使系统开发速度高效、便捷,乃至轻松就能完成之前校园SNS应用中很难完成的功能,并创新出更合理、更伟大的功能。
1.2.2用nodejs开发校园SNS应用的初步尝试
每种编程语言的发展期有三个阶段:语言层、框架层、应用层。应用层的出现才能证明该编程语言的成熟程度。Nodejs作为近2、3年才开始出现的编程语言,随着它不断 在不久的未来校园SNS迈入成熟的步伐,百分百会出现一系列应用开发,
可以预见的是,也将会成为其中的一个应用。
在之前的探索过程中,会发现Node.js的优点是“高并发性”,所以它是适合的IO调度服务器端脚本编程语言,但对于复杂计算的应用在性能上还是差强人意的。
国内的阿里巴巴已经在使用Node.js 开发与自己业务相关的应用,并且在手机客户
–2–
Let’sgo网站设计与实现--服务器端
端取得了一定的突破,阿里巴巴有着十分明确的使用目的,对于那些属于后端的特别复杂的逻辑不会用Node.js来进行开发,转而会让相对成熟的C++、JAVA进行接口编程开发,对外暴露已经写好的API等待调用。每个新的HTTP[15]请求被Node.js接收到后,在不涉及到复杂计算的情况下一律交给Node.js单独完成,另外复杂的业务逻辑由Node.js分发到后端已经开发好的API接口去解决问题,完成后再把结构返回给Node.js,由其返回给客户端。这种各司其职的方法能极大的优化作为web系统的性能。由于当Node.js进行这些调度时都是异步完成的,所以等待返回数据的这个过程中不会在资源调度上存在堵塞,因此用Node.js搭建的静态资源服务器可以承担很大程度上的并发度。
Let’go作为校园SNS应用,正好跟随着这波以Nodejs为核心的开发浪潮,对此领域进行初步尝试,为后来者提供相应的依据,开发出更完善的应用。
1.3系统开发的目标
1.3.1功能性
趣的活动,查看其他同学的个人信息。但是不能参加活动和创建活动。 (一)学生作为游客时(未登录状态),可以浏览首页的热门活动、查询自己感兴
系统的功能性核心在于保证系统里的的基本功能都是不可分割,都是可使用的,即:
通过活动达人功能板块提高同学在社区的活跃度。 (三)作为管理员有权利进入后台管理页面,对学生发布的活动进行审核,只有通
过审核的活动才给予在首页上进行展示。同时还可以对活动分组进行修改、删除。在进
行活动分组删除功能时,是采取逻辑删除手段,不会影响之前数据的加载,保证功能正
常运行。
(四)在学生使用本系统所有功能时,通过良好的UI设计,保证良好的交互行为,能很好的引导用户去操作各个功能板块。
1.3.2可扩展性
当系统在后期开发过程中,需要添加新的功能模块时,编写人员将会很轻松的定位
需要编写的业务代码,低耦合,易于扩展。
系统在编写之初,就应该对可扩展性做充分的构思,决定让前后端的代码都采取js中扩展性很高的模块化编程,利用Commonjs规范导入相应模块,并将其进行很好的组
织,化繁为简,使系统具有很高的扩展性。
–3–
Let’sgo网站设计与实现--服务器端
1.3.3http 请求响应时间
在web开发中HTTP请求是不可避免的存在,而HTTP请求的响应时间将决定一个应用是否留的住客户的关键。
如果一个HTTP请求的响应时间过长,数据将会很长时间才会从服务器端返回给客户端,在这段时间中会有大量客户流失。所以考虑到这个因素,系统中每个页面的第一个请求的响应时间都不会超过1s,保证用户在进入系统页面的一瞬间就能立即从服务器端获得反馈数据
1.4系统简介
Let’sgo网站其核心就是以高校校园为主的校园SNS。
Let’sgo以“增加校园活动丰富性”为主题,将有相同兴趣爱好的学生紧密的联系在一起。让学生能够发现彼此间的相同兴趣爱好,找到自己的知己,增加彼此的沟通,因而让学生间校园社交的广度与深度得到极大的扩展。
通过校园里的学生发布他们自己感兴趣的活动,管理员在后台管理系统将发布的活动审核通过,其他人可以直接观看到活动信息,点击相关活动信息进入活动详情查看,并且可进入发起人的个人中心查看其个人详细信息,并可对其发表过的活动进行留言,
关系得以充分的提高。 Let’sgo 服务器端的编写语言采用Nodejs进行开发,主要目的在于对新技术、新领域的尝试。同时在保存系统数据方面采取的数据库不同于传统的关系型数据库,而是最近才流行起来的关系型数据库mongodb,在开发使用的过程中,能充分了解到这种开发模式的特点,从而获得一定的成长,并且挖掘出校园SNS在这种开发模式下新的可能性与不一样的价值。
1.4系统开发方法
本系统在开发过程中,为了更快、更好、更快捷的开发,将前后端完全分离开来,前端专注于前端开发,后端开发专注于后端开发,而且为了可扩展性,全部采用js模块化编程的开发方式。
前端的开发重点主要集中在客户端层面:在兼容多浏览器要求下的CSS[5]样式的编写,保证良好交互性、大量利用Ajax、JSON数据交互、数据传输的客户端JavaScript
的脚本编程。
–4–
Let’sgo网站设计与实现--服务器端
后端的开发重点任务主要集中在服务器端层面,利用异步、非阻塞I/O 的Nodejs 编 |
写高并发的后台业务逻辑。同时利用了以Nodejs为基础的Express框架对后台业务进行MVC分离,有效增强系统的可维护性。
对于数据模型层的操作则采取以mongodb为基础的mongoose框架来处理数据,mongoose很好的封装mongodb的很多方法,而且能更高效、简单的管理系统中的数据,
为系统数据库的安全操作提供了有力保障。
对于开发工具(IDE)采用了现在很流行的sublimetext 2。它占用电脑的内存非常小,并且拥有极强的个性化配置,可以通过其内置的包安装机制,通过命令行的方式安
装第三方插件或自己开发满足自己需求的插件来配合日常的开发任务。比如可以利用这
些插件支持语法高亮,代码排版等等。在此种种基础上,是开发速度、效率变的快捷无
比。
Chrome浏览器在开发本系统的过程中是主要的开发浏览器。因为其内置的web开发工具提供很多必要的功能,如图1.4。这些功能包括查看http请求响应时间、调试前端JavaScript代码、调整系统css样式、对html结构的管理、查看系统加载的资源等等,通过这些强大的功能,有利于开发者在开发过程中,快速定位在开发过程中代码编写存
在的问题,然后及时的将问题解决。
图1.4chrome web 开发者工具
–5–
Let’sgo网站设计与实现--服务器端
2.系统分析
2.1可行性分析
本系统采用了Nodejs作为服务器端编程语言开发,同时采用以Nodejs为核心的web
应用框架Express。数据库采用Mongodb,系统采用Browser/Server模式结构,并用
html+css实现静态网页样式的编写。Express框架是一个开源的web应用框架。在系统
开发中采用MVC的软件设计模式,对系统的可维护性有很好的提高。Express提供了一
个高级的框架,轻盈、灵活、强大,注重敏捷开发与快速迭代。基于以上这些原因,Express
框架完全可以胜任项目设计的需要,在技术上是完全可行的。
2.2系统信息架构图
Let’sgo 信息架构图,如图2.2。
图2.2let’s go 信息架构图
2.3系统功能分析
充分了解使用该系统的用户需求,是明确系统功能设计的必要前提,从用户的使用
角度出发,并对一定的用户做了调研后,梳理本系统的业务功能,主要业务功能是:
–6–
Let’sgo网站设计与实现--服务器端
用户发起活动--》管理员审核活动 --》用户查看/查询活动--》参加活动--》查
看用户的个人中心--》接收与自己有关活动消息等主要系统功能模块。
2.3.1发起活动
用户成功登录后,可以点击“发起活动”。发起活动需要填写活动详情表单,包括
活动的名称、地点、时间、注意事项等描述信息,选择该活动所属的类别(便于管理员
将活动添加到相应的类别下面)。填写完成后,将该活动提交审核。审核成功后,该活
动会发布到相应类别下面,关注该活动类别的用户可以在消息通知栏收到活动提醒的通
知,其他用户也可以在主页上搜索到该活动的信息。若审核不成功,则不会给予显示,
会在消息通知栏里收到审核失败的消息通知。
2.3.2查看活动详情&参加活动
用户在主页上搜索到xx活动后,能看到活动详情和发起人的信息,可以在活动下
面留言。也可以直接点击“参加活动”按钮,表示报名参加该活动,活动发起者同时可
以接收到相关参加者报名了活动的消息。
2.3.3活动通知
每个用户登录成功后,都会有属于自己的消息面板,用于接收与自己相关的活动的
动态更新。动态更新的内容包括:
3.活动发起者能收到参与该活动的用户的评价和留言。
4.活动发起者能收到活动审核通过的提醒。
5.管理员能够收到待审核活动的提醒。
2.3.4活动评价
活动时间结束后,用户根据活动通知,对所参加的活动进行评价。用户可以选择鲜
花或鸡蛋或拖鞋(图片加文字描述),鲜花加3分,鸡蛋加1分,拖鞋扣1分,最后得
到一个活动评分。该评分是对活动达人排序的唯一标准
2.3.5系统权限管理
权限有三种:游客,用户,系统管理员;
1、游客只能浏览网站的信息,不具有其他功能权限。
2、用户的权限包括:
① 查看修改个人信息
–7–
Let’sgo网站设计与实现--服务器端
②查看,查询活动
③给活动留言,评价已参加的活动
④发起活动,参加活动
⑤.接收感兴趣的活动通知提醒
3、系统管理员权限包括:
①活动分类管理,包括:添加、修改、删除活动类别 ②添加、删除系统管理员
③用户发起活动的内容管理和审核,包括:
a. 查看发起活动
b. 审核活动
2.4数据流分析
在web2.0时代的今天,web应用中的http请求是客户端与服务器端连接的桥梁,通过http请求,实现了服务器端与客户端的数据传输操作。在本系统的使用中,数据在以
1. 客户端(浏览器) 下三个地方流动:
Ajax 发送一个请求到服务器端, 3.服务器端接受到数据后,再向数据库请求满足条件的数 2.
据,然后数据库返回数据给服务器端,接着服务器端再将数据经过其逻辑层的处理后返回给客户端,客户端利用接收到的数据,再渲染相关的dom节点到html页面中,从而达到了相应交互结果。
–8–
Let’sgo网站设计与实现--服务器端
2.5系统架构图
本系统架构如图2.5。
图2.5系统架构图
系统在管理数据方面使用mongodb进行管理,也就是底层数据库的支持,nodejs以服务器端支持的身份作为JavaScript与mongodb的桥梁,负责接收从客户端的HTTP请求,通过该请求从而具体的去mongodb中进行查询,mongodb将查询的结果返回给服务器端,再将该数据返回给客户端的JavaScript中,然后JavaScript再将数据渲染到浏览器的网页中,最终进行相应的展示和交互效果。
–9–
Let’sgo网站设计与实现--服务器端
3.数据库设计
3.1数据库选择
如今的数据库有2大类型的数据库:关系型数据库与非关系型数据库。
关系型数据库的代表有mysql,oracle等知名数据库,非关系型数据库(Nosql)是
最近2年流行起来的,它的代表就是MongoDB[4]。
在本系统中由于采用的是Nodejs,它是一个并发、异步、事件驱动的JavaScript服
务器后端开发平台,而MongoDB是一个使用JSON风格存储的数据库,非常适合
JavaScript,而且它也是异步操作的。所以两者如果结合,能无缝的将数据库中的数据流
畅的以JSON格式传递到前端。同时,数据库调试和管理也变得轻松了许多,存储在数
据库中的对象基本上等同于你在客户端看到的对象。更妙的是,前端工作人员也能够轻
松了解后端代码和数据库查询,使用的是相同的语法和对象,使前后端能更容易配合,
加快开发进度。基于以上原因,最后决定使用MongoDB做为系统的数据库。
3.2数据库中的数据模型
构建项目中的数据模型,将现实中的数据信息抽象成一个数据模型在web开发是必
用和维护,系统抽象出了如下模型: 2. Classify -- 活动所在的大分类
3.Comment -- 活动评论
4.Sub_classify -- 活动所在的子分类
5.User -- 用户的基本属性
6.User_action -- 用户与活动关联文档
7.User_classify -- 用户与活动分类关联文档
8.Notified --用户消息推送的基本属性
这8个数据模型是系统数据操作的核心,系统中所有的数据操作都是基于以上建立出来并使用的。
–10–
Let’sgo网站设计与实现--服务器端
4.系统设计
4.1系统架构设计
本系统为了使开发过程中每个业务逻辑更明确,代码的维护性更高,所以决定采用MVC开发模式。数据模型层、视图层和控制层分别代表其中M(Model)、V(View)、C(Controller)。
如果采用MVC的开发策略,对系统来说是一把双刃剑。它在一定程度确实增强了系统的可维护性、可扩展性。但是从另一方来说,在性能上却照成了一定的损失。所以MVC也并不是最好的架构方式,需要在具体、详细的分析后,进行使用。
开发效率能极大的提升。MVC最引人注意的地方是其低耦合的特点,在此特点下,
开发人员能在系统的开发环境中各司其职,开发出系统的各个接口API,推动项目的前进。当然这种开发模式如果过度的追求,也会照成大量的代码冗余,从而形成一些不必要的bug。
MVC 对系统来说只是一个切入点,是起点而不是终点,需要在这段架构的路上走很长
所以综合来看MVC的优缺点都是存在,所以我们需要在合适的地方用合适的技术。
时间。
4.2 系统详细设计
系统的详细设计体现在控制层里,具体包括模块的如下:
1. action.js
具体接口方法有:
①Create: 活动接口的创建,其核心的功能是负责将用户创建的活动数据安全的插入到数据库中。
②List: 查询具体活动id的接口,以JSON返回一个活动的所有信息让前端得以接收和展示。
③Uploadpic:上传活动海报图片的接口,将用户上传的图片裁剪成用户需要的大小。
④ Searchbykey:按字符匹配活动查询的接口,处理用户搜索活动时输入的关键字。
–11–
Let’sgo网站设计与实现--服务器端
⑤ Searchbyid:按活动所属分类的id查询相关活动分类下所有的活动信息。⑥Enrolleduser:列举出一个用户参加了哪些活动接口。
⑦ Joinedaction:列举出一个用户参加过哪些活动接口。
⑧ Lookpublish:列举出一个用户发布过的活动接口。
2.user.js
①Islogin:得到用户是否登录的依据信息,从session中获取用户信息。②Logout:处理用户登出操作,将用户的数据从session中清空。
③ Userinfo:通过用户id,查询数据库得到其的所有信息。
④Userlogin:用户登陆操作,并在这个时候将将用户数据存储到session中。 ⑤Signup: 处理用户参加活动的逻辑操作,让已经报名的用户不能再次参加该活动。
⑥ Listuser:列举出参加活动成员的数据接口。
⑦ Listrankuser:列举出活动达人的数据接口。
⑧ Uploadpic:处理用户头像的上传操作,并间接的处理一系列的操作。
3. type.js
④ Deltype:删除用户关注的活动分组。
4. comment.js
①Listmessage:返回出相关活动留言所有信息。
② Addmessage:处理用户添加活动留言操作。
5. lookaction.js
①listAllhot: 返回所有类别热门的活动(注:热门的活动以参加的人数作为统计依据)。
② Singlelist:返回单个活动分类下热门活动。
③ Hotaction:返回各大分类下的热门活动,为4个。
6. notified.js
–12–
Let’sgo网站设计与实现--服务器端
①Allnote:得到用户的所有消息列表。
②changeAll:读取用户的所有消息列表。
③Notified:得到用户未查看的消息列表。
④Read:用户阅读单条消息列表数据。
5.系统测试
5.1单元测试意义和价值
在系统中使用的测试方案是单元测试,使用单元测试能够使系统中的代码逻辑变的十分规整,因为单元测试的编码风格非常统一,使用的是断言式的编码风格,使你在阅读单元测试代码时,能很快的把你系统中的业务逻辑梳理出来,让你在一个头脑异常清醒的情况下编写你系统中的API接口。当然要实现以上几点,首先要对单元测试作出良好的设计与一定程度上的编码。
都知道,耦合度高的代码是不可能进行单元测试,所谓单元测试,其核心就是要把一个单元测试有一个巨大的优点就是其能够大量的减少系统代码的耦合度。 基本上大家
快速的定位修改的具体位置和对错情况,这样,在Bug出现后,能让你有针对性的排除bug产生原因,比如你让你快速知道原有的功能在此基础上的改动是否会收到影响,使用单元测试,就像你在你的系统为调试使用了多个调试断点一样。由以上几点同样也可以看出单元测试有很大的复用性。一套单元测试方案,可以在相应的对接到系统其他几个层面中。
单元测试编写之初会很艰难,但是如果长期不间断的努力编写,会逐渐降低它的编写难度。毕竟万事开头难,尤其这种以测试驱动开发的模式,前期的设计非常关键。
5.2单元测试工具
在本系统中使用的是mocha(抹茶)的单元测试框架,主要利用它自定义的chai断言库,能使断言似编码风格统一、易用、灵活,增加单元测试的编写效率。
–13–
Let’sgo网站设计与实现--服务器端
5.3单元测试方法
为了保证项目的质量,利用基于nodejs的单元测试mocha框架,这样之后在项目的开发中每当我完成一个接口代码,就能通过编写单元测试样例测试其的正确性,让系统核心的控制层接口都能被单元测试所覆盖,编写的单元测试如下:
? testaction.js --测试所有关于活动接口的代码逻辑
? testType.js --测试关于活动分类接口的代码逻辑
? testUser.js -- 测试关于用户相关接口的代码逻辑
现在所有单元测试都已经通过,确保本阶段开发项目的质量。
5.4系统单元测试结果分析
从单元测试的结果分析中能看出每个接口的执行时间、对错情况。如果在整个的测试的过程中出现任何异常情况(执行时间过长、响应时间过慢、编译错误)都能立即从测试结果分析列表中体现出来,图5.3表示通过了系统中12个单元测试。
图5.3 单元测试结果
从图5.3 中可以看出,“12passing”代表着系统里的12个单元测试模块全部运
–14–
Let’sgo网站设计与实现--服务器端
行通过,耗时284毫秒。图中每一个绿色的勾代表着单元测试测试成功的标志,后面则附加上对应单元测试具体的描述说明。
6.系统展示
6.1Let’sgo 前台系统展示
系统的前台系统如图6.1所示,用户进入首页后,可以在首页看到系统里热门活动的信息,及所有的活动大类分组,
在页面的上方为Let’sgo系统的搜索栏,搜索用户感兴趣的活动,以查看该活动详细信息,顶部可以进入个人信息页面查看详细资料及系统的消息通知,右侧可以发起活动。界面美观大方,重在引导用户使用相关功能,在用户体验上下了很大功夫。
图6.1Let’s go 前台系统
–15–
Let’sgo网站设计与实现--服务器端
6.2Let’sgo 后台系统展示
Let’sgo后台系统采用简约、小清新的设计风格,当管理员登录到后台系统时会自动进入未审核活动列表,查看未审核的活动,同时可以在上方的“Info”切换菜单栏可以浏览审核成功的活动、审核失败的活动、系统所有活动信息。点击右上角的tab栏可以进入系统的权限管理与分组管理操作。
Let’sgo 后台管理系统如图6.2。
图6.2Let’s go 后台系统
–16–
Let’sgo网站设计与实现--服务器端
结 论
对于一个社交网络中的校园SNS来说,不仅仅是满足用户的网络上的互动交流方
式,更应该利用校园这种高聚合的场所,让用户通过相应网络平台,在现实的校园生活中也产生很大程度的交集。打通整个线上、线下的社交通道,让用户能与他人之间的关系得到更好的发展。以这种新颖的社交方式,相信能使用户更好的在平台上互动,促进整个校园的社交关系。
Let’sgo 正是充分了考虑这些因素后,开发出来的。Let’sgo 以“增加校园活动丰富性”为主题,将有相同兴趣爱好的学生紧密的联系在一起。现在Let’sgo平台已经打通了线上到线下的桥梁,用户可以在线上创建大家都能看到的活动,描述出具体的信息,其他用户发现后,可以活动留言进行互动,并报名参加该活动,让活动发起人能更好的组织起活动,让他们约在线下进行面对面的交流,并且通过实名制的方式,使平台的安全、互动、真实性都大大提高。同时为了促台的活跃度,对每个学生间采取积
增加彼此的沟通,因而让学生间校园社交的广度与深度得到极大的扩展。这些种种功能目的都是让学生能够发现彼此间的相同兴趣爱好,找到自己的知己,
分制的手段,进行活动达人的排名,促进学生在平台的活跃性。
–17–
Let’sgo网站设计与实现--服务器端
参考文献
[1][美]GavinBell.《SNS网站构建》.北京:机械工业出版社,2011.
[2][美]NicholasC. Zaks.Javascript 高级程序设计.北京:人民邮电出版社,2012.[3] 李刚.疯狂Ajax讲义.北京:电子工业出版社,2013.
[4][美]Kristina Chodorow. MongoDB 权威指南.北京:人民邮电出版社,2010.[5] 陆凌牛.HTML5 与CSS3权威指南.北京:机械工业出版社,2011.
[6][美]DavidHerron. Node Web 开发.北京:人民邮电出版社,2012.
[7]BYVoid. node.js 开发指南.北京:人民邮电出版社,2012.
[8]朴灵.深入浅出Node.js.北京:人民邮电出版社,2013.
[9]李刚.轻量级JavaEE 企业级应用实战.北京:电子工业出版社,2012.
[10]单东林.锋利的jQuery(第二版).北京:人民邮电出版社,2012.
[12] 陶国荣. Backbone.js 实战.北京:机械工业出版社,2014.
[11]陶国荣. jQuery权威指南(第二版).北京:机械工业出版社,2013.
致 谢
在这里,向在项目开发过程中曾经给我提供帮助的李锡祚老师、Dreamonline工作室团队成员、以及Github开源社区表示衷心的感谢。
–18–
Let’sgo网站设计与实现--服务器端
团队成员任务完成情况总结
龚一峰个人总结:
1.服务器端的编写,通过利用nodejs搭建webmvc(moduler、view、conctrol)框架,并且保证代码的可读性,提高项目的可扩展、可复用、可维护三大特性。 2.对数据库(mongodb)进行管理,建立数据模型、表结构、对用户的数据实现CRUD(create、read、update、delete)操作。
3.对前端交互进行支持,对客户端(浏览器)所发送的请求(Ajax)给予相应的响应。
4.实现系统所有页面相关的后端业务逻辑。
--完成进度100%。
总结:
通过在做本次毕设的过程中,对Node.js从陌生到熟悉,感受到了Node.JS最大的
程使用上存在陌生,感觉很难掌握。1.对于服务器端的开发不熟悉,尤其在网络请求这方面。
2.在编写nodejs的过程中不知如何采取适当方式进行断点调试。
3.在利用node里的gm插件处理图像时,发现怎么引入包,都无法对已知的图片进行处理。
不过索性都通过Google等手段一一解决啦,总体来看从这次毕设中收获良多!
–19–
Copyright © 2019- l2e.cn 版权所有
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务