前言:想要寫出一篇引人入勝的文章?我們特意為您整理了Node.js的旅游網(wǎng)站設(shè)計淺析范文,希望能給你帶來靈感和參考,敬請閱讀。
摘要:本文主要結(jié)合node.js技術(shù)對旅游網(wǎng)站的登錄設(shè)計功能進(jìn)行了介紹。運用Node.js技術(shù),采用Express框架對功能進(jìn)行構(gòu)建,運用Node.js的模板,實現(xiàn)對網(wǎng)站的開發(fā)。
關(guān)鍵詞:Node.js;Express框架;網(wǎng)站設(shè)計
1引言
隨著網(wǎng)站開發(fā)技術(shù)的不斷發(fā)展,尤其是JavaScript應(yīng)用的日趨廣泛,Node.js這一運行環(huán)境也開始出現(xiàn)在更多人的視野。如何利用Node.js基于事件的并具有異步非阻塞I/O處理的顯著優(yōu)點進(jìn)行網(wǎng)站的設(shè)計,是一個值得關(guān)注的問題。
2Node.js特點分析
2.1基于事件的機制
Node.js本身就是一個基于事件的框架,而這一特點也使其在眾多的后端JavaScript技術(shù)之中脫穎而出。Node.js中大部分的模塊,都繼承自Event模塊:一個簡單的事件監(jiān)聽器模式的實現(xiàn)。將常見且成熟的技術(shù)引入到后端,實現(xiàn)和異步非阻塞I/O的配合。
2.2異步非阻塞I/O
異步是與同步想對應(yīng)的概念,主要針對C端,區(qū)別在于數(shù)據(jù)訪問的時候進(jìn)程是否阻塞;阻塞和非阻塞是針對S端的,區(qū)別在于應(yīng)用程序的調(diào)用是否立即返回。實際上,異步和非阻塞是一個意思,表示都能夠達(dá)到并行處理的結(jié)果。異步非阻塞I/O實現(xiàn)了每個調(diào)用之間不需要等待,操作結(jié)束后,可以通過回調(diào)進(jìn)行函數(shù)處理。
2.3單線程
Node.js和JavaScript一樣保持了單線程的特點。單線程是指在程序執(zhí)行時,所走路徑必須前一個執(zhí)行好后一個才能執(zhí)行。采用單線程就可以不用考慮線程安全、死鎖問題等。
3系統(tǒng)設(shè)計
旅游網(wǎng)站考慮到用戶的需求,設(shè)計的功能模塊如下:(1)經(jīng)典路線查詢:網(wǎng)站會為用戶設(shè)計旅游路線,并且根據(jù)不同時期有所調(diào)整。用戶可以根據(jù)已有路線選擇自己的出行,這在一定程度上節(jié)省了用戶的選擇時間。(2)主題游:主題游包括藝術(shù)之旅,發(fā)現(xiàn)歷史,探險之旅,發(fā)現(xiàn)美食四部分,用戶可以根據(jù)自己的興趣愛好,選擇合適的出行路線。(3)近期活動:近期活動包括一元抽獎,尋找牡丹,每日推薦,路線投票等?;顒訒S著時間的推移進(jìn)行調(diào)整和更新。(4)游記展示:游記展示這部分主要包括熱門游記、最新游記以及寫游記這三部分。在網(wǎng)站注冊成功的會員都享有這一權(quán)利,不僅可以瀏覽其他人的內(nèi)容,也可以在網(wǎng)站上自己的旅游心得。
4實現(xiàn)過程
Express是目前最流行的基于Node.js的Web開發(fā)框架,簡介靈活,支持ejs、jade等多種模板,可以快速地搭建一個具有完整功能的網(wǎng)站。這里以登錄功能為例,介紹Node.js技術(shù)的具體實現(xiàn)過程:(1)建立工程:1)使用Express命令建立工程;2)根據(jù)提示下載依賴包;3)工程建立成功后,啟動服務(wù)。(2)目錄結(jié)構(gòu)³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;設(shè)計的首頁index.html分成三個部分:頭部、內(nèi)容、底部分別對應(yīng)不同的文件。(6)路由:1)打開app.js文件,增加路由配置;2)打開routes/index.js文件,添加對應(yīng)方法;3)創(chuàng)建views/login.html和views/home.html兩個文件;4)修改index.html,增加登錄鏈接;5)路由及頁面已準(zhǔn)備好后,重啟服務(wù)。(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。重啟服務(wù),訪問成功。(8)頁面訪問控制及提示:1)修改index.js文件;2)重啟服務(wù),訪問成功;3)添加頁面提示,修改app.js文件,增加res.locals.message;4)修改index.js文件,增加req.session.error;5)修改login.html,增加<%-message%>;6)重啟服務(wù),訪問成功。
5結(jié)束語
Node.js通過更改連接到服務(wù)器的方式解決了服務(wù)器能夠處理的并發(fā)連接最大數(shù)量這一瓶頸。由于它是基于事件的,不會出現(xiàn)死鎖現(xiàn)象,也不會阻塞I/O調(diào)用,因此在處理高并發(fā)場景的性能會更高。另外,Node.js在分布式應(yīng)用中也有很好的表現(xiàn),如阿里巴巴的數(shù)據(jù)平臺就是一個很好的例子。它的NodeFox和eBay的ql.io借用Node.js并行I/O的能力,更高效地使用已有的數(shù)據(jù)。所以,相信用不了多久,Node.js這一技術(shù)一定會得到更廣泛的應(yīng)用。
參考文獻(xiàn):
[1]許會元,何利力.NodeJS的異步非阻塞I/O研究[J].工業(yè)控制計算機,2015(03):127-129.
[2]樸靈.深入淺出Node.js[M].北京:人民郵電出版社,2013.
作者:王惠 單位:沈陽建筑大學(xué)