目錄:php
1、關於nodejscss
Node.js (http://nodejs.org/)是一個基於Chrome JavaScript 運行時創建的一個平臺, 用來方便地搭建快速的, 易於擴展的網絡應用。Node.js 藉助事件驅動, 非阻塞 I/O 模型變得輕量和高效, 很是適合 run across distributed devices 的 data-intensive 的實時應用。html
express(http://expressjs.com/)應用於nodejs的一個很火的web應用框架。node
npm(https://www.npmjs.org/)nodejs包管理器。git
2、nodejs案例開發完整流程github
此案例主要是調用百度地圖api實現一個基於當前座標的周邊生活搜索和交通導航。web
一、用到的開發環境:mongodb
os:windows7(x64)數據庫
軟件:mongodb(v2.6.0)、nodejs(v0.10.26)、npm(v1.2.19)、 express(v3.5.0)express
二、完整流程
2.一、在win7下安裝運行mongodb
2.1.一、下載mongodb
經過網址https://www.mongodb.org/dr//fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-2.6.0.zip/download下載mongodb,而後解壓。
程序文件都在bin目錄中,bin目錄主要包括以下幾個程序:
1. mongo.exe,命令行客戶端工具。
2. mongod.exe,數據庫服務程序。
3. mongodump.exe,數據庫備份程序。
4. mongoexport.exe,數據導出工具。
5. mongofiles.exe,GridFS工具。
6. mongoimport.exe,數據導入工具。
7. mongorestore.exe,數據庫恢復工具。
8. mongos.exe,貌似是性能檢測工具。
2.1.二、設置mongodb目錄和數據文件路徑
將其解壓到 e:\,再重命名爲mongodb,路徑爲e:\mongodb;在e:\mongodb\路徑下新建一個data文件夾,在data文件夾中新建db文件夾,路徑e:\mongodb\data\db。
2.1.三、啓動mongodb
進入cmd提示符控制檯,輸入命令E:\mongodb\bin\mongod.exe --dbpath=e:\mongodb\data\db
2.二、下載安裝nodejs
2.2.一、點擊http://nodejs.org/download/下載.exe的nodejs安裝文件。
2.2.二、在e:\建立文件夾nodejs,而後將下載的node.exe文件放入e:\nodejs\路徑下,並在系統環境變量Path中加入「E:\nodejs;」 便於在任意位置執行node應用。
2.三、下載安裝npm
2.3.一、在https://github.com/isaacs/npm/tags中下載相應的npm zip包
2.3.二、在e:\新建npmjs文件夾,將npm源代碼解壓到e:\npmjs目錄中。
在命令提示符窗口中執行下面的操做,完成npm的安裝:
cd e:\npmjs
node cli.js install -gf
另外:
node cli.js install npm -gf //能夠安裝最新版的NPM
node cli.js install npm@1.0.105 -gf //能夠安裝指定版本的NPM
2.3.三、NPM安裝完成後,將"e:\nodejs\node_modules"加入系統環境變量NODE_PATH中。
2.四、安裝express
在命令提示符窗口中執行 npm install express -g //全局安裝最新版express
2.五、建立nodejs工程目錄並建立一個nodejs示例項目
在e:\下建立nodejsworkspace\project,進入工程目錄使用express建立一個使用默認模板引擎的nodejs項目:
cd e:\nodejsworkspace\projcet
express node-demo
根據提示,下載該項目的依賴包
示例項目創建成功,啓動示例項目
E:\nodejsworkspace\project\node-demo>node app.js
本地的3000端口被打開,經過瀏覽器訪問: localhost:3000。經過node啓動程序,每次代碼修改都須要從新啓動。 有一個工具supervisor,每次修改代碼後會自動重啓,會爲咱們開發省不少的時間。
經過npm安裝supervisor:
npm install supervisor
再次啓動項目:
supervisor app.js
三、示例項目的改進
經過 express -e nodejs-demo 建立支持ejs模板的nodejs項目:
package.json,項目依賴配置及開發者信息
app.js,程序啓動文件
public,靜態文件(css,js,img)
routes,路由文件(MVC中的C,controller)
Views,頁面文件(Ejs模板)
3.二、ejs模板的使用
讓ejs模板文件使用擴展名爲html的文件。
修改app.js文件:
3.一、目錄結構:
node_modules, 存放所本項目的全部依賴庫
app.engine('.html', require('ejs').__express);
app.set('view engine', 'html');
//app.set('view engine', 'ejs');
3.三、而後將項目中view文件夾中的全部以.ejs爲後綴的文件另成爲以.html爲後綴的文件,另存爲時編碼格式必須爲utf-8(不然啓動工程之後,凡是含有中文的頁面都會出現亂碼)!!!
3.四、nodejs項目中的路由功能
3.4.一、在app.js文件中進行工程的路由配置:
相似的語句以下:
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.二、而後打開routes/index.js文件,增長對應的方法:
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來看,能夠這麼理解,當咱們經過瀏覽器訪問http://localhost:3000/時,實際是經過app.js文件中的app.get('/', routes.index)語句定位到了routes/index.js文件中的exports.index語句,此時服務器就向客戶端傳回了views文件夾下的index.html頁面。
3.五、功能模塊的介紹
3.5.一、登陸模塊
登陸模塊中的功能主要是,在數據存儲方面經過mongodb實現本web應用中session數據的存儲。
3.5.二、調用百度地圖api實現當前座標的周邊搜索和公交導航功能
一、百度地圖API(http://developer.baidu.com/map/)
百度地圖JavaScript API是一套由JavaScript語言編寫的應用程序接口,可幫助咱們在網站中構建功能豐富、交互性強的地圖應用。
二、實現該功能的大體流程是經過給定的地址解析地址對應的經緯度座標,而後在經緯度座標出添加覆蓋物類:圖像標註,給圖像標註添加click事件監聽函數,在點擊目標圖像標註時生成當前地址對應的SearchInfoWindow信息窗口工具。然後就能夠經過此信息窗口工具搜索當前地址周邊的生活娛樂場所,同時也提供搜索當前地址到目標地址的交通導航方案。實現此功能時主要用到的百度地圖api以下:
二、JavaScript API>類參考 Class:覆蓋物類/Marker
三、JavaScript API>開發指南>工具>SearchInfoWindow
注:百度地圖API中的工具類已經被製做成開源庫(lib)對外免費開放,可直接訪問JavaScript 開源庫。若功能模塊中使用了工具類,則須要確認已在開發工程中引入lib文件,具體引用方法可查看JavaScript 開源庫提供的示例源文件。注意,開源庫必須與百度地圖JS API同時使用。
3、nodejs相關知識的學習
一、nodejs支持的模板
主要是ejs和jade(調侃下,本田有款車也叫jade,呵呵),其中jade是nodejs的默認模板。這兩個模板我的學習運用的都還不夠深刻,因此只能在網上找找其餘大牛的使用感覺(至於對與錯還須要進一步的驗證):
一個node官方的主流template engine的對比說明:http://paularmstrong.github.io/node-templates/
如何選擇 EJS 和 Jade?:http://www.zhihu.com/question/20355486
二、jade模板的學習
jade模板的語法規範初看起來不大適應,但學習起來仍是比較好上手的。jade官網中提供了調用jade模板的方法和jade的詳細api說明:http://jade-lang.com/api/
三、下面是筆者學習nodejs開發的第一個web應用和網上一些較好的nodejs web應用的地址
3.一、 https://github.com/peiyu420/baidumapAPI