公务员期刊网 论文中心 正文

Node.js的旅游网站设计浅析

Node.js的旅游网站设计浅析

摘要:本文主要结合Node.js技术对旅游网站的登录设计功能进行了介绍。运用Node.js技术,采用Express框架对功能进行构建,运用Node.js的模板,实现对网站的开发。

关键词:Node.js;Express框架;网站设计

1引言

随着网站开发技术的不断发展,尤其是JavaScript应用的日趋广泛,Node.js这一运行环境也开始出现在更多人的视野。如何利用Node.js基于事件的并具有异步非阻塞I/O处理的显著优点进行网站的设计,是一个值得关注的问题。

2Node.js特点分析

2.1基于事件的机制

Node.js本身就是一个基于事件的框架,而这一特点也使其在众多的后端JavaScript技术之中脱颖而出。Node.js中大部分的模块,都继承自Event模块:一个简单的事件监听器模式的实现。将常见且成熟的技术引入到后端,实现和异步非阻塞I/O的配合。

2.2异步非阻塞I/O

异步是与同步想对应的概念,主要针对C端,区别在于数据访问的时候进程是否阻塞;阻塞和非阻塞是针对S端的,区别在于应用程序的调用是否立即返回。实际上,异步和非阻塞是一个意思,表示都能够达到并行处理的结果。异步非阻塞I/O实现了每个调用之间不需要等待,操作结束后,可以通过回调进行函数处理。

2.3单线程

Node.js和JavaScript一样保持了单线程的特点。单线程是指在程序执行时,所走路径必须前一个执行好后一个才能执行。采用单线程就可以不用考虑线程安全、死锁问题等。

3系统设计

旅游网站考虑到用户的需求,设计的功能模块如下:(1)经典路线查询:网站会为用户设计旅游路线,并且根据不同时期有所调整。用户可以根据已有路线选择自己的出行,这在一定程度上节省了用户的选择时间。(2)主题游:主题游包括艺术之旅,发现历史,探险之旅,发现美食四部分,用户可以根据自己的兴趣爱好,选择合适的出行路线。(3)近期活动:近期活动包括一元抽奖,寻找牡丹,每日推荐,路线投票等。活动会随着时间的推移进行调整和更新。(4)游记展示:游记展示这部分主要包括热门游记、最新游记以及写游记这三部分。在网站注册成功的会员都享有这一权利,不仅可以浏览其他人的内容,也可以在网站上自己的旅游心得。

4实现过程

Express是目前最流行的基于Node.js的Web开发框架,简介灵活,支持ejs、jade等多种模板,可以快速地搭建一个具有完整功能的网站。这里以登录功能为例,介绍Node.js技术的具体实现过程:(1)建立工程:1)使用Express命令建立工程;2)根据提示下载依赖包;3)工程建立成功后,启动服务。(2)目录结构³Bin:存放命令行程序;³node_modules:存放所有的项目依赖库;³public:存放静态文件,包括css、js、img等;³routes:存放路由文件;³views:存放页面文件(ejs模板);³app.js:程序启动文件;³package.json:项目依赖配置及开发者信息。(3)Express配置文件:app.js。(4)ejs模板:修改app.js,让ejs模板文件使用扩展名为html的文件。(5)安装常用库及页面分离:添加bootstrap和jQuery;设计的首页index.html分成三个部分:头部、内容、底部分别对应不同的文件。(6)路由:1)打开app.js文件,增加路由配置;2)打开routes/index.js文件,添加对应方法;3)创建views/login.html和views/home.html两个文件;4)修改index.html,增加登录链接;5)路由及页面已准备好后,重启服务。(7)session:1)安装中间件express-session、connect-mongodb和mongodb;2)添加database/settings.js和database/msession.js这两个文件;3)修改app.js、index.js文件;4)本地安装数据库MongoDB,新建用户nodedb。重启服务,访问成功。(8)页面访问控制及提示:1)修改index.js文件;2)重启服务,访问成功;3)添加页面提示,修改app.js文件,增加res.locals.message;4)修改index.js文件,增加req.session.error;5)修改login.html,增加<%-message%>;6)重启服务,访问成功。

5结束语

Node.js通过更改连接到服务器的方式解决了服务器能够处理的并发连接最大数量这一瓶颈。由于它是基于事件的,不会出现死锁现象,也不会阻塞I/O调用,因此在处理高并发场景的性能会更高。另外,Node.js在分布式应用中也有很好的表现,如阿里巴巴的数据平台就是一个很好的例子。它的NodeFox和eBay的ql.io借用Node.js并行I/O的能力,更高效地使用已有的数据。所以,相信用不了多久,Node.js这一技术一定会得到更广泛的应用。

参考文献:

[1]许会元,何利力.NodeJS的异步非阻塞I/O研究[J].工业控制计算机,2015(03):127-129.

[2]朴灵.深入浅出Node.js[M].北京:人民邮电出版社,2013.

作者:王惠 单位:沈阳建筑大学