node.js簡而言之是運行在服務端上JavaScript。
優(yōu)點:事件機制,異步,無阻塞的,輕量高效,單進程線程,占用服務器資源少,高并發(fā)支持好。
適用于消息實時推送,聊天系統(tǒng),社交平臺等高并發(fā),I/O密集型。
缺點:
異步編程的缺點往往就是到處callback,會讓人不知所措;
不適合做企業(yè)級應用開發(fā),特別是復雜業(yè)務邏輯的,代碼不好維護,事務支持不是很好。
事件機制:
參考了(http://www.cnblogs.com/zhongweiv/p/nodejs_module.html#module_exports_diff)這篇文章。
NodeJS被設計用來解決服務端阻塞問題.通過一段簡單的代碼解釋何為阻塞:
Js代碼
1. //根據ID,在數據庫中Persons表中查出Name
2. var name = db.query("select name from persons where id=1");
3. //進程等待數據查詢完畢,然后使用查詢結果.
4. output("name")
node.js如何解決阻塞問題
解決這個問題的辦法是,建立一種事件機制,發(fā)起查詢請求之后,立即將進程交出,當數據返回后觸發(fā)事件,再繼續(xù)處理數據:
Js代碼
1. //定義如何后續(xù)數據處理函數
2. function onDataLoad(name){
3. output("name");
4. }
5. //發(fā)起數據請求,同時指定數據返回后的回調函數
6. db.query("select name from persons where id=1",onDataLoad);
說到底就是一個回調函數的原理。
Express框架建立在node.js內置的http模塊上。Express 支持各種模板引擎,express 命令行可以添加對 Jade,EJS,JSHTML 和 Hogan 的支持。
1.設置中間件來響應http的請求;
2.定義了路由用來執(zhí)行不同的http的請求動作;
3.可以通過向模板傳遞參數動態(tài)渲染html頁面。
通過終端命令行或者是webstorm開發(fā)工具,可以自動生成一個簡單的http的服務器
mongodb是文檔型數據庫,存儲對象及JSON形式的數據,返回一個json對象。
user表:
{‘name’:'Alice',
'age':'18'
}
mongoose是mongodb的建模工具,schema是一個文檔數據結構,在mongoose中是json對象,跟mvc中的model相似。
(上班時間就隨筆寫一下哈~請見諒!寫的好粗略,有空再續(xù)寫。。。(__) -by Alice Ye)