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)楹?jiǎn)單,開發(fā)Node.js應(yīng)用程序效率很高;7調(diào)試相對(duì)困難,調(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)楹?jiǎn)單,開發(fā)Node.js應(yīng)用程序效率很高;
7調(diào)試相對(duì)困難,調(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ā)的場(chǎng)景,因?yàn)樗鼪]有多線程的概念,比如你做一個(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ù),我們先來聊聊你以及你和JavaScript的關(guān)系。
本章的主要目的是想讓你看看,對(duì)你而言是否有必要繼續(xù)閱讀后續(xù)章節(jié)的內(nèi)容。如果你和我一樣,那么你很早就開始利用HTML進(jìn)行“開發(fā)”,正因如此,你接觸到了這個(gè)叫JavaScript有趣的東西,而對(duì)于JavaScript,你只會(huì)基本的操作——為web頁面添加交互。
而你真正想要的是“干貨”,你想要知道如何構(gòu)建復(fù)雜的web站點(diǎn) —— 于是,你學(xué)習(xí)了一種諸如PHP、Ruby、Java這樣的編程語言,并開始書寫“后端”代碼。與此同時(shí),你還始終關(guān)注著JavaScript,隨著通過一些對(duì)jQuery,Prototype之類技術(shù)的介紹,你慢慢了解到了很多JavaScript中的進(jìn)階技能,同時(shí)也感受到了JavaScript絕非僅僅是window.open() 那么簡(jiǎn)單。
.不過,這些畢竟都是前端技術(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年代的作為對(duì)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ǔ),而對(duì) JavaScript 的閉包,內(nèi)存管理,原型鏈等特征的了解很少。
如果你真的對(duì) JavaScript 這門語言很了解的話,那么可以給你省一些時(shí)間——你不用再去學(xué)習(xí) JavaScript 的語法了,Node.js 運(yùn)行的是標(biāo)準(zhǔn)的 JavaScript.
不然的話,你還是需要學(xué)習(xí)一下 JavaScript 的語法,因?yàn)橄啾戎拢蠖说拇a(和簡(jiǎn)單的前端頁面相比)邏輯更復(fù)雜,組織起來需要用到 JavaScript 的更多高級(jí)特征。
然后,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)一下而已。
但如果你對(duì)后端語言的工作原理完全沒了解的話,你還需要了解一下 HTTP 協(xié)議,了解一下后端是如何處理一個(gè)請(qǐng)求的。
總之,學(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ì)是對(duì)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高級(jí)
程序設(shè)計(jì)》(第一遍看完)、《javascript語言精粹》(本來準(zhǔn)備是再看一遍紅皮書的,后來一學(xué)長推薦我看看這個(gè))、《編寫可維護(hù)的
javascript》(感覺對(duì)編碼風(fēng)格還是有幫助,但是后面自動(dòng)化那些章節(jié)感覺都用不上)、《javascript設(shè)計(jì)模式》(網(wǎng)上一些論壇推薦了,反
正看了一小半覺得看不下去了,也感覺現(xiàn)在還用不上)
專業(yè)課程:java程序設(shè)計(jì)(學(xué)習(xí)了java的基礎(chǔ)語法、Socket編程、jsp基礎(chǔ)(寫過一些基于mvc的登錄注冊(cè)的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)是對(duì)于后端語言的學(xué)習(xí),估計(jì)因?yàn)槭亲约阂獪?zhǔn)備找前端的工作,所以平時(shí)大部分時(shí)間都是學(xué)習(xí)前端,對(duì)后端就不會(huì)很上心,之前看過簡(jiǎn)單的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)書,這樣更有助于對(duì)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)利,請(qǐng)?jiān)谝粋€(gè)月內(nèi)通知我們,我們會(huì)及時(shí)刪除。
蜀ICP備2020033479號(hào)-4 Copyright ? 2016 學(xué)習(xí)鳥. 頁面生成時(shí)間:3.080秒