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

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

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

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

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

關鍵詞:Node.js;Express框架;網(wǎng)站設計

1引言

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

2Node.js特點分析

2.1基于事件的機制

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

2.2異步非阻塞I/O

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

2.3單線程

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

3系統(tǒng)設計

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

4實現(xiàn)過程

Express是目前最流行的基于Node.js的Web開發(fā)框架,簡介靈活,支持ejs、jade等多種模板,可以快速地搭建一個具有完整功能的網(wǎng)站。這里以登錄功能為例,介紹Node.js技術的具體實現(xiàn)過程:(1)建立工程:1)使用Express命令建立工程;2)根據(jù)提示下載依賴包;3)工程建立成功后,啟動服務。(2)目錄結構³Bin:存放命令行程序;³node_modules:存放所有的項目依賴庫;³public:存放靜態(tài)文件,包括css、js、img等;³routes:存放路由文件;³views:存放頁面文件(ejs模板);³app.js:程序啟動文件;³package.json:項目依賴配置及開發(fā)者信息。(3)Express配置文件:app.js。(4)ejs模板:修改app.js,讓ejs模板文件使用擴展名為html的文件。(5)安裝常用庫及頁面分離:添加bootstrap和jQuery;設計的首頁index.html分成三個部分:頭部、內容、底部分別對應不同的文件。(6)路由:1)打開app.js文件,增加路由配置;2)打開routes/index.js文件,添加對應方法;3)創(chuàng)建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)本地安裝數(shù)據(jù)庫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通過更改連接到服務器的方式解決了服務器能夠處理的并發(fā)連接最大數(shù)量這一瓶頸。由于它是基于事件的,不會出現(xiàn)死鎖現(xiàn)象,也不會阻塞I/O調用,因此在處理高并發(fā)場景的性能會更高。另外,Node.js在分布式應用中也有很好的表現(xiàn),如阿里巴巴的數(shù)據(jù)平臺就是一個很好的例子。它的NodeFox和eBay的ql.io借用Node.js并行I/O的能力,更高效地使用已有的數(shù)據(jù)。所以,相信用不了多久,Node.js這一技術一定會得到更廣泛的應用。

參考文獻:

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

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

作者:王惠 單位:沈陽建筑大學