相關(guān)關(guān)鍵詞
關(guān)于我們
最新文章
- 拉動懸浮于頂部的JS控制代碼
- 在JavaScript中構(gòu)建ArrayList示例代碼
- js使用for循環(huán)及if語句判斷多個一樣的name
- JavaScript中判斷原生函數(shù)檢查function是否是原生代碼
- jQuery CSS()方法改變現(xiàn)有的CSS樣式表
- JavaScript中判斷原生函數(shù)檢查function是否是原生代碼
- jQuery動畫高級用法(上)——詳解animation中的.queue()函數(shù)
- python小技巧之批量抓取美女圖片
- JS中offsetTop、clientTop、scrollTop、offsetTop各屬性介紹
- JS獲取瀏覽器窗口大小 獲取屏幕,瀏覽器,網(wǎng)頁高度寬度
nodejs入門
目錄:
一、關(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)用的地址