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