nodejs入門(一)node的誕生和簡(jiǎn)介

一秒拔、node的簡(jiǎn)介

1、在介紹node之前首先了解一下客戶端的javascript是怎么樣的飒硅?首先必須要明確幾個(gè)問(wèn)題:
1.1砂缩、什么是javascript?
????接觸過(guò)前端的同學(xué)都知道,javascript是一門運(yùn)行在瀏覽器端的腳本語(yǔ)言三娩,用來(lái)做客戶端頁(yè)面的交互庵芭。
1.2、 javascript的運(yùn)行環(huán)境
????故名思意他的運(yùn)行環(huán)境就是瀏覽器雀监,但是真的是這樣的嗎双吆?其實(shí)不然,他的真正運(yùn)行環(huán)境其實(shí)是運(yùn)行在瀏覽器內(nèi)核中的js引擎会前。為什么是這樣的了好乐?因?yàn)橥ㄋ讈?lái)講瀏覽器得作用就是用來(lái)瀏覽網(wǎng)頁(yè)得,我們?cè)跒g覽器除了執(zhí)行js外還能執(zhí)行其他得東西瓦宜,比如我們?cè)跒g覽器輸入一個(gè)地址敲回車就可以發(fā)送請(qǐng)求并且接收服務(wù)器得響應(yīng)蔚万。所以說(shuō)瀏覽器的第一功能是請(qǐng)求一個(gè)http地址,也就是可以封裝一個(gè)請(qǐng)求報(bào)文出來(lái)临庇,將一個(gè)url的地址封裝成一個(gè)請(qǐng)求報(bào)文反璃,這個(gè)報(bào)文到服務(wù)端昵慌,然后給我們一個(gè)響應(yīng)報(bào)文,然后在將響應(yīng)解析出來(lái)淮蜈,這也是瀏覽器的最大的作用贡必。當(dāng)然服務(wù)器響應(yīng)的內(nèi)容有可能不一樣句喜,比如說(shuō)服務(wù)器返回一個(gè)html文件,css文件,img文件白嘁,用來(lái)渲染梭灿,我們稱之為渲染引擎咽白,除此之外祥绞,還可以執(zhí)行js,由js引擎來(lái)完成未状,因此可以說(shuō)javascript的運(yùn)行環(huán)境是瀏覽器中的js引擎俯画,而不是瀏覽器。瀏覽器是一個(gè)大的概念司草。
1.3艰垂、瀏覽器中的javascript可以做什么?
????之前由提到過(guò)埋虹,javascrip就是用來(lái)做交互的猜憎,但是籠統(tǒng)的說(shuō)交互有點(diǎn)不明確,具體一點(diǎn)可以分為:“
????(1)操作dom(也就是對(duì)dom的增刪改搔课,注冊(cè)事件之類的事情)
????(2)發(fā)送AJAX請(qǐng)求/跨域
????(3)BOM交互如給我們提供頁(yè)面跳轉(zhuǎn)胰柑,歷史記錄,控制臺(tái)打印日志
????(4)ecmascript(js的核心語(yǔ)言爬泥,如用來(lái)定義變量柬讨,函數(shù)等)
1.4、瀏覽器端的javasscript不可以做什么袍啡?
????通過(guò)之前的了解踩官,貌似javascrip對(duì)我們?nèi)粘5慕换ザ伎梢酝瓿桑菜剖裁炊伎梢宰鼍呈洌撬灿胁荒茏龅氖抡崮怠H纾?br> ????(1)涉及到端對(duì)端的應(yīng)用程序,我們需要操作文件嗅剖,瀏覽器中的javascript是不能進(jìn)行文件操作的蛋逾,雖然h5里面提供了關(guān)于文件相關(guān)的API,但是這些API大多數(shù)只限于只讀的層面 窗悯,不能像傳統(tǒng)的語(yǔ)言如java,通過(guò)傳一個(gè)路徑,然后將對(duì)應(yīng)的文件讀出來(lái)偷拔,說(shuō)白了就是不能進(jìn)行文件和文件夾的CURD.
????(2)蒋院,瀏覽器端的javascript也沒(méi)有辦法去操作操作系統(tǒng)亏钩,如獲取操作系統(tǒng)的版本之類的。
????那么為什么不能進(jìn)行這兩類操作欺旧?其實(shí)是出于安全考慮姑丑,因?yàn)椋琷s這門語(yǔ)言運(yùn)行的環(huán)境比較特殊辞友,說(shuō)他特殊栅哀,特殊在什么地方?雖然我們編寫好的js代碼最終會(huì)放在服務(wù)器上称龙,但是他畢竟不是在服務(wù)器上執(zhí)行的留拾,而是通過(guò)服務(wù)器發(fā)送到瀏覽器端執(zhí)行的,在瀏覽器端執(zhí)行文件的操作顯然是不安全的鲫尊,因此說(shuō)這些功能在客戶端不是不能做痴柔,而是由于特殊的運(yùn)行環(huán)境沒(méi)法做。
1.5疫向、了解了客戶端的js所能做的事咳蔚,我們必須還要明確一個(gè)概念,那就是javascrip只能運(yùn)行在瀏覽器端嗎搔驼?
????前端開(kāi)發(fā)人員都知道谈火,javascrip是有ecmascrip語(yǔ)言,BOM舌涨,DOM組成的糯耍,在語(yǔ)言層面,她只是給我們提供一些操作語(yǔ)法泼菌,如定義變量谍肤,函數(shù),類型哗伯,流程控制等的操作荒揣。而B(niǎo)OM,DOM是瀏覽器提供的焊刹,并非es提供的系任。因此我們常提及的js其實(shí)就是es,js的大部分功能(DOm虐块,BOM(瀏覽器開(kāi)放出來(lái)的API)等的操作)都是由 瀏覽器的執(zhí)行引擎決定的 俩滥,這也衍生出一個(gè)觀點(diǎn),任何一門編程語(yǔ)言 贺奠,他的能力不是由語(yǔ)言本身決定的霜旧,而是由他的執(zhí)行環(huán)境決定的。比如說(shuō)java儡率,他即是一門語(yǔ)言也是一個(gè)平臺(tái)挂据,對(duì)于javascript來(lái)說(shuō)語(yǔ)言就是es以清,平臺(tái)是瀏覽器。那么js只能運(yùn)行在瀏覽器中嗎崎逃?非也掷倔!對(duì)于大多數(shù)語(yǔ)言,都是運(yùn)行 在一個(gè)平臺(tái)上的个绍,比如java只運(yùn)行在虛擬機(jī)上勒葱,但是也有運(yùn)行在多個(gè)平臺(tái)的語(yǔ)言, java在一定層面上來(lái)講是沒(méi)有必要運(yùn)行在多個(gè)平臺(tái)上的,因?yàn)樘摂M機(jī)是跨平臺(tái)(也就是跨操作系統(tǒng)如window巴柿,linux等)的凛虽。js同樣是可以運(yùn)行在多個(gè)平臺(tái)的,瀏覽器之所以能過(guò)運(yùn)行js篮洁,是因?yàn)樗蒵s的執(zhí)行引擎涩维。js同樣,只要由支持他的平臺(tái)就可以執(zhí)行袁波。因此說(shuō)要想語(yǔ)言有很強(qiáng)大的功能瓦阐,只需要提供強(qiáng)大的平臺(tái),node就是這樣一個(gè)平臺(tái)篷牌,能夠執(zhí)行js睡蟋,那么node到底是什么東西?接下來(lái)簡(jiǎn)述node是個(gè)什么鬼枷颊。

  1. 什么是node戳杀?
    ????根據(jù)官方文檔可以知道,node就是一個(gè)給予谷歌v8引擎的一個(gè)javascript的運(yùn)行時(shí)夭苗,可以理解為運(yùn)行js的一個(gè)虛擬機(jī)信卡。他使用的是一個(gè) 事件驅(qū)動(dòng),非阻塞I/O模型 题造,他是將js的運(yùn)行環(huán)境搬到了服務(wù)器端傍菇,和客戶端沒(méi)有一點(diǎn)關(guān)系。是一個(gè)純服務(wù)端的東西界赔,node只是為js提供了一個(gè)平臺(tái)丢习。node里面其實(shí)還分了兩塊,一是封裝了v8引擎淮悼,目的是為了執(zhí)行es(如定義變量咐低,定義函數(shù)等),另外一個(gè)提供了大量的工具庫(kù),是幫助node實(shí)現(xiàn)各種功能的袜腥,提供了一些以前js的環(huán)境辦不到的事情见擦,比如文件操作,網(wǎng)絡(luò)操作,操作系統(tǒng)的操作锡宋。
    ????既然node是一個(gè)平臺(tái)(所謂的平臺(tái)就是用來(lái)運(yùn)行特定語(yǔ)言的)儡湾,也就意味著node是用來(lái)運(yùn)行語(yǔ)言的,那么java也是語(yǔ)言执俩,node能運(yùn)行java嗎?據(jù)nodejs創(chuàng)始人Ryan Dahl回憶癌刽,他最初是選擇了Ruby這門語(yǔ)言役首,但是Ruby這門語(yǔ)言的虛擬機(jī)效率不怎么樣最終放棄了,按照這種思路显拜,貌似node將java的虛擬機(jī)集成進(jìn)來(lái)應(yīng)該可以運(yùn)行java衡奥,但node作者最終選擇了javascript。這樣js就實(shí)現(xiàn)了在服務(wù)端運(yùn)行的可能远荠,js運(yùn)行在node平臺(tái)上(分為v8部分矮固,用來(lái)執(zhí)行es,和大量的工具庫(kù)組件(API)稱之為libuv譬淳,提供了以前js的環(huán)境辦不到的事档址,如文件操作,網(wǎng)絡(luò)操作等等)邻梆。
    ????知道了什么是node,應(yīng)該還要清楚node在web中有什么用途守伸?
    ????(1)node可以接受客戶端用戶的所有請(qǐng)求,并且能夠快速的給出響應(yīng)浦妄,因此node可以用來(lái)做網(wǎng)站尼摹。
    ????(2)node可以作為一個(gè)中間層來(lái)來(lái)分發(fā)調(diào)用數(shù)據(jù)接口,比如有一個(gè)網(wǎng)站數(shù)據(jù)是有java提供的剂娄,我們可以讓node作為一個(gè)中間曾蠢涝,來(lái)接受用戶的請(qǐng)求,然后通過(guò)node來(lái)調(diào)用java數(shù)據(jù)接口阅懦,獲取到數(shù)據(jù)后直接在node層面做html的瓶裝和二,然后將渲染好的頁(yè)面直接給用戶。為什么要這樣做故黑,直接請(qǐng)求java接口不行嗎儿咱,這是因?yàn)閚ode被稱之為高性能的web服務(wù)器,在并發(fā)和抗壓方面都比傳統(tǒng)的平臺(tái)要好很多场晶,因此這樣一包裝可以極大的減輕服務(wù)器的開(kāi)發(fā)混埠。
    ????通過(guò)上面的兩點(diǎn),可以總結(jié)出诗轻,node在web中要么從前端頁(yè)面到后端服務(wù)全包了钳宪,一個(gè)是只做其中的一點(diǎn)。
    ????一言以蔽之,node就是一個(gè)javascript的運(yùn)行環(huán)境(平臺(tái))吏颖,他不是一門語(yǔ)言搔体,也不是javascript的框架“胱恚可以用來(lái)開(kāi)發(fā)服務(wù)端應(yīng)用程序疚俱,web系統(tǒng)。其特點(diǎn)是體積小缩多,快速呆奕,高性能。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末衬吆,一起剝皮案震驚了整個(gè)濱河市梁钾,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌逊抡,老刑警劉巖姆泻,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異冒嫡,居然都是意外死亡拇勃,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門灯谣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)潜秋,“玉大人,你說(shuō)我怎么就攤上這事胎许【海” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵辜窑,是天一觀的道長(zhǎng)钩述。 經(jīng)常有香客問(wèn)我,道長(zhǎng)穆碎,這世上最難降的妖魔是什么牙勘? 我笑而不...
    開(kāi)封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮所禀,結(jié)果婚禮上方面,老公的妹妹穿的比我還像新娘。我一直安慰自己色徘,他們只是感情好恭金,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著褂策,像睡著了一般横腿。 火紅的嫁衣襯著肌膚如雪颓屑。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天耿焊,我揣著相機(jī)與錄音揪惦,去河邊找鬼。 笑死罗侯,一個(gè)胖子當(dāng)著我的面吹牛器腋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播钩杰,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼蒂培,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了榜苫?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤翎冲,失蹤者是張志新(化名)和其女友劉穎垂睬,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體抗悍,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡驹饺,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了缴渊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赏壹。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖衔沼,靈堂內(nèi)的尸體忽然破棺而出蝌借,到底是詐尸還是另有隱情,我是刑警寧澤指蚁,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布菩佑,位于F島的核電站,受9級(jí)特大地震影響凝化,放射性物質(zhì)發(fā)生泄漏稍坯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一搓劫、第九天 我趴在偏房一處隱蔽的房頂上張望瞧哟。 院中可真熱鬧,春花似錦枪向、人聲如沸勤揩。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)雄可。三九已至凿傅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間数苫,已是汗流浹背聪舒。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留虐急,地道東北人箱残。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像止吁,于是被迫代替她去往敵國(guó)和親被辑。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Node.js是目前非尘吹耄火熱的技術(shù)盼理,但是它的誕生經(jīng)歷卻很奇特。 眾所周知俄删,在Netscape設(shè)計(jì)出JavaScri...
    w_zhuan閱讀 3,615評(píng)論 2 41
  • Node.js是目前非澈暾火熱的技術(shù),但是它的誕生經(jīng)歷卻很奇特畴椰。 眾所周知臊诊,在Netscape設(shè)計(jì)出JavaScri...
    Myselfyan閱讀 4,072評(píng)論 2 58
  • 從前山里面住著一個(gè)老爺爺和一個(gè)老奶奶。春天到了老爺爺在院子里面種了他最愛(ài)吃的大蘿卜斜脂,過(guò)了一些日子蘿卜發(fā)芽了長(zhǎng)出了嫩...
    家有兩男寶閱讀 276評(píng)論 0 0
  • 回家的路太遠(yuǎn) 還是無(wú)法選擇 飛機(jī)起飛 看見(jiàn)青天白日 原來(lái)云彩背后 才是別人的世界上 一路欣賞著 飛機(jī)到站 原來(lái)此地...
    布老頭和他的家人們閱讀 188評(píng)論 0 0
  • 起了這樣的一個(gè)題目帚戳,并不是為了什么為了什么噱頭玷或。去年與政府部門合作對(duì)于女性職場(chǎng)的生存與職業(yè)發(fā)展做過(guò)專項(xiàng)的資料搜集與...
    海河青年閱讀 461評(píng)論 0 0