毕业设计(论文)-基于node.js的个人博客设计.docx

上传人:聆听****声音 文档编号:1830660 上传时间:2023-05-01 格式:DOCX 页数:35 大小:324.81KB
下载 相关 举报
毕业设计(论文)-基于node.js的个人博客设计.docx_第1页
第1页 / 共35页
毕业设计(论文)-基于node.js的个人博客设计.docx_第2页
第2页 / 共35页
毕业设计(论文)-基于node.js的个人博客设计.docx_第3页
第3页 / 共35页
毕业设计(论文)-基于node.js的个人博客设计.docx_第4页
第4页 / 共35页
毕业设计(论文)-基于node.js的个人博客设计.docx_第5页
第5页 / 共35页
毕业设计(论文)-基于node.js的个人博客设计.docx_第6页
第6页 / 共35页
毕业设计(论文)-基于node.js的个人博客设计.docx_第7页
第7页 / 共35页
毕业设计(论文)-基于node.js的个人博客设计.docx_第8页
第8页 / 共35页
毕业设计(论文)-基于node.js的个人博客设计.docx_第9页
第9页 / 共35页
毕业设计(论文)-基于node.js的个人博客设计.docx_第10页
第10页 / 共35页
毕业设计(论文)-基于node.js的个人博客设计.docx_第11页
第11页 / 共35页
毕业设计(论文)-基于node.js的个人博客设计.docx_第12页
第12页 / 共35页
毕业设计(论文)-基于node.js的个人博客设计.docx_第13页
第13页 / 共35页
毕业设计(论文)-基于node.js的个人博客设计.docx_第14页
第14页 / 共35页
毕业设计(论文)-基于node.js的个人博客设计.docx_第15页
第15页 / 共35页
毕业设计(论文)-基于node.js的个人博客设计.docx_第16页
第16页 / 共35页
毕业设计(论文)-基于node.js的个人博客设计.docx_第17页
第17页 / 共35页
毕业设计(论文)-基于node.js的个人博客设计.docx_第18页
第18页 / 共35页
毕业设计(论文)-基于node.js的个人博客设计.docx_第19页
第19页 / 共35页
毕业设计(论文)-基于node.js的个人博客设计.docx_第20页
第20页 / 共35页
亲,该文档总共35页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

毕业设计(论文)-基于node.js的个人博客设计.docx

《毕业设计(论文)-基于node.js的个人博客设计.docx》由会员分享,可在线阅读,更多相关《毕业设计(论文)-基于node.js的个人博客设计.docx(35页珍藏版)》请在冰点文库上搜索。

毕业设计(论文)-基于node.js的个人博客设计.docx

嘉应学院

本科毕业论文(设计)

(2015届)

题目:

基于node,js的个人博客

姓名:

学号:

学院:

计算机学院

专业:

计算机科学与技术

指导老师:

嘉应学院

摘要

得益于网络技术的不断发展与普及,人们上网的成本越来越低。

国内社交巨头腾讯、人人网、新浪微博的注册用户数以亿计,可见社交网站对人们吸引力之大。

人们在社交网站分享自己的生活,不仅拉近了人们的距离,也丰富了人们的沟通和交流。

本系统使用node.js+MongoDB作为开发工具、MVC开发模式、Express框架辅助开发。

使用jQuex'y简化JavaScript代码的编写,页面声明为HTML5。

为满足人们对用户体验的追求,系统尽量给用户较大的交互体验。

关键词:

社交网站;互动;分享;

Abstract

Thankstothecontinuousdevelopmentandpopularizationofnetworktechnology,Peoplesurfingontheinterneteasiertoday.DomesticsocialgiantTencent,Renren,SinaWeibonowhavehundredsofmillionsofregisteredusers,itseemslikesocialnetworkingsiteshavebigattractionforpeople.Peoplesharetheirlivesonsocialnetworkingsites,notonlyshortenedthedistancebetweenpeople,butalsoenrichthewaypeoplecommunicateandexchange.

Thesystemusesnode.js+MongoDBasdevelopmenttools,MVCdevelopmentmodel,Expressframeworkdevelopment.UsingjQuerytosimplifytheJavaScriptcode,thepageisdeclaredasHTML5.Tosatisfypeople'spursuitoftheuserexperience,wetryourbesttodeveloptheuserinteractiveexperienceasmuchaspossible.

Keywords:

socialnetworkingsites;interaction;share;

目录

摘要 I

Abstract II

目 录 III

第1章绪论 1

1.1课题背景 1

1.2目的和意义 1

1.3系统开发的相关技术 2

1.3.1JavaScript简介 2

1.3.2Node,js简介 2

1.3.3MongoDB简介 5

1.3.4Express简介 6

1.3.5ejs模板引擎 6

1.3.6MVC设计模式 7

1.4系统运行要求 8

1.4.1硬件要求 8

1.5.2软件要求 9

第2章可行性分析 10

2.1经济可行性 10

3.2操作可行性 10

4.3技术可行性 10

4.1.1系统使用的模式 10

4.1.2系统使用的开发语言 11

4.1.3系统使用的依赖库 12

第3章需求分析 15

3.1系统功能需求分析 15

3.2系统功能模块数据流图 15

第4章总体设计 17

4.1总体设计的任务 17

4.2 系统HIPO图 17

4.3数据库设计概述 17

4.5数据库详细设计 18

第5章详细设计 19

5.1注册模块设计 19

5.2登录模块设计 19

5.3首页模块设计 20

5.4发表文章模块设计 21

5.5文章正文模块设计 22

5.6图片上传模块设计 23

5.7标签文章列表模块设计 24

5.8搜索模块设计 24

第6章系统测试 25

6.1测试方法 25

6.1.1单元测试方法简述 25

6.1.2白盒测试方法简述 25

7.1.3黑盒测试方法简述 25

6.2测试用例 25

6.2.1注册登录模块 25

6.2.2文章上传模块 26

第7章全文总结和展望 28

参考文献 29

致谢 30

第1章绪论

1.1课题背景

1967年,哈佛大学社会心理学家斯坦利米格尔得出的六度分割理论“任何两个陌生人都可以通过“亲友的亲友”建立联系,他们之间所间隔的人不会超过六个”被公认为是构成SNS存在基础的核心理论,诸多文献当中都采用这种看法。

艾瑞公司《中国网络社区研究报告简版(2009)》将社会性网络(社会网络,SocialNetworking:

SN)定义为:

是指个人之间的关系网络,基于社会网络关系系统思想的网站就是社会性网络网站(SNS网站)。

早期社交网络的服务网站呈现为在线社区的形式。

用户多通过聊天室进行交流。

随着Blog等新的网上交际工具的出现用户可以通过网站上建立的个人主页来分享喜爱的信息。

在国外,facebook是覆盖最广的社交网站。

不过有些国家也有自己本土的社交网站,一般是年轻人使用。

在国内,社交网站一般是以基于特定功能。

如:

基于各类生活爱好:

豆瓣;基于白领和学生用户的交流:

人人网;基于信息的快速分享:

新浪微博。

而博客一般用于在网络上出版、发表和张贴个人文章,并与博友之间进行互动。

Node.js是一个划时代的技术,它在原有的Web前端和后端技术的基础上总结并提炼出了许多新的概念和方法,堪称是十多年来Web开发经验的集大成者。

Node.js可以作为服务器向用户提供服务,与PHP、Python、RubyonRails相比,它跳过了Apache、Nginx等HTTP服务器,直接面向前端开发。

Node.js的许多设计理念与经典架构(如LAMP)有着很大的不同,可提供强大的伸缩能力,以适应21世纪10年代以后规模越来越庞大的互联网环境。

1.2目的和意义

随着计算机技术的发展和普及,人们对资源共享的需求也在不断地增强。

Blog是Weblog的简称,它是继E-mail、BBS、ICQ之后出现的第4种新的生活方式、新的工作方式、新的学习方式和新的网络交流方式。

Blog主要应用于3个方面:

一是新的人际交流通道;二是以个人为中心的信息摘选和知识管理平台;三是以个人为中心的传播出版资源库。

Node采用事件驱动、异步编程。

使用Node的开发人员可以根据自己的业务需要来定制相应的回调函数。

同时,这些定义的回调函数是异步执行的。

Node采用了一系列“非阻塞”库来支持事件循环。

其本质就是为文件系统和数据库之类的资源提供接口。

充分利用了系统资源,节约了任务之间的等待时间,节省出来的资源可以为其他任务服务。

在服务器开发过程中,并发数是一个很大的问题,传统阻塞式的函数会导致资源的浪费和延迟。

通过事件机制和非阻塞编程,会大大提高资源利用率。

这是使用Node其意义所在。

服务端JavaScript:

node.js一出现,势必会引发一系列博客应用的开发,本系统便是对此领域的探索。

1.3系统开发的相关技术

本系统在Windows8下,基于NodeO.10.31(具有内建服务器),数据库为MongoDB2.6.9,Express4.10.2框架。

1.3.1JavaScript简介

近年来,JavaScript在业界的地位一直在稳步上升。

一开始它只是被当做检验表单做出花俏效果的"玩具”语言,后来随着DouglasCrockford等人的挖掘以及传道,JavaScript的一些高级模式得以普及。

随着Ajax的到来,JavaScript在Web2.0潮流中起到了核心的作用,各种丰富多彩的Ajax库应运而生,扩充了JavaScript本来不具有的功能,如方便的DOM查询、操作、命名空间、模块空间、模块管理、依赖管理、面向对象编程。

现在使用较多的JavaScript库有:

jQuery,Yahoo!

ULDojo,ExtJS,Mootools,Prototype等。

几乎每个库都有自己成熟的开发社区和一批追随使用者。

另夕卜,浏览器MozillaFirefox,GoogleChrome,AppleSafari的JavaScript解析速度比起以前的老式IE的JavaScript解析器速度提升非常之大。

特别是V8引擎,速度更是遥遥领先。

而在服务器编程领域,大规模并发的需求变得越来越大,JavaScript事件驱动的异步机制使得它非常适合这项任务。

因此,node.js诞生。

虽然目前node.js的生态环境已经逐步完善,与业界的各种工具的对应接口模块也逐渐被完成,不过用node写成的工具目前还比较少,其中一个是Blog系统。

1.3.2Node,js简介

Node.js是什么?

Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎。

目的是为了提供撰写可扩充网络程序,如Web服务。

与一般JavaScript不同的地方,Node.js并不是在Web浏览器上运行,而是一种在服务器上运行的JavaScripto

Node.js旨在解决什么问题?

Node公开宣称的目标是“旨在提供一种简单的构建可伸缩网络程序的方法。

”在当前的服务器程序开发中存在这一个问题:

通常服务器程序开发所使用的语言主要是Java和PHP,在这类语言中,每个连接都会生成一个新的线程,而每个新的线程可能需要配套2MB的内存。

假设在一个拥有8GBRAM的系统上,理论上最大的并发连接数量4000个用户。

随着您的客户群的增长,如果希望您的Web应用程序支持更多的用户,那么就必须添加更多的服务器。

随之而来的问题就是会增加服务器成本、流量成本和人工成本等成本。

除了成本上升外,还有一个潜在的技术问题,即用户可能针对每个请求使用不同的服务器,因此,任何共享资源都必须在所有服务器之间共享。

鉴于上述原因,整个Web应用程序架构(包括流量、处理器速度和内存速度)中的瓶颈是:

服务器能够处理的并发连接的最大数量。

而Node解决这问题的方法是:

更改连接到服务器的方式。

每个连接发射一个在Node引擎的进程中运行的事件,而不是为每个连接生成一个新的线程(并为其分配一些配套内存)。

Node不会使用到锁,不会直接阻塞I/O调用。

Node还支持数万个并发连接。

我们可以通过下面这两张图深入理解一下PHP和Node.js对处理Http请求时的区别:

8

图1-2Node.js的模型

Node.js原创者是RyanLienhartDahl,后由众多开发者推动其发展,现仍处于活跃的开发状态。

Node.js能做的远不止开发一个网站,使用Node.js,可以轻松地开发:

1、具有复杂逻辑的网站;

2、基于社交网络的大规模Web应用;

3、WebSocket服务器;

4、TCP/UDP套接字应用程序;

5、命令行工具;

6、交互式终端程序;

7、带有图形用户界面的本地应用程序;

8、单元测试工具;

9、客户端JavaScript编译器…

Node.js作为一个新兴的语言,有很多吸引人的地方:

1、单线程;

2、非阻塞I/O;

3、V8虚拟机;

4、事件驱动

单线程的优缺点?

Node.js的单线程具有它的优势,但也并非十全十美,在保持单线程模型的同时,它是

如何保证非阻塞的呢?

高性能:

首先,单线程避免了传统PHP那样频繁创建、切换线程的开销,使执行速度更加迅速。

第二,资源占用小,如果有对Node.js的web服务器做过压力测试的朋友可能发现,Node.js在大负荷下对内存占用仍然很低,同样的负载PHP因为一个请求一个线程的模型,将会占用大量的物理内存,很可能会导致服务器因物理内存耗尽而频繁交换,失去响应。

线程安全:

单线程的js还保证了绝对的线程安全,不用担心同一变量同时被多个线程进行读写而造成的程序崩溃。

比如我们之前做的web访问统计,因为单线程的绝对线程安全,所以不可能存在同时对count变量进行读写的情况,我们的统计代码就算是成百的并发用户请求都不会出现问题,相较PHP的那种存文件记录访问,就会面临并发同时写文件的问题。

线程安全的同时也解放了开发人员,免去了多线程编程中忘记对变量加锁或者解锁造成的悲剧。

单线程的异步和非阻塞:

Node.js是单线程的,但是它如何做到I/O的异步和非阻塞的呢?

其实Node.js在底层访问I/O还是多线程的,有兴趣的朋友可以翻看Node.js的fs模块的源码,里面会用到libuv来处理I/O,所以在我们看来Node.js的代码就是非阻塞和异步形式的。

阻塞/非阻塞与异步/同步是两个不同的概念,同步不代表阻塞,但是阻塞肯定就是同步了。

举个现实生活中的例子,我去食堂打饭,我选择了A套餐,然后工作人员帮我去配餐,如果我就站在旁边,等待工作人员给我配餐,这种情况就称之为同步;若工作人员帮我配餐的同时,排在我后面的人就开始点餐,这样整个食堂的点餐服务并没有因为我在等待A套餐而停止,这种情况就称之为非阻塞。

这个例子就简单说明了同步但非阻塞的情况。

再如果我在等待配餐的时候去买饮料,等听到叫号再回去拿套餐,此时我的饮料也已经买好,这样我在等待配餐的同时还执行了买饮料的任务,叫号就等于执行了回调,就是异步非阻塞了。

1.3.3MongoDB简介

MongoDB是一个基于分布式文件存储的数据库。

由C++语言编写。

旨在为WEB应用提供可扩展的高性能数据存储解决方案。

他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。

MongoDB最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

MongoDB的主要功能特性有:

1、面向集合存储,易存储对象类型的数据;

2、模式自由;

3、支持动态查询;

4、支持完全索引,包含内部对象;

5、支持查询;

6、支持复制和故障恢复;

7、使用高效的二进制数据存储,包括大型对象(如视频等);

8、自动处理碎片,以支持云计算层次的扩展性;

9、支持RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言;

10、文件存储格式为BSON(一种JSON的扩展);

11、可通过网络访问。

1.3.4Express简介

Express是一个简洁而灵活的node.jsWeb应用框架,提供一系列强大特性用以创建各种Web应用。

Express是node.js已有的特性进行二次抽象,在它之上扩展了Web应用所需的功能。

1.3.5ejs模板引擎

什么是模板引擎?

模板引擎(TemplateEngine)是一个将页面模板和要显示的数据结合起来生成HTML页面的工具。

模板引擎就相当于MVC中的视图。

模板引擎的功能是将页面模板和要显示的数据结合起来生成HTML页面。

它既可以运行在服务器端又可以运行在客户端,大多数时候它都在服务器端直接被解析为HTML,解析完成后再传输给客户端,因此客户端甚至无法判断页面是否是模板引擎生成的。

有时候模板引擎也可以运行在客户端,即浏览器中,典型的代表就是XSLT,它以XML为输入,在客户端生成HTML页面。

但是由于浏览器兼容性问题,XSLT并不是很流行。

目前的主流还是由服务器运行模板引擎。

在MVC架构中,模板引擎包含在服务器端。

控制器得到用户请求后,从模型获取数据,调用模板引擎。

模板引擎以数据和页面模板为输入,生成HTML页面,然后返回给控制器,由控制器交回客户端。

什么是ejs?

ejs是模板引擎的一种,也是我们这个教程中使用的模板引擎,因为它使用起来十分简单,而且与express集成良好。

ejs用来从JSON数据中生成HTML字符串。

ejs的优点是将会带给你明确、维护性良好的HTML代码结构。

因此,本系统选择使用的模版引擎是ejs。

ejs的标签系统非常简单,它只有以下三种标签:

< %code%>:

JavaScript代码。

< %=code%>:

显示替换过HTML特殊字符的内容。

< %-code%>:

显示原始HTML内容。

1.3.6 MVC设计模式

MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:

模型(Model)、视图(View)和控制器(Controller)o

MVC模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。

除此之外,此模式通过对复杂度的简化,使程序结构更加直观。

软件系统通过对自身基本部分分离的同时也赋予了各个基本部分应有的功能。

1.(控制器Controller)——负责转发请求,对请求进行处理。

2.(视图View)——界面设计人员进行图形界面设计。

3.(模型Model)——程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据库设计(可以实现具体的功能)。

图1-3MVC模型图

MVC的优点:

(1)多个视图能共享一个模型。

如今,同一个Web应用程序会提供多种用户界面,例如用户希望既能够通过浏览器来收发电子邮件,还希望通过手机来访问电子邮箱,这就要求Web网站同时能提供Internet界面和WAP界面。

在MVC设计模式中,模型响应用户请求并返回响应数据,视图负责格式化数据并把它们呈现给用户,业务逻辑和表示层分离,同一个模型可以被不同的视图重用,所以大大提高了代码的可重用性。

(2)控制器是自包含(self-contained)指高独立内聚的对象,与模型和视图保持相对独立,所以可以方便的改变应用程序的数据层和业务规则。

例如,把数据库从MySQL移植到Oracle,或者把RDBMS数据源改变成LDAP数据源,只需改变模型即可。

一旦正确地实现了控制器,不管数据来自数据库还是LDAP服务器,视图都会正确地显示它们。

由于MVC模式的三个模块相互独立,改变其中一个不会影响其他两个,所以依据这种设计思想能构造良好的少互扰性的构件。

(3)控制器提高了应用程序的灵活性和可配置性。

控制器可以用来连接不同的模型和视图去完成用户的需求,也可以构造应用程序提供强有力的手段。

给定一些可重用的模型和视图,控制器可以根据用户的需求选择适当的模型进行处理,然后选择适当的的视图将处理结果显示给用户。

MVC的缺点:

(1)因为MVC将视图和模型分离了。

这就会增加系统的设计结构与其实现方法的复杂性,同时也给系统的调试大大地加大了难度。

(2)加大了系统频繁更新的成本。

虽然是进行了分层操作,但这并不意味着在更新系统模型的时候能完全忽略视图的性质,当具体的一些接口变化的模型需要频繁更新,而使得在视图的处理上变得繁琐,这导致了视图更新落后于模型的变化,错误情况不能正常地显

Zj\O

(3)MVC的三层模式会造成系统的构件较多,也就是会增多系统的代码,因此,必须进行有效的代码管理工作。

1.4系统运行要求

1.5.1硬件要求

CPU:

速度在500MHz或以上。

CPU的处理速度越快,代码跑起来也越流畅。

内存:

最低配置32MB,建议使用64MB以上内存,如果使用Windows2000或WindowsXP建议使用128MB以上内存。

硬盘空间:

至少需要200MB以上的硬盘空间。

1.4.2软件要求

操作系统:

Windows8o

数据库名称:

MongoDB2.6.9。

第2章可行性分析

2.1经济可行性

开发此社交网站的所需的硬件(计算机其其他)由本人提供。

软件环境Node.js开发工具和MongoDB可以从网上下载。

本系统的开发、维护由本人负责,因此没有其他方面的支付,开发成本主要是时间成本。

系统完成后可作为人们分享文章知识文化等使用。

本系统可带来的效益将远远大于本系统的开发成本,所以从经济方面上看,开发此系统是可行的。

3.2操作可行性

此社交网站具备清新友好的用户界面,操作简单,使用方便、快捷,功能丰富,易于维护。

无论用户是网络达人,或者还是一个网络新手,在此网站注册登录后,都可以很快熟悉该网站,并迅速成为分享达人。

从用户操作方面看,此系统的开发是可行的。

2.3技术可行性

2.3.1系统使用的模式

本系统采用的模式为B/S模式。

B/S模式简介

B/S(Browser/Server,浏览器/服务器)模式又称B/S结构。

它是随着Internet技术的兴起,对C/S模式应用的扩展。

在这种结构下,用户工作界面是通过浏览器来实现的。

B/S模式最大的好处是运行维护比较简便,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN,WAN,Intemet/Intranet等)访问和操作共同的数据;最大的缺点是对企业外网环境依赖性太强,由于各种原因引起企业外网中断都会造成系统瘫痪。

B/S结构利用不断成熟和普及的浏览器技术实现原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。

这种结构更成为当今应用软件的首选体系结构,

B/S结构以TCP/IP协议为基础的,企业内的WWW服务器可以接受安装有Web浏览程序的Internet终端的访问,作为最终用户,只要通过Web浏览器,各种处理任务都可以调用系统资源来完成,这样大大简化了客户端,减轻了系统维护与升级的成本和工作量,降低了用户的总体拥有成本。

2.3.2 系统使用的开发语言

本系统展现与布局使用了Node.js、HTML5、CSS3、Jquery。

HTML5简介

HTML即超级文本标记语言,超级文本标记语言是标准通用标记语言下的一个应用,也是一种规范,一种标准,它通过标记符号来标记要显示的网页中的各个部分。

网页文件本身是一种文本文件,通过在文本文件中添加标记符,可以告诉浏览器如何显示其中的内容(如:

文字如何处理,画面如何安排,图片如何显示等)。

浏览器按顺序阅读网页文件,然后根据标记符解释和显示其标记的内容,对书写出错的标记将不指出其错误,且不停止其解释执行过程,编制者只能通过显示效果来分析出错原因和出错部位。

但需要注意的是,对于不同的浏览器,对同一标记符可能会有不完全相同的解释,因而可能会有不同的显小效果。

HTML5是超文本标记语言(HTML)的第五重大修改,这是一项正在进行中的一个草案,目前还没有正式的标准。

HTML5赋予网页更好的意义和结构,支持Html5的浏览器包括Firefox(火狐浏览器),IE9及其更高版本,Chrome(谷歌浏览器),Safari,Opera等;国内的傲游浏览器(Maxthon),以及基于IE或Chromium(Chrome的工程版或称实验版)所推出的360浏览器、搜狗浏览器、QQ浏览器、猎豹浏览器等国产浏览器同样具备支持HTML5的能力。

从2012年12月27日至今,进行了多达近百项的修改,包括HTML和XHTML的标签,相关的API、Canvas等,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 临时分类 > 批量上传

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2