標籤:例子 image pre 即時 width color 驅動 回調 需要
1.什麼是node.js
Node.js是一個後端的Javascript運行環境(支援的系統包括*nux、Windows),這意味著你可以編寫系統級或者伺服器端的Javascript代碼。
Node.js 使用事件驅動, 非阻塞I/O 模型而得以輕量和高效,非常適合在分布式裝置上運行資料密集型的即時應用。
關於事件驅動的兩個執行個體:在美國去看醫生,需要填寫大量表格,比如保險、個人資訊之類,傳統的基於線程的系統(thread-based system),接待員叫到你,你需要在前台填寫完成這些表格,你站著填單,
而接待員坐著看你填單。你讓接待員沒辦法接待下一個客戶,除非完成你的業務。想讓這個系統能啟動並執行快一些,只有多加幾個接待員,人力成本需要增加不少。基於事件的系統(event-based system)中,當你到視窗發現需要填寫一些額外的表格而不僅僅是掛個號,接待員把表格和筆給你,告訴你可以找個座位填寫,填完了以後再回去找他。
你回去坐著填表,而接待員開始接待下一個客戶。你沒有阻塞接待員的服務。你填完表格,返回隊伍中,等接待員接待完現在的客戶,你把表格遞給他。如果有什麼問題或者需要填寫額外的表格,他給你一份新的,然後重複這個過程。這個系統已經非常高效了,幾乎大部分醫生都是這麼做的。如果等待的人太多,可以加入額外的接待員進行服務,但是肯定要比基於線程模式的少得多。
第二個例子是快餐店點餐。在基於線程的方式中(thread-based way)你到了櫃檯前,把你的點餐單給收銀員或者給收銀員直接點餐,然後等在那直到你要的食物準備好給你。收銀員不能接待下一個人,除非你拿到食物離開。
想接待更多的客戶,容易!加更多的收銀員!當然,我們知道快餐店其實不是這樣工作的。他們其實就是基於事件驅動方式,這樣收銀員更高效。只要你把點餐單給收銀員,某個人已經開始準備你的食物,而同時收銀員在進行收款,當你付完錢,
你就站在一邊而收銀員已經開始接待下一個客戶。在一些餐館,甚至會給你一個號碼,如果你的食物準備好了,就呼叫你的號碼讓你去櫃檯取。關鍵的一點是,你沒有阻塞下一個客戶的訂餐請求。
你訂餐的食物做好的事件會導致某個人做某個動作(某個服務員喊你的訂單號碼,你聽到你的號碼被喊到去取食物),在編程領域,我們稱這個為回調(callback function)。
2.在Node上啟動並執行JavaScript相比其他後端開發語言有何優勢?
最大的優勢是藉助JavaScript天生的事件驅動機制加V8高效能引擎,使編寫高效能Web服務輕而易舉。
node.js從入門到放棄《什麼是node.js》