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