1使用JavaScript運行于服務端的平臺上,自然繼承了JavaScript語言的一些特性;2Node.js基于單線程、基于非阻塞I/O模型實現(xiàn);3適合于數(shù)據(jù)密集型應用,不適用于計算密集型類的應用(如算法等);4通過使用回調函數(shù),來避免同步地等待I/O操作完成;5Node.js非核心模塊非常多,質量可能參差不齊(使用別人貢獻的模塊,要有承擔風險的準備);6因為簡單,開發(fā)Node.js應用程序效率很高;7調試相對困難,調試工具可能沒有其他一些比較成熟的語言(如Java、C++等)的好用;8Node.js基于事件驅動架構,events模塊是Node.js最核心的模塊。
1使用JavaScript運行于服務端的平臺上,自然繼承了JavaScript語言的一些特性;
2Node.js基于單線程、基于非阻塞I/O模型實現(xiàn);
3適合于數(shù)據(jù)密集型應用,不適用于計算密集型類的應用(如算法等);
4通過使用回調函數(shù),來避免同步地等待I/O操作完成;
5Node.js非核心模塊非常多,質量可能參差不齊(使用別人貢獻的模塊,要有承擔風險的準備);
6因為簡單,開發(fā)Node.js應用程序效率很高;
7調試相對困難,調試工具可能沒有其他一些比較成熟的語言(如Java、C++等)的好用;
8Node.js基于事件驅動架構,events模塊是Node.js最核心的模塊。
node.js和apache沒什么聯(lián)系吧,只是php通常需要apache作為網頁服務器,而node.js本身就自帶一個web服務器。
通俗的來說,node.js就是一門”用js語法的服務器開發(fā)語言“,所謂服務端開發(fā)語言,php,java,c#都是,他們各自有各自的語法。而javascript通常是一門運行在瀏覽器上的前端開發(fā)語言。
node.js的語法上的特別之處在于,他沒有自己再獨創(chuàng)一門語言和語法,比如”aava,bava,cava“之類的。他用前端語言javascript包裝了底層實現(xiàn),使你能夠用javascript的語法做服務器端的開發(fā)。也就是說,你只要熟悉javascript,你就可以像使用php,java那樣編寫后臺代碼了。
至于node.js通常適用于高并發(fā)的場景,因為它沒有多線程的概念,比如你做一個寫文件的操作,當一個請求執(zhí)行到耗時間的寫文件這一步的時候,進程會將這個操作交給后臺執(zhí)行,本身繼續(xù)執(zhí)行別的請求。這樣的好處在于少了創(chuàng)建銷毀線程的開銷,使主進程永遠處于滿載狀態(tài)。
拋開技術,我們先來聊聊你以及你和JavaScript的關系。
本章的主要目的是想讓你看看,對你而言是否有必要繼續(xù)閱讀后續(xù)章節(jié)的內容。如果你和我一樣,那么你很早就開始利用HTML進行“開發(fā)”,正因如此,你接觸到了這個叫JavaScript有趣的東西,而對于JavaScript,你只會基本的操作——為web頁面添加交互。
而你真正想要的是“干貨”,你想要知道如何構建復雜的web站點 —— 于是,你學習了一種諸如PHP、Ruby、Java這樣的編程語言,并開始書寫“后端”代碼。與此同時,你還始終關注著JavaScript,隨著通過一些對jQuery,Prototype之類技術的介紹,你慢慢了解到了很多JavaScript中的進階技能,同時也感受到了JavaScript絕非僅僅是window.open() 那么簡單。
.不過,這些畢竟都是前端技術,盡管當想要增強頁面的時候,使用jQuery總讓你覺得很爽,但到最后,你頂多是個JavaScript用戶,而非JavaScript開發(fā)者。然后,出現(xiàn)了Node.js,服務端的JavaScript,這有多酷?。坑谑?,你覺得是時候該重新拾起既熟悉又陌生的JavaScript了。
但是別急,寫node.js應用是一件事情;理解為什么它們要以它們書寫的這種方式來書寫則意味著——你要懂JavaScript。這次是玩真的了。
問題來了: 由于JavaScript真正意義上以兩種,甚至可以說是三種形態(tài)存在(從中世紀90年代的作為對DHTML進行增強的小玩具,到像jQuery那樣嚴格意義上的前端技術,一直到現(xiàn)在的服務端技術),因此,很難找到一個“正確”的方式來學習JavaScript,使得讓你書寫Node.js應用的時候感覺自己是在真正開發(fā)它而不僅僅是使用它。因為這就是關鍵: 你本身已經是個有經驗的開發(fā)者,你不想通過到處尋找各種解決方案(其中可能還有不正確的)來學習新的技術,你要確保自己是通過正確的方式來學習這項技術。
當然了,外面不乏很優(yōu)秀的學習JavaScript的文章。但是,有的時候光靠那些文章是遠遠不夠的。
你需要的是指導。本書的目標就是給你提供指導。
不知道題主所說的 JavaScript 基礎具體有多少。JavaScript 本身是一門很完備(雖然坑也不少)的編程語言,有不少人隨便用用 jQuery 就說自己有 JavaScript 基礎,而對 JavaScript 的閉包,內存管理,原型鏈等特征的了解很少。
如果你真的對 JavaScript 這門語言很了解的話,那么可以給你省一些時間——你不用再去學習 JavaScript 的語法了,Node.js 運行的是標準的 JavaScript.
不然的話,你還是需要學習一下 JavaScript 的語法,因為相比之下,后端的代碼(和簡單的前端頁面相比)邏輯更復雜,組織起來需要用到 JavaScript 的更多高級特征。
然后,Node.js 只是一個 JavaScript 的運行環(huán)境(或者說是一組庫), 為標準 JavaScript 補充了有關異步 IO, 即讀寫網絡和文件的功能。
一個庫嘛,無非是調調 API 什么的,除了略反人類的事件回調之外,和其他后端語言(PHP, Python)也差不了多少。
如果你已經了解過其他后端語言的話,會覺得不過是換湯不換藥,就那么幾個關鍵點,用 JavaScript 的語法重寫一遍,用事件回調的思想重構一下而已。
但如果你對后端語言的工作原理完全沒了解的話,你還需要了解一下 HTTP 協(xié)議,了解一下后端是如何處理一個請求的。
總之,學習 Node.js 我覺得分為三個部分:
JavaScript 語法——如果已經有 JavaScript 基礎的話會比較容易,這部分推薦『JavaScript 語言精粹』這本書
一般后端語言的原理——如果學習過其他后端語言會比較容易
Node.js 特有的部分:事件回調思想
Node.js是一個Javascript運行環(huán)境(runtime environment),發(fā)布于2009年5月,由Ryan Dahl開發(fā),實質是對Chrome V8引擎進行了封裝。
Node.js 不是一個 JavaScript 框架,不同于CakePHP、Django、Rails。Node.js 更不是瀏覽器端的庫,不能與 jQuery、ExtJS 相提并論。
Node.js 是一個讓 JavaScript 運行在服務端的開發(fā)平臺,它讓 JavaScript 成為與PHP、Python、Perl、Ruby 等服務端語言平起平坐的腳本語言。 [1]。
暑假過完就大三了,以后準備的是找前端的工作,所以很有必要了解前端行業(yè)目前的狀況。
下面是我從大一進校進入一個團隊初識前端到現(xiàn)在基本的過程的:
(我本身的專業(yè)是軟件工程(數(shù)字媒體方向))
大一:
從在基本的html+css,css+div布局開始,然后學習基礎的js和DOM操作、ajax,jquery框架,寫一些例如圖片切換的小demo。
學習過的書籍:《css權威指南》、《javascriptDOM編程藝術》(算入門的看)
業(yè)課程:c++(面向過程+面向對象,學了一年,了解基本的寫法,但是從來沒有實踐過任何東西)
大二(上):
開始了解瀏覽器兼容性的寫法,過程中也做過幾個網站,包括兼容ie6的校園網站,基本上這個時候也在開始報外面的一些工作室切圖寫網頁,寒假的時候學了學php基礎。
學習過的書籍:《精彩絕倫的css》、《css禪意花園》(這個時候的方向基本上就是學習各種布局和網站兼容)
專業(yè)課程:數(shù)據(jù)結構、數(shù)據(jù)庫(前半學期,講了一堆理論,聽的比較昏,后半學期才開始學習sql語句,所以基本上學完這課我就只會一些基礎的sql語句)、計算機網絡(我挺感興趣的一門課,奈何老師普通話不給力,全是自學的)
大二(下):
這
個時候自己就開始覺得要找準以后的方向了,然后就決定做前端開發(fā)了,咨詢過一些在BAT工作和實習的學長們,感覺前端還是比較缺人的,所以就準備等大三結
束就開始參加實習生招聘,然后基本上學長們給的就是做前端js基礎很重要,所以這個時候我又開始慢慢的進一步開始學習js了、逛一些論壇,看一些js的面
試題、然后這個時候也在接觸html5 canvas、svg、node.js
了解了模塊化、移動端開發(fā)這些算比較時髦的詞兒,當然都是止步于照著文檔寫個demo的程度
學習過的書籍:《javascript高級
程序設計》(第一遍看完)、《javascript語言精粹》(本來準備是再看一遍紅皮書的,后來一學長推薦我看看這個)、《編寫可維護的
javascript》(感覺對編碼風格還是有幫助,但是后面自動化那些章節(jié)感覺都用不上)、《javascript設計模式》(網上一些論壇推薦了,反
正看了一小半覺得看不下去了,也感覺現(xiàn)在還用不上)
專業(yè)課程:java程序設計(學習了java的基礎語法、Socket編程、jsp基礎(寫過一些基于mvc的登錄注冊的demo))。
上面基本上就算是進入大學后的學習的清單了,其實大學大部分時間也是玩兒,畢竟兩年時間要是認真的話不止這么點兒。
所以現(xiàn)在其實我是比較迷茫我大三應該學習的方向的,感覺不是很明朗、接下來我是準備的是要開始看看jquery的源碼、然后平時也在看看一些特效的教程。
然后還有一點是對于后端語言的學習,估計因為是自己要準備找前端的工作,所以平時大部分時間都是學習前端,對后端就不會很上心,之前看過簡單的php寫過
一個小網站的demo,像我本身的專業(yè)課上是有學習過jsp的,我都只能算會寫老師叫的東西,自己沒有去深入的了解一些拓展,雖然我知道這樣感覺比較浮
躁,但是我現(xiàn)在又說服不了自己去好好的學習。
首先,必須了解nodejs的相關知識的綜述,這是第一步,也是基礎。
然后開始有計劃的去學習教程,教程作為基礎的書籍,必須每天有計劃的去進行相關的學習。該掌握nodejs的基礎知識必須掌握。
在學習教材的時候,可以借助相關的輔導書,這樣更有助于對nodejs基礎知識的掌握。在具備一定的基礎知識后,可以進行一定量的網課的學習,這是為了更好的去把握重點。
在學習的過程中,也可以找一些自己的朋友,一起準備,這樣更有一種學習的氛圍。也可以相互的交流。
一起交流nodejs的相關知識。另外,自己要主動的去在實際中去應用nodejs的相關的知識。
聲明:本網站尊重并保護知識產權,根據(jù)《信息網絡傳播權保護條例》,如果我們轉載的作品侵犯了您的權利,請在一個月內通知我們,我們會及時刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學習鳥. 頁面生成時間:3.080秒