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