基于node的微博的设计与实现.doc
《基于node的微博的设计与实现.doc》由会员分享,可在线阅读,更多相关《基于node的微博的设计与实现.doc(43页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、摘要千禧年后, Twitter开始进入中国,引发了一代新流行。紧接着微博就凭借它的立即互动特性快速成为新兴的大众信息交流平台。随着微博的热潮,人们由以前的传统媒体纯获取信息的身份转换为信息的发布者和获取者,在传统媒体时期,大多是人民群众只能是被动的获取信息,可以说微博的兴起是人民发声的一大转折点。微博系统作为新媒体的代表,自然也需要先进的解决思路和方案,本文结合当今中小型企业中广泛使用的技术以及实际应用,设计并实现了一个基于Node.js的微博系统。我的毕业设计主要做到了微博的基础和特色功能,比如常规的发布微博、上传图片、回复微博、关注感兴趣的用户、他人来提醒别人看微博,等等。在系统的后台主要
2、采用了koa2的框架进行开发,在数据库上选择了目前中小型企业中使用最广的关系型数据库mysql,使用session完成登录,在前端页面上使用EJS后端模板引擎结合CSS,此外还使用了Redis作为缓存数据库。基于node.js的微博系统具有轻量型且易部署的特点,该系统适合于想要推出自己的微博网站的用户进行使用。本文的主要工作包括:简单的介绍微博的背景和意义以及微博的发展现状以及所使用的相关技术,对系统进行需求分析并根据架构设计进行基于Node.js的微博系统的编码实现和测试。关键词:微博系统 Node.js koa2 mysql session EJS RedisAbstractAfter t
3、he millennium, Twitter began to enter China, triggering a new generation of popularity.Then weibo quickly became an emerging public information exchange platform with its immediate interactive characteristics.With the upsurge of micro-blog, people have changed from the previous status of pure inform
4、ation acquisition by traditional media to that of information publisher and acquirer. In the period of traditional media, most people can only passively obtain information. It can be said that the rise of micro-blog is a turning point for people to make their voices heard.As a representative of new
5、media, microblog system naturally also needs advanced solutions and solutions. In this paper, a microblog system based on node. js is designed and implemented based on the technologies widely used in todays small and medium-sized enterprises and practical applications.My graduation project mainly ac
6、complished the basic and characteristic functions of weibo, such as regular release of weibo, upload pictures, reply to weibo, follow interested users, others to remind others to read weibo, and so on.In the background of the system, koa2 framework is mainly used for development. In the database, my
7、sql, the most widely used relational database in small and medium-sized enterprises, is selected. Session is used to complete login.The micro-blog system based on node.js is lightweight and easy to deploy. The system is suitable for users who want to launch their own micro-blog website.The main work
8、 of this paper includes: briefly introducing the background and significance of weibo, the development status of weibo and the related technologies used, analyzing the requirements of the system, and implementing and testing the node.js -based weibo system according to the architectural design.Keywo
9、rds: weibo system Node.js koa2 mysql session EJS Redis 目录第一章 绪论31.1 研究的背景与意义31.1.1 研究的背景31.1.2 研究的意义31.2 研究现状4第二章 相关技术研究52.1 Node.js简介52.2 koa2框架62.3 mysql关系型数据库62.4 session登录技术72.5 EJS后端模板引擎72.6 Redis缓存7第三章 系统需求分析93.1可行性分析93.1.1 技术可行性93.1.2 经济可行性93.1.2 开发可行性93.2 功能需求分析103.3 非功能性需求分析113.3.1 性能需求分析11
10、3.3.2 安全性需求分析123.4 业务流程分析12第四章 系统设计134.1系统架构设计134.2功能结构设计164.3 系统详细设计164.4功能设计184.5数据库设计254.5.1 数据库的概念设计254.5.2 数据库的逻辑设计26第五章 系统编码实现285.1核心功能模块的实现285.1.1 注册285.1.2 MD5加密295.1.3 schema格式校验295.1.4 上传图片305.1.5 功能315.1.6 加载更多 分页325.1.7 预防XSS攻击325.1.8 广场页(redis缓存)335.2 系统页面展示33第六章 系统测试376.1 安全测试376.2 功能测
11、试38结论39参考文献40致谢41广东东软学院本科毕业设计(论文)第一章 绪论本章主要通过从不同的角度分析微博系统的背景与意义,以及从历史的不同媒体的演变来展示研究现状,从而开启项目的绪论。让大家能够更好的了解微博系统的发展和意义,从而明确本项目的研究意义所在。1.1 研究的背景与意义1.1.1 研究的背景数百年前,我们的祖祖辈辈通常忙于生计,并无多少休闲娱乐的时间,他们的快乐大多来源于田地或者大自然所给予的点点滴滴。所获取到的信息也仅仅局限于大小村落。从报纸到杂志、小说,又发展到广播,在我们的生活中,他们都潜移默化的产生着巨大的影响。它们不仅是人们的娱乐通道,更是官方的舆论宣传工具,民国时期
12、,各个党派、团体都尽量创建广播电台以利用其作为自己的宣传工具。因此广播事业在民国时期客观上具有一定发展1。它的优势十分明显,但劣势也不容忽略,所有的广播内容随着声音消散在空气之中,遇到不感兴趣的内容无法跳过,只能顺序收听,如果语言不通,那么收听会变得十分困难。随着科技的发展,电视逐渐走入大众的视野。它凭借着动态的影像和声音以及丰富而真实的资料,运用手段高超的表现艺术,不仅能够吸引人的眼球,还能够激发人的学习情绪2。我们在不知不觉中已经从听觉转向了视觉,非常自然的开始从屏幕上获取众多的信息。但电视上的信息除非重播,否则也是播过就很难回顾查询的。千禧年后,互联网技术蓬勃发展,日新月异的更新速度把微
13、博客这一即时信息传递的媒体方式推向大众,曾经在报纸或者杂志上能得到的新闻或者优惠信息在微博上一样能获取到。而且人们可以通过进入个人空间浏览到往期的信息,发布在微博上的信息很好的避免了广播或者电视的时效性问题,极大的方便了人们进行信息的回顾与查阅。在传统媒体时期,大多数人民群众只能是信息的获取者,而微博的兴起使这一现象发生了历史性的改变,所有用户都可以成为信息的发布者、传播者以及获取者。1.1.2 研究的意义作为超新媒体的微博拥有其他传统的媒体身上没有的优势:1. 微博散播消息的速度非常迅速。2. 内容短小精悍,你可以在任何地方任何时间立刻将心中所想的写发布在微博上,甚至还可以根据自己的想法插入
14、图片或者自己想提醒的人来看微博。3. 老人小孩上手快,便捷易理解的操作方式。4. 可以及时互动,有别于其他传统媒体的无法互动,微博可以通过迅速通知另一个用户或者回复对象,极大的提高了信息传播的及时性。5. 影响力有时超乎想象,一条微博,有时候石沉大海,但只要被大量转发,会产生超乎想像的影响力,广泛收到社会的关注。可以帮助有需要的人群进行发声以解决许多实际的问题,方便了很多求助无门的人群。6. 交友便利,用户可以极为简单的建立自己的听众群,形成自己的爱好圈子,和同好们一起收获快乐。微博系统作为新媒体的代表,自然也需要先进的解决思路和方案,本文设计并实现了一个基于node.js的微博系统,主要实现
15、发布微博、发布图片、回复微博、用户之间相互关注、关注对象、主页微博内容发布即更新等功能。该系统主要采用了koa2的框架进行开发,在数据库上选择了关系型数据库mysql,使用session完成登录,在前端页面上使用ejs后端模板引擎,使用redis作为缓存数据库。基于node.js的微博系统具有轻量型且易部署的特点,适合于想要推出自己的微博网站的用户进行使用。1.2 研究现状微博作为媒体传播快速发展的一个重要特征,正越来越受到关注3。微博的兴起,改写了传统媒体对突发事件的报道方式,它既是信息的提供者、事件的围观者,又与突发事件的发展过程紧密相关,成为事态发展的影响者、参与者和推动者,在突发事件的
16、报道和舆论传播中扮演着十分重要的角色4。第二章 相关技术研究本章主要介绍了基于node的微博系统所使用的相关技术,包括系统所用的技术、框架、数据库等。2.1 Node.js简介Nodejs是Ryan Dahl在2009年开发的基于 Chrome V8 引擎的 JavaScript 运行环境5,而Chrome V8 引擎执行JavaScript具有异常快的速度以及非常优秀的性能。因为Chrome V8引擎使用的是非常先进的编译技术,他可以使JavaScript这样的脚本语言编写的程序与C等高级语言编写的程序拥有差不多的性能。同时Nodejs使得 JavaScript 焕发新的活力,它可以使JS摇
17、身一变成为服务端语言。Nodejs的编写可以理解为使用JavaScript语言去利用Nodejs的API库进行服务器端开发6。与Python等动态语言相比较,JavaScript的性能突出,且它的匿名函数和闭包都特别适合Nodejs的事件驱动以及异步编程,这也在无形之中提高了Nodejs的性能7。Node的优点:1提供包含各类实用函数的模块。Node.js使用Module模块(类似C语言的类库)划分出不同的功能,每个模块都提供了相关功能的各类实用函数。比如,最常使用的HTTP库,可以直接调用它的函数来快速创建HTTP服务器。2. 支持高并发。传统的Web服务技术是每个请求到来都创建一个新的线程
18、,系统为每个线程分配内存,最终会因为内存不够而透支,假设每创建一个线程系统为它分配2M内存,在一台8G内存的系统上它的最大并发数是40008,这是使用传统Web服务技术的场景。但反观Node.js,就会发现其可扩展性远远超过传统认知。单线程工作的Node.js使用非阻塞I/O调用,这就让他能够承受上万的并发连接!3. 运用事件循环来解决大规模的HTTP请求。Node.js虽然是单线程、单进程的,但它采用了事件驱动机制和异步编程风格(提供的API基本都是异步风格且基于事件的),使用“事件循环”的架构来编写出可扩展性高的服务器9。当出现大规模HTTP请求时,Node.js会产生事件循环队列,剔除掉
19、那些多线程资源的占用以及上下文切换,Node.js可以理解为单纯的为数据库和文件等的资源提供了接口,简化了对慢资源的访问。事件循环和异步提高了Node.js的性能,也降低了开发复杂度。Node.js从发布伊始就受到很多前端工程师的热爱,它是一个用于开发高性能并发程序的框架,这些程序不依赖于主流的多线程方法,而是使用异步I/O和事件驱动的编程模型10。作为前端开发者迈入全栈工程师的重要过程,其应用场景十分广泛,比如:网站的搭建、即时聊天软件、前端构建工具(比如我们熟知的webpack)、操作系统(NodeOS)、跨平台打包工具(比如NW.js)、命令行工具(比如Cordova)、编辑器(VSCo
20、de)等。但同时由于其特殊的机制,Node.js并不适用于解决大规模的计算问题(CPU密集型操作)11。2.2 koa2框架使用过Express的同学应该对koa框架有所耳闻,毕竟他们是“一母同生”,可以说koa是Express的升级版,很多语法上有共同之处,学习过Express再去接触koa将会发现极容易上手,非常友好。而koa又有两个不同的版本,现在来看直接上手koa2是最好的,因为他是基于ES7规则诞生的产物,完全支持Promise的async来进行编码。这无疑是我们丢掉可怕的回调函数的好机会!对比express框架后,最终我决定使用koa2框架。虽然Express的API很简单,但是它
21、始终是“过时”了,毕竟是基于ES5的产物。想要通过它实现异步就只有一条路可走回调。而回调对于编程来说是十分繁琐的,特别是对js的异步编程来说,如果异步嵌套层次过多,那么就会形成可怕的回调地狱。所以从js的异步编程的角度来看,express这个框架就会被排除掉。几年前,express的团队基于express和他的中间件模型又重新开发出koa2这个框架。koa2是原生支持async awit异步编程的。在目前看来(或者未来三五年内),它是支持js异步开发最好的方式。2.3 mysql关系型数据库Mysql应该是所有程序员的入门数据库了。目前企业中应用最广泛也是成本最低的关系型数据库,对于一般的个人
22、使用者和中小型企业来说,Mysql提供的功能已经绰绰有余,而且由于 Mysql是开放源码软件,因此可以大大降低使用总体拥有成本。虽然mongodb也是常用于和node进行搭配的数据库,但mongodb在企业中(特别是中大型企业中)的应用绝对没有mysql这么广泛。而在中大型企业中中,数据库的部分是有专门的团队进行运维的,他们对mysql的熟悉程度和数据管理都远超过mongodb。因此我最终选择了Mysql作为帮我存储数据的好帮手。2.4 session登录技术说到登录自然会联想到cookie,而cookie的不安全自然让我联想到session。session是目前使用最广泛的登录技术,它比较适
23、合用于 “页面统一,有时候可能运用后端模板引擎”这样比较集中的 web sever 的项目。而本次开发的微博页面就比较统一,所以我们会在项目的koa2框架中使用session 的第三方中间件koa-session来记录请求者的身份。koa-session使得我们可以很方便地做验证登录,它内部帮我们做了信息的加密和解密,在浏览器中看到的信息是一串类似uuid的乱码,安全性极好。还有一个比较流行的登录技术jwt,jwt虽然也是我们日常会使用的登录技术,但论广泛程度还是不如session,特别是在web sever系统中。2.5 EJS后端模板引擎我刚开始学习后端的时候就听过一句话“学习后端一定要掌
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 node 设计 实现
限制150内