国产精品成人VA在线观看,亚洲日韩在线中文字幕综合,亚洲AV电影天堂男人的天堂,久久人人爽人人爽人人av东京热

News新聞

業(yè)界新聞動態(tài)、技術(shù)前沿
Who are we?

您的位置:首頁      JS/JQ/AJAX      nodejs入門

nodejs入門

標(biāo)簽: 發(fā)布日期:2014-04-25 00:00:00 1008

目錄:

 
一、關(guān)于nodejs
 
  Node.js (http://nodejs.org/)是一個基于Chrome JavaScript 運(yùn)行時建立的一個平臺, 用來方便地搭建快速的, 易于擴(kuò)展的網(wǎng)絡(luò)應(yīng)用。Node.js 借助事件驅(qū)動, 非阻塞 I/O 模型變得輕量和高效, 非常適合 run across distributed devices 的 data-intensive 的實時應(yīng)用。
 
  express(http://expressjs.com/)應(yīng)用于nodejs的一個很火的web應(yīng)用框架。
 
  npm(https://www.npmjs.org/)nodejs包管理器。
 
二、nodejs案例開發(fā)完整流程
 
  此案例主要是調(diào)用百度地圖api實現(xiàn)一個基于當(dāng)前坐標(biāo)的周邊生活搜索和交通導(dǎo)航。
 
1、用到的開發(fā)環(huán)境:
 
os:windows7(x64)
 
軟件:mongodb(v2.6.0)、nodejs(v0.10.26)、npm(v1.2.19)、 express(v3.5.0)
 
2、完整流程
 
 2.1、在win7下安裝運(yùn)行mongodb
 
  2.1.1、css,js,img)
routes,路由文件(MVC中的C,controller)
Views,頁面文件(Ejs模板)
 
3.2、ejs模板的使用
讓ejs模板文件使用擴(kuò)展名為html的文件。
修改app.js文件:
app.engine('.html', require('ejs').__express);
app.set('view engine', 'html');
//app.set('view engine', 'ejs');
 
 3.3、然后將項目中view文件夾中的所有以.ejs為后綴的文件另成為以.html為后綴的文件,另存為時編碼格式必須為utf-8(否則啟動工程以后,凡是含有中文的頁面都會出現(xiàn)亂碼)?。?!
 
 3.4、nodejs項目中的路由功能
 
  3.4.1、在app.js文件中進(jìn)行工程的路由配置:
 
  類似的語句如下:
 
var routes = require('./routes');
 
var user = require('./routes/user');
 
var blog = require('./routes/blog');
 
var interface = require('./routes/interface');
 
app.get('/', routes.index);
 
app.all('/login', notAuthentication);
app.get('/login', routes.login);
 
app.get('/users', user.list);
 
app.get('/blog', blog.index);
app.get('/lbs', interface.index );
app.get('/lbs/k/:keyword', interface.keyword );
app.get('/lbs/c/:coord', interface.coord );
app.get('/lbs/ip',interface.ip);
 
app.get('/lbs/init/lng/:lng/lat/:lat',interface.initl);
 
app.get('/lbs/init/word/:word',interface.initw);
 
注:get為get請求,post為post請求,all為所有針對這個路徑的請求
 
  3.4.2、然后打開routes/index.js文件,增加對應(yīng)的方法:
 
exports.index = function (req, res) {
res.render('index', {
title: 'Index of Baidumap'
});
};
 
 
exports.login = function (req, res) {
if(req.session.uer){
return res.redirect('/home');
}
else{
res.render('login', { title: '用戶登陸'});
}
};
 
  綜合3.4.1和3.4.2來看,可以這么理解,當(dāng)我們通過瀏覽器訪問http://localhost:3000/時,實際是通過app.js文件中的app.get('/', routes.index)語句定位到了routes/index.js文件中的exports.index語句,此時服務(wù)器就向客戶端傳回了views文件夾下的index.html頁面。
 
 3.5、功能模塊的介紹
 
  3.5.1、登錄模塊
 
  登錄模塊中的功能主要是,在數(shù)據(jù)存儲方面通過mongodb實現(xiàn)本web應(yīng)用中session數(shù)據(jù)的存儲。
 
  3.5.2、調(diào)用百度地圖api實現(xiàn)當(dāng)前坐標(biāo)的周邊搜索和公交導(dǎo)航功能
 
  1、百度地圖API(http://developer.baidu.com/map/)
 
  百度地圖JavaScript API是一套由JavaScript語言編寫的應(yīng)用程序接口,可幫助我們在網(wǎng)站中構(gòu)建功能豐富、交互性強(qiáng)的地圖應(yīng)用。
 
  2、實現(xiàn)該功能的大致流程是通過給定的地址解析地址對應(yīng)的經(jīng)緯度坐標(biāo),然后在經(jīng)緯度坐標(biāo)出添加覆蓋物類:圖像標(biāo)注,給圖像標(biāo)注添加click事件監(jiān)聽函數(shù),在點(diǎn)擊目標(biāo)圖像標(biāo)注時生成當(dāng)前地址對應(yīng)的SearchInfoWindow信息窗口工具。而后就可以通過此信息窗口工具搜索當(dāng)前地址周邊的生活娛樂場所,同時也提供搜索當(dāng)前地址到目標(biāo)地址的交通導(dǎo)航方案。實現(xiàn)此功能時主要用到的百度地圖api如下:
 
  1、Web服務(wù)API>Geocoding API  
 
  2、JavaScript API>類參考 Class:覆蓋物類/Marker
 
  3、JavaScript API>開發(fā)指南>工具>SearchInfoWindow
 
注:百度地圖API中的工具類已經(jīng)被制作成開源庫(lib)對外免費(fèi)開放,可直接訪問JavaScript 開源庫。若功能模塊中使用了工具類,則需要確認(rèn)已在開發(fā)工程中引入lib文件,具體引用方法可查看JavaScript 開源庫提供的示例源文件。注意,開源庫必須與百度地圖JS API同時使用。
 
三、nodejs相關(guān)知識的學(xué)習(xí) 
 
1、nodejs支持的模板
 
  主要是ejs和jade(調(diào)侃下,本田有款車也叫jade,呵呵),其中jade是nodejs的默認(rèn)模板。這兩個模板個人學(xué)習(xí)運(yùn)用的都還不夠深入,所以只能在網(wǎng)上找找其他大牛的使用感受(至于對與錯還需要進(jìn)一步的驗證):
 
  一個node官方的主流template engine的對比說明:http://paularmstrong.github.io/node-templates/
 
  如何選擇 EJS 和 Jade?:http://www.zhihu.com/question/20355486
 
2、jade模板的學(xué)習(xí)
 
  jade模板的語法規(guī)范初看起來不大適應(yīng),但學(xué)習(xí)起來還是比較好上手的。jade官網(wǎng)中提供了調(diào)用jade模板的方法和jade的詳細(xì)api說明:http://jade-lang.com/api/
 
3、下面是筆者學(xué)習(xí)nodejs開發(fā)的第一個web應(yīng)用和網(wǎng)上一些較好的nodejs web應(yīng)用的地址