Web開發技術討論之二:如何編寫高效JavaScript代碼

火星人 @ 2014-03-03 , reply:0


Web開發技術討論之二:如何編寫高效JavaScript代碼

  活動背景:
  學會編寫JavaScript程序容易,但要成為專家卻實屬不易。一方面是由於JavaScript語言的設計思想與Java、C#等大眾語言區別很大,另一方面是由於其設計時的倉促性導致JavaScript語言本身精華與糟粕並存。
 
 另外因為跨平台的緣故,JavaScript歷史悠久且實現多樣化,因此我們很難確定哪些特性在哪些平台上是可用的。而令事態更加嚴峻的事實是JavaScript的主要生態系統——Web瀏覽器,它並不支持讓程序員指定某個JavaScript的版本來執行代碼。由於最終用戶可能使用不同Web瀏覽器的不同版本,因此,我們必須精心地編寫Web程序,使得其在所有的瀏覽器上始終工作如一。
 
 而且隨著JavaScript語言本身的不斷發展,JavaScript並不只是針對客戶端Web編程。JavaScript的其他應用包括伺服器端程序、瀏覽器擴展以及針對移動和桌面應用程序的腳本。某些情況下你可能需要一個特定的JavaScript版本。對於這些情況,利用特定平台支持的JavaScript特定實現的額外特性是有意義的。
 
 所以,對於任何一個想要做到嚴謹編程的JavaScript開發者來說,如何寫出高效的現代JavaScript代碼,是我們不斷提升道路上一個必經之路。
 
 
 我最近正在寫JS,主要是node.js。node.js用的引擎是V8,相對來說是很成熟的。比起需要兼容瀏覽器的同學們可幸福多了。反正js我覺得是過於靈活了,所以給自己規定一些規則還是蠻好的。
 
 網上有很多規則,不過總結出一套自己的還是蠻有意義的。很多規則都是踩過坑以後才總結出來的。所以規則總是要看,只是不要當教條就行,畢竟js的優勢就是靈活。
 
 我個人覺得,在規則之上,也得有一套「元規則」,比如說,預先分配好模塊、決定介面這些。大家都知道的。至於「逗號寫在前面」這種,我覺得是見仁見智的規則。
 
 切分成模塊以後,單個模塊可以用node或者glue這些東西跑,可以做單元測試,這樣就很大程度上避免了bug。
 
 工具的話,intellj Idea的補全很爽,會提示很多問題。不過我用Vim習慣了,幸好idea有Vim的插件。
 
 另外,寫js最重要的一點是,多關注一些開源的js項目,我個人比較喜歡Q這個項目(https://github.com/kriskowal/q),它提供了一套控制流的包裝,用起來很爽。配合orm簡直就是神器啊……
 
 

  1、談談您的JavaScript的學習和提升的經驗。
 2、談談您的一些JavaScript的高效編程的技巧。
 ————
 兩個問題我放在一起回答吧。也算是我自己在Web開發的一個總結。
 最早接觸JavaScript是在2004年,那時我在一家公司打工,做程序員,當時公司做項目,開始逐步由C/S架構逐步向B/S架構過渡。
 C/S架構的項目其結構是很清晰的,用VB、VC、Delphi、PowerBuilder等做開發是很方便的。而轉到B/S架構上,對我們來說就是一個挑戰,要學的東西很多。
 公司架構師確定了技術方案,前端是HTML、CSS、JavaScript,業務邏輯用JSP和JDBC實現(那時也不知道有沒有Hibernate框架,反正當時沒聽過),資料庫選擇的是Sybase。
 HTML和CSS還比較容易上手,我們很快就掌握了它們的語法規則,但是寫JavaScript程序就遇到了很多麻煩,寫出來的程序總是達不到預期目的,查錯也很麻煩。
 那時也沒有像FireBug之類的JavaScript調試工具,而且當時的瀏覽器功能也很弱,也不具備調試功能。
 項目經理很著急,一方面開會討論解決問題,另一方面加強團隊的知識學習。我記得當時購買了十來本《JavaScript權威指南》(忘記了是第幾版),這本書比較厚,內容也比較全。於是我們一邊學習,一邊繼續開發,後來把項目搞定了。
 補充一點,我記得早期的Visual Studio 6裡面有一個JavaScript調試器,反正有一個時期我們就用它來調試JavaScript程序。
 大概到2006年,國外一些開源的JavaScript庫開始風靡起來,最牛的是prototype。我們自己也寫了幾個JS庫,在多個項目中使用,算是代碼復用吧。
 到2007年,jQuery開始異軍突起,同時期比較熱門的JS庫還有Dojo、script.aculo.us、ExtJS,但是最火的還是jQuery,jQuery連續火了四年。國內外無數的項目都使用了jQuery。
 隨後的JS庫還有Yahoo! YUI、MooTools等,但都趕不上jQuery的影響力。
 如果說之前的JavaScript還只是頁面交互語言,那麼到了2011年,JavaScript開始在伺服器端發力。Node.js開始進入程序員的眼球,它採用事件驅動、非同步編程,適合開發網路程序。Node.js的非阻塞I/O處理帶來了系統資源低消耗下的高性能與高併發。這使得Node.JS開始逐漸流行起來。
 當然,Node.js目前還說不上主流,我想主要原因還是業界都在等待它的成熟,畢竟它還太年輕。眾所周知,Node.js的1.0版本還未發布,真正在生產環境中使用它的公司也畢竟是少數。
 JavaScript的未來是光明的,我繼續看好。
 《Effective ***》這個系列的書一直都不錯,比如Effective Java,我就很喜歡。《Effective JavaScript》是我期待很久的書。
 至於JavaScript的編程經驗,那就太多了,很難一一說完。總的來說,初學者仍然該從JavaScript語法著手,熟練掌握JS語法后,可以學習像jQuery這樣的開源JS庫,並做一些課題或項目進行實戰。待有了一定的經驗后,學習《Effective JavaScript》就非常適合了,我覺得《Effective JavaScript》是一本寫給中級JavaScript開發者的書,有助於讓他們更上一層樓。

 

 




[火星人 via ] Web開發技術討論之二:如何編寫高效JavaScript代碼已經有191次圍觀

http://www.coctec.com/docs/service/show-post-6.html