注:這是一篇翻譯文章,不代表我們的觀點(diǎn)!

因?yàn)榕驼嬲\,有更多的客戶和我們聚集在一起,為了共同目標(biāo),創(chuàng)新互聯(lián)建站在工作上密切配合,從創(chuàng)業(yè)型企業(yè)到如今不斷成長,要感謝客戶對(duì)我們的高要求,讓我們敢于面對(duì)挑戰(zhàn),才有今天的進(jìn)步與發(fā)展。從網(wǎng)站到小程序定制開發(fā),軟件開發(fā),重慶App定制開發(fā),10余年企業(yè)網(wǎng)站建設(shè)服務(wù)經(jīng)驗(yàn),為企業(yè)提供網(wǎng)站設(shè)計(jì),綿陽服務(wù)器托管一條龍服務(wù).為企業(yè)提供營銷型網(wǎng)站,按需網(wǎng)站策劃,原創(chuàng)設(shè)計(jì),10余年品質(zhì),值得您的信賴.
Node.JS是一個(gè)非常糟糕的平臺(tái),他的糟糕之處體現(xiàn)在非常簡單而重要的一個(gè)方面,就是他的核心工作機(jī)制:基于I/O的回調(diào)。
我想大家現(xiàn)在都知道。這種方式編寫代碼是很糟糕的。一段時(shí)間前我注意到了這個(gè)事情,
在使用了Go語言幾周后我喜歡上了他。使得,我承認(rèn)Go語言比python少了一些動(dòng)態(tài)特性,而導(dǎo)致做開發(fā)的時(shí)候可能會(huì)多出一些任務(wù)(主要是做一些樣
板)。Go比Python還少了一些“magic”的性質(zhì),從而代碼具有明確性。
Go的這種明確性使得你更容易的閱讀源代碼。因?yàn)闆]有了這些“magic”特性,你就
弊,Python的開發(fā)速度要快,而Go的代碼維護(hù)要容易。
可是,當(dāng)你把這些事情往Node.JS上想的時(shí)候,你會(huì)發(fā)現(xiàn)沒有了代碼可維護(hù)性、沒有了安心、得到了速度。可是我想說你真的得到了速度么?因?yàn)樵诖送瑫r(shí)你同時(shí)失去了簡易開發(fā)和簡單維護(hù)。
我花費(fèi)了很長時(shí)間去學(xué)習(xí)Node.JS,并試著做了一些東西,但是并沒有成功,我是真的不知道從何開始。
通常我評(píng)價(jià)一個(gè)技術(shù)的好壞,是通過它自身的一些性質(zhì)。是否容易上手、是否能幫助我提高
生產(chǎn)力、文檔做的好不好、有沒有幫助資源。很顯然Node.JS沒能通過上面的測(cè)試。在我學(xué)習(xí)了那么久之后我仍然沒有做出一個(gè)產(chǎn)品。API參考雖然已經(jīng)文
我看到HN(Hacker News)上的一些人說Node.JS有多好。我當(dāng)時(shí)認(rèn)為這些人都是很聰明的,Node.JS應(yīng)該是一個(gè)不錯(cuò)的平臺(tái)。很不幸,我花費(fèi)了幾個(gè)月時(shí)間最終發(fā)現(xiàn)這是一個(gè)非常糟糕的平臺(tái)。我沒能寫出一點(diǎn)讀起來很舒服的代碼,(當(dāng)然寫起來也是很不舒服)
我開始懷疑我的編程能力!
當(dāng)然,一些讀者可能會(huì)說:我們將Node.JS用到的生產(chǎn)環(huán)境,所以這是你的無能。
也好,我接受,可能是我鉆到某個(gè)牛角尖里了。但是我所說的權(quán)衡利弊的問題仍然成立,為了滿足所承諾的可擴(kuò)展性,你必須犧牲代碼的可讀性和可寫性。而在Python下你可以非常方便的擴(kuò)展。你可用gevent
,一個(gè)基于網(wǎng)絡(luò)庫/服務(wù)器的并發(fā)框架。這就意味著IO阻塞將不再是問題,剩下的唯一問題是python的解釋器,而這也可以通過分布式多服務(wù)器來解決負(fù)載均衡問題。
現(xiàn)在只有一件事情是Node.js可以而Python不可以的,那就是
websockets。實(shí)際上我不確定是不是python確實(shí)不能,在Google后也許會(huì)找到一些方案。當(dāng)然
Go可以很容易的實(shí)現(xiàn)websockets(go get code.google.com/p/go.net/websocket)
即便你認(rèn)為websocket就是你使用Node.js的原因,但是我想說你仍然可以選擇使用Node.js實(shí)現(xiàn)websocket,而其余部分都是用Python來做。這里有個(gè)例子
。是的,這個(gè)架構(gòu)設(shè)計(jì)(聯(lián)合Python和Node.js)可能是有點(diǎn)令人費(fèi)解,但是還是要比使用Node.js開發(fā)整個(gè)web程序要好的多。
學(xué)c++或者c語言吧。node.js應(yīng)用太少。學(xué)c語言,可以加深你的知識(shí),受益無窮。
強(qiáng)大的跨平臺(tái)編程能力
Bowery團(tuán)隊(duì)指出Go能很方便地在不同系統(tǒng)里進(jìn)行程序編譯,這是他們轉(zhuǎn)入Go的重要原因之一。
作為開發(fā)平臺(tái),對(duì)Linux,Windows,OSX等常見操作系統(tǒng)提供支援是能否吸引開發(fā)者的基本要素。在Go中,開發(fā)者可以針對(duì)不同操作系統(tǒng)定義不同的文件來實(shí)現(xiàn)相同的功能函數(shù)。Bowery團(tuán)隊(duì)成員Larz在創(chuàng)建Prompt應(yīng)用(命令行輸入)時(shí),就是借助Go而輕松實(shí)現(xiàn)了跨平臺(tái)編譯。而開發(fā)者要做的,就是設(shè)置好不同的環(huán)境變量。
快速部署
在Go平臺(tái)中,從測(cè)試環(huán)境到真實(shí)環(huán)境的切換是非常便捷的,因?yàn)樗鼰o需額外的系統(tǒng)依賴。特別是對(duì)于Bowery提供給用戶的命令行工具來說,用戶無需安裝Java,RVM或者NPM等工具便可正常運(yùn)行。
并發(fā)處理
Node.js在并發(fā)處理方面處于劣勢(shì),僅有I/O程序或計(jì)時(shí)器運(yùn)行在并發(fā)模式。因此如果希望打造一個(gè)快速響應(yīng)的跨程序通訊系統(tǒng),Go無疑是更好的選擇。Go提供了低級(jí)別的并發(fā)處理基元,例如mutexes、wait groups等等。
整合測(cè)試框架
如果希望找到一個(gè)標(biāo)準(zhǔn)化的整合測(cè)試框架,不妨進(jìn)入Go來體驗(yàn)一番,它內(nèi)建了完整的測(cè)試包,免去了四處尋找的麻煩。如果想編寫一個(gè)新的測(cè)試套件,只要把_test.go文件添加到相同的包里就可以了。有關(guān)Go測(cè)試的更多信息,請(qǐng)點(diǎn)擊這里進(jìn)行訪問。
標(biāo)準(zhǔn)庫
Go提供了標(biāo)準(zhǔn)庫,標(biāo)準(zhǔn)庫的好處是無需包含其他擴(kuò)展庫,從而能節(jié)省開發(fā)時(shí)間并且還提高了健壯性。
強(qiáng)大的開發(fā)者工作流工具
Go的工作區(qū)界面能幫助建立標(biāo)準(zhǔn)化的工作流,雖然這或許會(huì)壓縮了開發(fā)的自由度,但得到的是一個(gè)結(jié)構(gòu)化的有條理的工作區(qū):該區(qū)有三個(gè)根目錄,src用于放置源碼包,pkg用于放置編譯包,bin放置的是執(zhí)行文件。把源碼和依賴文件集中存儲(chǔ)的好處是使團(tuán)隊(duì)成員都有一個(gè)相同的文檔結(jié)構(gòu),而不會(huì)出現(xiàn)雜亂的文檔情況。此外gofmt能以相同風(fēng)格對(duì)代碼進(jìn)行格式化,這是一個(gè)非常實(shí)用的功能。所以一旦需要進(jìn)行調(diào)試,只需集中精力解決當(dāng)前問題而無需分心處理結(jié)構(gòu)或風(fēng)格等瑣碎問題
網(wǎng)站題目:go語言node.js Go語言開發(fā)
標(biāo)題URL:http://chinadenli.net/article16/hipjdg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、做網(wǎng)站、微信公眾號(hào)、網(wǎng)站導(dǎo)航、定制開發(fā)、標(biāo)簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)