前端(Node.js)(1)-- 初識Node.js

一、認識 Node.js

誕生、發展、應用現狀、生態圈等方面

1.一、

2008年前端

RyanDahl的目標是建立一個易擴展、適用於現代Web應用通訊的服務器平臺java

1.二、國內外的應用狀況

LinkedIn移動版From ROR to Node.js,base on Joyentnode

Paypal From Java to Node.jspython

Twitter的隊列:收集須要保存從Tweets,傳給負責寫入的進程web

知乎的推送mongodb

網易express

阿里編程

各類創業團隊後端

1.三、主要應用領域

RESTFul API瀏覽器

實時通訊:如消息推送等

高併發

I/O阻塞

1.四、社區

生於社區

社區推動

Github

國內

1.五、生態圈

以NPM爲中心

基礎服務提供商的支持

周邊服務提供商的支持

1.六、知名度較高的Node.js開源項目

express(web服務器框架)

PM2(Node原本是單進程,PM2實現和管理多進程)

jade(優秀的模板引擎,還支持其餘一些語言)

coffeeScript(JavaScript的轉義語言(相似於python),相對JS它更加簡潔、具備更好的高毒性,coffeescript的代碼也能夠轉換爲JS的代碼,有不少js代碼和Node.js代碼是用coffeescript完成的)

itom(文本編譯器,主要使用coffeescript完成,他的文件系統子進程管理以及用於調試和測試的服務器部分都是使用Node.js來支撐的)

socket.io是一個實時通訊框架(應用他能夠在Node.js中方便地使用websocket進行通訊)

Pomelo是一個網易公司推出的一個策略遊戲服務器端框架,mongoose是Node.js中使用mongodb的擴展、mocha是功能強大的Nnode.js測試框架

1.七、IO.js

Joyent的目標:兼容性、性能

社區:New features

IO.js: A friendly fork of Node.js with an open governance model

現狀: IO.js的發展速度成爲了有史以來成長最快的開源項目

關係:全面兼容,兩者依然有可能並存

二、Node.js 與 JavaScript 的關係

  誕生、發展、2004年之後的新浪潮、服務器端運行 JavaScript 的解決方案,以及 Node.js 與 JavaScript 之間的關係

2.一、JavaScript的誕生

1995年

JavaScript誕生:Branden Eich,10天時間

JavaScript的目標:業餘人士,瀏覽器上的腳本語言

2.二、ECMAScript與DOM/BOM

1996-08,包含JScript的IE3.0發佈

1996-11,Netscape將JavaScript提交給ECMA

1997-06,ECMA-262發佈

JavaScript = ECMAScript + DOM + BOM

2.三、Gmai與GoogleV8

2004-04-01,Gmail發佈

2005-0208,Google Maps發佈,後又推出街景服務

2008-09-02,Google Chrome發佈,一同面世的還有V8

2.四、新浪潮中的前端框架

DOM操做:jQuery/ExtJS/YUI

結構化前端框架:AngularJS/backbone.js/Ember.js

2.五、在服務器上運行JavaScript的嘗試

Rhino引擎

javax.script API

2.六、Node爲什麼選擇了JavaScript

原生支持異步

歷史包袱

開發門檻

2.七、Node.js與JavaScript的關係 -- 另外一種實現:Fibjs

{fib:JS}

2.八、全棧語言:JavaScript

前端:AngularJS、BACKBONE.JS、emben

後端:Node.js、{fib:JS}

移動端:PhoneGap、ReactNative

三、Node.js 的特色

  優勢與缺點

3.一、部署簡單方便

環境配置簡單,只須要安裝Node.js便可

注重約定

項目所須要擴展、插件、資源相對獨立,不易衝突

3.二、事件驅動

主要觀點:根據當前出現的事件,調動資源進行相關的處理

3.三、異步編程

3.四、異步編程

異步的實現方式

回調函數

事件監聽

訂閱/發佈

3.五、高效與性能

單個操做的性能並不優於其它解決方案

經過優化資源調配和I/O操做來實現高效

其它語言對IO的處理:

PHP:原地等待,開多進程

C/C++:利用線程,程序要本身維護線程和資源的狀態

3.六、單線程與多線程

Google V8 是單線程的,因此與Node.js一樣是單線程的。爲了更好地利用CPU資源,能夠利用子進程和多進程:

子進程:Node.js的child_process模塊

多進程:PM2等等第三方工具

3.七、Node.js的缺點

大量採用匿名函數,使得拋出的異常不易閱讀

try/catch限於同步代碼,使得異常捕獲較爲複雜

單線程:可靠性

不適合CPU密集型的場景

回調的代碼習慣影響閱讀

3.八、你須要着重瞭解如下知識

Node.js的應用領域

Node.js的特色與缺點

相關文章
相關標籤/搜索