公務(wù)員期刊網(wǎng) 論文中心 正文

Node.js的旅游網(wǎng)站設(shè)計(jì)淺析

前言:想要寫出一篇引人入勝的文章?我們特意為您整理了Node.js的旅游網(wǎng)站設(shè)計(jì)淺析范文,希望能給你帶來靈感和參考,敬請(qǐng)閱讀。

Node.js的旅游網(wǎng)站設(shè)計(jì)淺析

摘要:本文主要結(jié)合node.js技術(shù)對(duì)旅游網(wǎng)站的登錄設(shè)計(jì)功能進(jìn)行了介紹。運(yùn)用Node.js技術(shù),采用Express框架對(duì)功能進(jìn)行構(gòu)建,運(yùn)用Node.js的模板,實(shí)現(xiàn)對(duì)網(wǎng)站的開發(fā)。

關(guān)鍵詞:Node.js;Express框架;網(wǎng)站設(shè)計(jì)

1引言

隨著網(wǎng)站開發(fā)技術(shù)的不斷發(fā)展,尤其是JavaScript應(yīng)用的日趨廣泛,Node.js這一運(yùn)行環(huán)境也開始出現(xiàn)在更多人的視野。如何利用Node.js基于事件的并具有異步非阻塞I/O處理的顯著優(yōu)點(diǎn)進(jìn)行網(wǎng)站的設(shè)計(jì),是一個(gè)值得關(guān)注的問題。

2Node.js特點(diǎn)分析

2.1基于事件的機(jī)制

Node.js本身就是一個(gè)基于事件的框架,而這一特點(diǎn)也使其在眾多的后端JavaScript技術(shù)之中脫穎而出。Node.js中大部分的模塊,都繼承自Event模塊:一個(gè)簡(jiǎn)單的事件監(jiān)聽器模式的實(shí)現(xiàn)。將常見且成熟的技術(shù)引入到后端,實(shí)現(xiàn)和異步非阻塞I/O的配合。

2.2異步非阻塞I/O

異步是與同步想對(duì)應(yīng)的概念,主要針對(duì)C端,區(qū)別在于數(shù)據(jù)訪問的時(shí)候進(jìn)程是否阻塞;阻塞和非阻塞是針對(duì)S端的,區(qū)別在于應(yīng)用程序的調(diào)用是否立即返回。實(shí)際上,異步和非阻塞是一個(gè)意思,表示都能夠達(dá)到并行處理的結(jié)果。異步非阻塞I/O實(shí)現(xiàn)了每個(gè)調(diào)用之間不需要等待,操作結(jié)束后,可以通過回調(diào)進(jìn)行函數(shù)處理。

2.3單線程

Node.js和JavaScript一樣保持了單線程的特點(diǎn)。單線程是指在程序執(zhí)行時(shí),所走路徑必須前一個(gè)執(zhí)行好后一個(gè)才能執(zhí)行。采用單線程就可以不用考慮線程安全、死鎖問題等。

3系統(tǒng)設(shè)計(jì)

旅游網(wǎng)站考慮到用戶的需求,設(shè)計(jì)的功能模塊如下:(1)經(jīng)典路線查詢:網(wǎng)站會(huì)為用戶設(shè)計(jì)旅游路線,并且根據(jù)不同時(shí)期有所調(diào)整。用戶可以根據(jù)已有路線選擇自己的出行,這在一定程度上節(jié)省了用戶的選擇時(shí)間。(2)主題游:主題游包括藝術(shù)之旅,發(fā)現(xiàn)歷史,探險(xiǎn)之旅,發(fā)現(xiàn)美食四部分,用戶可以根據(jù)自己的興趣愛好,選擇合適的出行路線。(3)近期活動(dòng):近期活動(dòng)包括一元抽獎(jiǎng),尋找牡丹,每日推薦,路線投票等。活動(dòng)會(huì)隨著時(shí)間的推移進(jìn)行調(diào)整和更新。(4)游記展示:游記展示這部分主要包括熱門游記、最新游記以及寫游記這三部分。在網(wǎng)站注冊(cè)成功的會(huì)員都享有這一權(quán)利,不僅可以瀏覽其他人的內(nèi)容,也可以在網(wǎng)站上自己的旅游心得。

4實(shí)現(xiàn)過程

Express是目前最流行的基于Node.js的Web開發(fā)框架,簡(jiǎn)介靈活,支持ejs、jade等多種模板,可以快速地搭建一個(gè)具有完整功能的網(wǎng)站。這里以登錄功能為例,介紹Node.js技術(shù)的具體實(shí)現(xiàn)過程:(1)建立工程:1)使用Express命令建立工程;2)根據(jù)提示下載依賴包;3)工程建立成功后,啟動(dòng)服務(wù)。(2)目錄結(jié)構(gòu)³Bin:存放命令行程序;³node_modules:存放所有的項(xiàng)目依賴庫(kù);³public:存放靜態(tài)文件,包括css、js、img等;³routes:存放路由文件;³views:存放頁(yè)面文件(ejs模板);³app.js:程序啟動(dòng)文件;³package.json:項(xiàng)目依賴配置及開發(fā)者信息。(3)Express配置文件:app.js。(4)ejs模板:修改app.js,讓ejs模板文件使用擴(kuò)展名為html的文件。(5)安裝常用庫(kù)及頁(yè)面分離:添加bootstrap和jQuery;設(shè)計(jì)的首頁(yè)index.html分成三個(gè)部分:頭部、內(nèi)容、底部分別對(duì)應(yīng)不同的文件。(6)路由:1)打開app.js文件,增加路由配置;2)打開routes/index.js文件,添加對(duì)應(yīng)方法;3)創(chuàng)建views/login.html和views/home.html兩個(gè)文件;4)修改index.html,增加登錄鏈接;5)路由及頁(yè)面已準(zhǔn)備好后,重啟服務(wù)。(7)session:1)安裝中間件express-session、connect-mongodb和mongodb;2)添加database/settings.js和database/msession.js這兩個(gè)文件;3)修改app.js、index.js文件;4)本地安裝數(shù)據(jù)庫(kù)MongoDB,新建用戶nodedb。重啟服務(wù),訪問成功。(8)頁(yè)面訪問控制及提示:1)修改index.js文件;2)重啟服務(wù),訪問成功;3)添加頁(yè)面提示,修改app.js文件,增加res.locals.message;4)修改index.js文件,增加req.session.error;5)修改login.html,增加<%-message%>;6)重啟服務(wù),訪問成功。

5結(jié)束語(yǔ)

Node.js通過更改連接到服務(wù)器的方式解決了服務(wù)器能夠處理的并發(fā)連接最大數(shù)量這一瓶頸。由于它是基于事件的,不會(huì)出現(xiàn)死鎖現(xiàn)象,也不會(huì)阻塞I/O調(diào)用,因此在處理高并發(fā)場(chǎng)景的性能會(huì)更高。另外,Node.js在分布式應(yīng)用中也有很好的表現(xiàn),如阿里巴巴的數(shù)據(jù)平臺(tái)就是一個(gè)很好的例子。它的NodeFox和eBay的ql.io借用Node.js并行I/O的能力,更高效地使用已有的數(shù)據(jù)。所以,相信用不了多久,Node.js這一技術(shù)一定會(huì)得到更廣泛的應(yīng)用。

參考文獻(xiàn):

[1]許會(huì)元,何利力.NodeJS的異步非阻塞I/O研究[J].工業(yè)控制計(jì)算機(jī),2015(03):127-129.

[2]樸靈.深入淺出Node.js[M].北京:人民郵電出版社,2013.

作者:王惠 單位:沈陽(yáng)建筑大學(xué)