首先 nodejs并不是一門(mén)新的語(yǔ)言,他的作用主要在于后臺(tái)慢叨。
接觸過(guò)前端的都知道 前端無(wú)非就是 html纽匙,css,js 以及各種框架和這些語(yǔ)言的升級(jí)版本拍谐。
js在前端的作用除了一些動(dòng)態(tài)效果就是與后臺(tái)交互哄辣,比方說(shuō)ajax请梢。
但是在nodejs還沒(méi)有出現(xiàn)的時(shí)候 js除了在前端能與后臺(tái)做一些交互之外,其余的在后臺(tái)就差不多看不見(jiàn)js的影子了力穗。也有很多人對(duì)這個(gè)語(yǔ)言感到不甘毅弧,他有很強(qiáng)的處理能力,卻在后臺(tái)無(wú)法生存当窗。直到nodejs的出現(xiàn)够坐。
nodejs時(shí)基于js語(yǔ)法的一款運(yùn)行在后臺(tái)的javascript語(yǔ)言。
主要特點(diǎn)是單線程崖面,采用非阻塞時(shí)I/O元咙,事件驅(qū)動(dòng)。
從以上三點(diǎn)分析nodejs優(yōu)缺點(diǎn)的話:
其單線程一定程度的節(jié)省資源與內(nèi)存巫员,這時(shí)候就有人問(wèn)到了庶香,一個(gè)線程,能有什么用简识,nodejs不僅僅是單線程赶掖,它的基本操作全都是異步操作,這樣就保證了七扰,一個(gè)線程里奢赂,同時(shí)進(jìn)行多種進(jìn)程。
采用非阻塞制I/O 可以大大的加快nodejs的執(zhí)行效率 這樣可以更好的執(zhí)行異步操作颈走,不會(huì)因?yàn)槟硞€(gè)進(jìn)程的執(zhí)行時(shí)間教程膳灶,從而耽誤了整個(gè)進(jìn)程。
采用事件驅(qū)動(dòng)的執(zhí)行方法立由,主要是用了大量的回調(diào)函數(shù)轧钓,這樣可以大大的減少異步操作所帶了錯(cuò)誤,比方說(shuō)進(jìn)程b是基于進(jìn)程a完成之后才能執(zhí)行的 而異步操作不會(huì)去管a有沒(méi)有完成 就會(huì)去執(zhí)行b這時(shí)候把b封裝成一個(gè)回調(diào)函數(shù)放入a中回調(diào)锐膜,這樣就達(dá)到了a執(zhí)行結(jié)束之后再去執(zhí)行b 而且還不會(huì)耽誤其他的進(jìn)程聋迎。
如果從以上三點(diǎn)分析nodejs的缺點(diǎn)的話 單線程差不多是最大的缺點(diǎn)了 因?yàn)闀r(shí)單線程 一根線 其中一個(gè)進(jìn)程崩了,就會(huì)導(dǎo)致整個(gè)線程坍塌枣耀,導(dǎo)致所有的進(jìn)程全部無(wú)法進(jìn)行霉晕。
除了從以上三點(diǎn)分析nodejs的優(yōu)缺點(diǎn) 我們還可以從前后端的角度 分析nodejs的優(yōu)點(diǎn)(缺點(diǎn)我這里就不描述了):
對(duì)于前端開(kāi)發(fā)者來(lái)說(shuō) nodejs無(wú)疑是對(duì)于他們非常好的一種語(yǔ)言,因?yàn)閚odejs的語(yǔ)法就是js語(yǔ)法捞奕,這讓前端開(kāi)發(fā)者非常容易學(xué)會(huì)牺堰,以及掌握。
對(duì)于后端來(lái)說(shuō)颅围,nodejs和前端交互的時(shí)候伟葫,省去了大量的代碼互相融合交互的工作,還是因?yàn)榇a的語(yǔ)法都一樣院促,前后很容易認(rèn)識(shí)筏养。
以上就是nodejs宏觀上斧抱,大概的優(yōu)缺點(diǎn),還有很多細(xì)節(jié)需要在實(shí)際操作中去自己發(fā)掘渐溶,自己嘗試辉浦。
還有就是,學(xué)習(xí)nodejs必須要掌握的框架 express koa jquery 以及vue.js.?
掌握一些es6語(yǔ)法 對(duì)于玩轉(zhuǎn)nodejs也是有很大幫助茎辐。