Node的用武之地
這里我們討論另外一種web開發(fā)模式,不管是不是采用了Node、或者是不是采用了基于事件的編程模式,這都無關(guān)緊要,因?yàn)檫@種模式實(shí)在太重要了。簡(jiǎn)言之:對(duì)癥下藥!概括講就是,針對(duì)不同的問題采取不同的解決方案,而不管這種解決方案是否解決其他問題。
思維定勢(shì)
不止在web設(shè)計(jì)領(lǐng)域,在所有編程之中都存在某種思維定勢(shì)?梢赃@么描述這種思維定勢(shì):你學(xué)到的、掌握的越多,你能解決的問題就越多,你所掌握的技能的應(yīng)用場(chǎng)景也就越多。這看起來理所當(dāng)然,除非你在技術(shù)上鉆研的更深。沒錯(cuò),學(xué)習(xí)新的語言和新的工具并廣泛使用它總不是壞事。但往往會(huì)進(jìn)入一個(gè)誤區(qū),就是,因?yàn)槟懔私馑阅闶褂盟,而不是因(yàn)槟闼莆盏募寄芎凸ぞ呤恰白钸m合”你的業(yè)務(wù)的。
我們來看一下Ajax,關(guān)于Ajax已經(jīng)有太多太多的討論了。我們知道,Ajax為無刷新的快速查詢請(qǐng)求提供了可靠的解決方案。而如今因?yàn)锳jax的濫用以至于過分替代了傳統(tǒng)的表單提交。我們遇到一個(gè)新技術(shù)、學(xué)習(xí)它、掌握它、應(yīng)用它,然后“濫用它”。畢竟很多業(yè)務(wù)場(chǎng)景僅僅需要傳統(tǒng)的表單提交,而不需要Ajax。說起來簡(jiǎn)單,實(shí)際上還有成千上萬的濫用Ajax的案例場(chǎng)景,僅僅因?yàn)槟硞(gè)應(yīng)用的開發(fā)工程師對(duì)Ajax的盲目尊崇。
同樣的,Node也面臨這樣一個(gè)問題。當(dāng)你初識(shí)Node發(fā)現(xiàn)它的種種好處,就想到處使用它。就會(huì)一股腦的將PHP或Perl程序換成Node。結(jié)果呢?糟透了。其實(shí)你已經(jīng)害上了強(qiáng)迫癥,總是想將Node用于有違其設(shè)計(jì)初衷的場(chǎng)景中:使用JavaScript提交大量數(shù)據(jù)給Node,或者通過Node返回給JavaScript大量的JSON數(shù)據(jù),交給前端去作eval(),或者干脆使用Node作一個(gè)文件服務(wù)器用以返回HTML頁面或做HTTP重定向。
但這些場(chǎng)景均不是Node所擅長(zhǎng)的。Node更擅長(zhǎng)處理體積小的請(qǐng)求以及基于事件的I/O,使用Node解決客戶端和服務(wù)器之間的快速溝通,使用表單提交將大量的數(shù)據(jù)發(fā)送給服務(wù)器,使用PHP和Perl來處理重型數(shù)據(jù)庫(kù)操作以及動(dòng)態(tài)HTML頁面的生成。使用Node運(yùn)行于服務(wù)器端來處理體積不大的請(qǐng)求。不管是采用Rails還是Spring以及各式各樣的服務(wù)端容器,只要按需索取即可。一定要明白你需要解決的問題是什么,基于此采取最佳解決方案,而不是基于你當(dāng)下所掌握的技能來解決遇到的問題。
Node的簡(jiǎn)單的初衷
還有最后一點(diǎn)需要注意,當(dāng)你越來越深入你的編程時(shí),你會(huì)發(fā)現(xiàn)你不必每個(gè)工具、API和所使用的框架都達(dá)到精通。將刀用在刀刃上,不要將錘子當(dāng)成鉆頭來使用。了解每個(gè)工具所適用的場(chǎng)景和能解決的問題,然后找到這個(gè)工具的最適合的應(yīng)用場(chǎng)景。如果你想變成超人式的通才(程序員往往什么都想知道),你離“專家”也就越來越遠(yuǎn),所謂專家,就是指在一兩個(gè)方面達(dá)到非常精通。當(dāng)然,每個(gè)老板都希望能找到超人式的通才,但這種人往往可遇不可求。
學(xué)習(xí)Node可能會(huì)有些吃力,但是非常值得的。為什么?因?yàn)槟阏趯で蠡贘avaScript的web應(yīng)用的解決方案。這意味著你已有的JavaScript編程技能不會(huì)丟掉,當(dāng)你需要使用PHP或者Perl時(shí),你必須重新學(xué)習(xí)一門新的語言,而Node不必如此大動(dòng)干戈。學(xué)習(xí)新語言帶來的問題比學(xué)習(xí)他們帶來的好處要大的多。
學(xué)習(xí)Node所面臨的挑戰(zhàn)是,你需要更加活躍思維,將程序拆成低耦合的小片段,然后像組裝數(shù)組一樣的組裝他們。但Node和基于事件的I/O并不能解決所有問題,但確定的是,很多關(guān)鍵問題,只能依靠Node來解決。
參考文獻(xiàn)
Node:Up and Running The secrets of Node’s success Why a JavaScript hater thinks everyone needs to learn JavaScript in the next year JavaScript spread to the edges and became permanent in the process What is Node.js and what does it do?
本文鏈接:http://m.95time.cn/tech/web/2011/8569.asp
出處:Taobao.com UED Team
責(zé)任編輯:bluehearts
上一頁 什么是Node? [8] 下一頁
◎進(jìn)入論壇網(wǎng)頁制作、WEB標(biāo)準(zhǔn)化版塊參加討論,我還想發(fā)表評(píng)論。
|