本書致力於教會你如何用Node.js來開發應用,過程中會傳授你所有所需的“高級”JavaScript知識。本書絕不是一本“Hello World”的教程。
你正在閱讀的已經是本書的最終版。因此,只有當進行錯誤更正以及針對新版本Node.js的改動進行對應的修正時,才會進行更新。
本書中的代碼案例都在Node.js 0.6.11版本中測試過,可以正確工作。
本書最適合與我有相似技術背景的讀者: 至少對一門諸如Ruby、Python、PHP或者Java這樣面向對象的語言有一定的經驗;對JavaScript處於初學階段,並且完全是一個Node.js的新手。
這裡指的適合對其他編程語言有一定經驗的開發者,意思是說,本書不會對諸如數據類型、變量、控制結構等等之類非常基礎的概念作介紹。要讀懂本書,這些基礎的概念我都默認你已經會了。
然而,本書還是會對JavaScript中的函數和對象作詳細介紹,因為它們與其他同類編程語言中的函數和對象有很大的不同。
讀完本書之後,你將完成一個完整的web應用,該應用允許用戶浏覽頁面以及上傳文件。
當然了,應用本身並沒有什麼了不起的,相比為了實現該功能書寫的代碼本身,我們更關注的是如何創建一個框架來對我們應用的不同模塊進行干淨地剝離。 是不是很玄乎?稍後你就明白了。
本書先從介紹在Node.js環境中進行JavaScript開發和在浏覽器環境中進行JavaScript開發的差異開始。
緊接著,會帶領大家完成一個最傳統的“Hello World”應用,這也是最基礎的Node.js應用。
最後,會和大家討論如何設計一個“真正”完整的應用,剖析要完成該應用需要實現的不同模塊,並一步一步介紹如何來實現這些模塊。
可以確保的是,在這過程中,大家會學到JavaScript中一些高級的概念、如何使用它們以及為什麼使用這些概念就可以實現而其他編程語言中同類的概念就無法實現。
該應用所有的源代碼都可以通過 本書Github代碼倉庫.
目錄拋開技術,我們先來聊聊你以及你和JavaScript的關系。本章的主要目的是想讓你看看,對你而言是否有必要繼續閱讀後續章節的內容。
如果你和我一樣,那麼你很早就開始利用HTML進行“開發”,正因如此,你接觸到了這個叫JavaScript有趣的東西,而對於JavaScript,你只會基本的操作——為web頁面添加交互。
而你真正想要的是“干貨”,你想要知道如何構建復雜的web站點 —— 於是,你學習了一種諸如PHP、Ruby、Java這樣的編程語言,並開始書寫“後端”代碼。
與此同時,你還始終關注著JavaScript,隨著通過一些對jQuery,Prototype之類技術的介紹,你慢慢了解到了很多JavaScript中的進階技能,同時也感受到了JavaScript絕非僅僅是window.open() 那麼簡單。 .
不過,這些畢竟都是前端技術,盡管當想要增強頁面的時候,使用jQuery總讓你覺得很爽,但到最後,你頂多是個JavaScript用戶,而非JavaScript開發者。
然後,出現了Node.js,服務端的JavaScript,這有多酷啊?
於是,你覺得是時候該重新拾起既熟悉又陌生的JavaScript了。但是別急,寫Node.js應用是一件事情;理解為什麼它們要以它們書寫的這種方式來書寫則意味著——你要懂JavaScript。這次是玩真的了。
問題來了: 由於JavaScript真正意義上以兩種,甚至可以說是三種形態存在(從中世紀90年代的作為對DHTML進行增強的小玩具,到像jQuery那樣嚴格意義上的前端技術,一直到現在的服務端技術),因此,很難找到一個“正確”的方式來學習JavaScript,使得讓你書寫Node.js應用的時候感覺自己是在真正開發它而不僅僅是使用它。
因為這就是關鍵: 你本身已經是個有經驗的開發者,你不想通過到處尋找各種解決方案(其中可能還有不正確的)來學習新的技術,你要確保自己是通過正確的方式來學習這項技術。
當然了,外面不乏很優秀的學習JavaScript的文章。但是,有的時候光靠那些文章是遠遠不夠的。你需要的是指導。
本書的目標就是給你提供指導。
業界有非常優秀的JavaScript程序員。而我並非其中一員。
我就是上一節中描述的那個我。我熟悉如何開發後端web應用,但是對“真正”的JavaScript以及Node.js,我都只是新手。我也只是最近學習了一些JavaScript的高級概念,並沒有實踐經驗。
因此,本書並不是一本“從入門到精通”的書,更像是一本“從初級入門到高級入門”的書。
如果成功的話,那麼本書就是我當初開始學習Node.js最希望擁有的教程。
JavaScript最早是運行在浏覽器中,然而浏覽器只是提供了一個上下文,它定義了使用JavaScript可以做什麼,但並沒有“說”太多關於JavaScript語言本身可以做什麼。事實上,JavaScript是一門“完整”的語言: 它可以使用在不同的上下文中,其能力與其他同類語言相比有過之而無不及。
Node.js事實上就是另外一種上下文,它允許在後端(脫離浏覽器環境)運行JavaScript代碼。
要實現在後台運行JavaScript代碼,代碼需要先被解釋然後正確的執行。Node.js的原理正是如此,它使用了Google的V8虛擬機(Google的Chrome浏覽器使用的JavaScript執行環境),來解釋和執行JavaScript代碼。
除此之外,伴隨著Node.js的還有許多有用的模塊,它們可以簡化很多重復的勞作,比如向終端輸出字符串。
因此,Node.js事實上既是一個運行時環境,同時又是一個庫。
要使用Node.js,首先需要進行安裝。關於如何安裝Node.js,這裡就不贅述了,可以直接參考官方的安裝指南。安裝完成後,繼續回來閱讀本書下面的內容。
好了,“廢話”不多說了,馬上開始我們第一個Node.js應用:“Hello World”。
打開你最喜歡的編輯器,創建一個helloworld.js文件。我們要做就是向STDOUT輸出“Hello World”,如下是實現該功能的代碼:
console.log("Hello World");
保存該文件,並通過Node.js來執行:
node helloworld.js
正常的話,就會在終端輸出Hello World 。
好吧,我承認這個應用是有點無趣,那麼下面我們就來點“干貨”。