软件工程毕业论文:基于node.js的个人博客.doc

上传人:一*** 文档编号:1183575 上传时间:2018-12-17 格式:DOC 页数:35 大小:2.13MB
下载 相关 举报
软件工程毕业论文:基于node.js的个人博客.doc_第1页
第1页 / 共35页
软件工程毕业论文:基于node.js的个人博客.doc_第2页
第2页 / 共35页
软件工程毕业论文:基于node.js的个人博客.doc_第3页
第3页 / 共35页
软件工程毕业论文:基于node.js的个人博客.doc_第4页
第4页 / 共35页
软件工程毕业论文:基于node.js的个人博客.doc_第5页
第5页 / 共35页
点击查看更多>>
资源描述

1、本科毕业论文(20 届)基于 node.js 的个人博客所在学院 专业班级 计算机科学与技术 学生姓名 学号 指导教师 职称 完成日期 年 月 I摘 要得益于网络技术的不断发展与普及,人们上网的成本越来越低。国内社交巨头腾讯、人人网、新浪微博的注册用户数以亿计,可见社交网站对人们吸引力之大。人们在社交网站分享自己的生活,不仅拉近了人们的距离,也丰富了人们的沟通和交流。本系统使用 node.js+MongoDB 作为开发工具、MVC 开发模式、Express 框架辅助开发。使用 jQuery 简化 JavaScript 代码的编写,页面声明为 HTML5。为满足人们对用户体验的追求,系统尽量给用

2、户较大的交互体验。关键词:社交网站;互动;分享;IIAbstractThanks to the continuous development and popularization of network technology, People surfing on the internet easier today. Domestic social giant Tencent , Renren , Sina Weibo now have hundreds of millions of registered users , it seems like social networking sites

3、have big attraction for people. People share their lives on social networking sites , not only shortened the distance between people , but also enrich the way people communicate and exchange.The system uses node.js+MongoDB as development tools, MVC development model, Express framework development. U

4、sing jQuery to simplify the JavaScript code, the page is declared as HTML5. To satisfy peoples pursuit of the user experience, we try our best to develop the user interactive experience as much as possible. Keywords: social networking sites; interaction; share;III目 录摘 要 .IAbstract.II目 录 .III第 1 章 绪

5、论 .11.1 课题背景 .11.2 目的和意义 .11.3 系统开发的相关技术 .21.3.1 JavaScript 简介 .21.3.2 Node.js 简介 .21.3.3 MongoDB 简介 .51.3.4 Express 简介 .61.3.5 ejs 模板引擎 .61.3.6 MVC 设计模式 .71.4 系统运行要求 .81.4.1 硬件要求 .81.4.2 软件要求 .9第 2 章 可行性分析 .92.1 经济可行性 .102.2 操作可行性 .102.3 技术可行性 .102.3.1 系统使用的模式 .102.3.2 系统使用的开发语言 .112.3.3 系统使用的依赖库 .

6、12第 3 章 需求分析 .143.1 系统功能需求分析 .153.2 系统功能模块数据流图 .15第 4 章 总体设计 .164.1 总体设计的任务 .174.2 系统 HIPO 图 .174.3 数据库设计概述 .174.5 数据库详细设计 .18第 5 章 详细设计 .185.1 注册模块设计 .195.2 登录模块设计 .195.3 首页模块设计 .205.4 发表文章模块设计 .215.5 文章正文模块设计 .225.6 图片上传模块设计 .235.7 标签文章列表模块设计 .245.8 搜索模块设计 .24IV第 6 章 系统测试 .246.1 测试方法 .256.1.1 单元测试

7、方法简述 .256.1.2 白盒测试方法简述 .256.1.3 黑盒测试方法简述 .256.2 测试用例 .256.2.1 注册登录模块 .256.2.2 文章上传模块 .26第 7 章 全文总结和展望 .27参考文献 .28致谢 .291第 1 章 绪 论1.1 课题背景1967 年,哈佛大学社会心理学家斯坦利米格尔得出的六度分割理论“任何两个陌生人都可以通过“亲友的亲友”建立联系,他们之间所间隔的人不会超过六个”被公认为是构成 SNS 存在基础的核心理论,诸多文献当中都采用这种看法。艾瑞公司中国网络社区研究报告简版(2009)将社会性网络(社会网络,Social Networking:SN

8、)定义为:是指个人之间的关系网络,基于社会网络关系系统思想的网站就是社会性网络网站(SNS网站)。早期社交网络的服务网站呈现为在线社区的形式。用户多通过聊天室进行交流。随着 Blog 等新的网上交际工具的出现用户可以通过网站上建立的个人主页来分享喜爱的信息。在国外,facebook 是覆盖最广的社交网站。不过有些国家也有自己本土的社交网站,一般是年轻人使用。在国内,社交网站一般是以基于特定功能。如:基于各类生活爱好:豆瓣;基于白领和学生用户的交流:人人网;基于信息的快速分享:新浪微博。而博客一般用于在网络上出版、发表和张贴个人文章,并与博友之间进行互动。Node.js 是一个划时代的技术,它在

9、原有的 Web 前端和后端技术的基础上总结并提炼出了许多新的概念和方法,堪称是十多年来 Web 开发经验的集大成者。Node.js 可以作为服务器向用户提供服务,与 PHP、Python、 Ruby on Rails 相比,它跳过了 Apache、Nginx 等 HTTP 服务器,直接面向前端开发。Node.js 的许多设计理念与经典架构(如 LAMP)有着很大的不同,可提供强大的伸缩能力,以适应 21 世纪 10 年代以后规模越来越庞大的互联网环境。1.2 目的和意义随着计算机技术的发展和普及,人们对资源共享的需求也在不断地增强。Blog 是Weblog 的简称,它是继 E-mail、BBS

10、、ICQ 之后出现的第 4 种新的生活方式、新的工作方式、新的学习方式和新的网络交流方式。Blog 主要应用于 3 个方面:一是新的人际交流通道;二是以个人为中心的信息摘选和知识管理平台;三是以个人为中心的传播出版资源库。Node 采用事件驱动、异步编程。使用 Node 的开发人员可以根据自己的业务需要来2定制相应的回调函数。同时,这些定义的回调函数是异步执行的。Node 采用了一系列“非阻塞”库来支持事件循环。其本质就是为文件系统和数据库之类的资源提供接口。充分利用了系统资源,节约了任务之间的等待时间,节省出来的资源可以为其他任务服务。在服务器开发过程中,并发数是一个很大的问题,传统阻塞式的

11、函数会导致资源的浪费和延迟。通过事件机制和非阻塞编程,会大大提高资源利用率。这是使用 Node 其意义所在。服务端 JavaScript:node.js 一出现,势必会引发一系列博客应用的开发,本系统便是对此领域的探索。1.3 系统开发的相关技术本系统在 Windows8 下,基于 Node0.10.31(具有内建服务器),数据库为MongoDB2.6.9,Express4.10.2 框架。1.3.1 JavaScript 简介近年来,JavaScript 在业界的地位一直在稳步上升。一开始它只是被当做检验表单做出花俏效果的“玩具”语言,后来随着 Douglas Crockford 等人的挖掘

12、以及传道,JavaScript 的一些高级模式得以普及。随着 Ajax 的到来,JavaScript 在 Web2.0 潮流中起到了核心的作用,各种丰富多彩的 Ajax 库应运而生,扩充了 JavaScript 本来不具有的功能,如方便的 DOM 查询、操作、命名空间、模块空间、模块管理、依赖管理、面向对象编程。现在使用较多的 JavaScript 库有:jQuery,Yahoo !UI ,Dojo,ExtJS,Mootools ,Prototype 等。几乎每个库都有自己成熟的开发社区和一批追随使用者。另外,浏览器 Mozilla Firefox,Google Chrome,Apple Sa

13、fari 的 JavaScript 解析速度比起以前的老式 IE 的 JavaScript 解析器速度提升非常之大。特别是 V8 引擎,速度更是遥遥领先。而在服务器编程领域,大规模并发的需求变得越来越大,JavaScript 事件驱动的异步机制使得它非常适合这项任务。因此,node.js 诞生。虽然目前 node.js 的生态环境已经逐步完善,与业界的各种工具的对应接口模块也逐渐被完成,不过用 node 写成的工具目前还比较少,其中一个是 Blog 系统。31.3.2 Node.js 简介Node.js 是什么?Node.js 是一个事件驱动 I/O 服务端 JavaScript 环境,基于

14、Google 的 V8 引擎。目的是为了提供撰写可扩充网络程序,如 Web 服务。与一般 JavaScript 不同的地方,Node.js并不是在 Web 浏览器上运行,而是一种在服务器上运行的 JavaScript。Node.js 旨在解决什么问题?Node 公开宣称的目标是 “旨在提供一种简单的构建可伸缩网络程序的方法。”在当前的服务器程序开发中存在这一个问题:通常服务器程序开发所使用的语言主要是 Java和 PHP,在这类语言中,每个连接都会生成一个新的线程,而每个新的线程可能需要配套 2MB 的内存。假设在一个拥有 8GBRAM 的系统上,理论上最大的并发连接数量 4000个用户。随着

15、您的客户群的增长,如果希望您的 Web 应用程序支持更多的用户,那么就必须添加更多的服务器。随之而来的问题就是会增加服务器成本、流量成本和人工成本等成本。除了成本上升外,还有一个潜在的技术问题,即用户可能针对每个请求使用不同的服务器,因此,任何共享资源都必须在所有服务器之间共享。鉴于上述原因,整个Web 应用程序架构(包括流量、处理器速度和内存速度)中的瓶颈是:服务器能够处理的并发连接的最大数量。而 Node 解决这问题的方法是:更改连接到服务器的方式。每个连接发射一个在 Node引擎的进程中运行的事件,而不是为每个连接生成一个新的线程(并为其分配一些配套内存)。Node 不会使用到锁,不会直

16、接阻塞 I/O 调用。Node 还支持数万个并发连接。我们可以通过下面这两张图深入理解一下 PHP 和 Node.js 对处理 Http 请求时的区别:4图 1-1 PHP 的模型图 1-2 Node.js 的模型Node.js 原创者是 Ryan Lienhart Dahl,后由众多开发者推动其发展,现仍处于活跃的开发状态。Node.js 能做的远不止开发一个网站,使用 Node.js,可以轻松地开发:51、具有复杂逻辑的网站;2、基于社交网络的大规模 Web 应用;3、Web Socket 服务器;4、TCP/UDP 套接字应用程序;5、命令行工具;6、交互式终端程序;7、带有图形用户界面

17、的本地应用程序;8、单元测试工具;9、客户端 JavaScript 编译器.Node.js 作为一个新兴的语言,有很多吸引人的地方:1、单线程;2、非阻塞 I/O;3、V8 虚拟机;4、事件驱动单线程的优缺点?Node.js 的单线程具有它的优势,但也并非十全十美,在保持单线程模型的同时,它是如何保证非阻塞的呢?高性能:首先,单线程避免了传统 PHP 那样频繁创建、切换线程的开销,使执行速度更加迅速。第二,资源占用小,如果有对 Node.js 的 web 服务器做过压力测试的朋友可能发现,Node.js 在大负荷下对内存占用仍然很低,同样的负载 PHP 因为一个请求一个线程的模型,将会占用大量

18、的物理内存,很可能会导致服务器因物理内存耗尽而频繁交换,失去响应。线程安全:单线程的 js 还保证了绝对的线程安全,不用担心同一变量同时被多个线程进行读写而造成的程序崩溃。比如我们之前做的 web 访问统计,因为单线程的绝对线程安全,所以不可能存在同时对 count 变量进行读写的情况,我们的统计代码就算是成百的并发用户请求都不会出现问题,相较 PHP 的那种存文件记录访问,就会面临并发同时写文件的问题。线程安全的同时也解放了开发人员,免去了多线程编程中忘记对变量加锁或者解锁造成的悲剧。单线程的异步和非阻塞:Node.js 是单线程的,但是它如何做到 I/O 的异步和非阻塞的呢?其实 Node.js 在底层访问 I/O 还是多线程的,有兴趣的朋友可以翻看 Node.js 的 fs 模块的源码,里面会用到

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。