2011-11-03 21 views
1

我正在嘗試學習JavaScript,但似乎圍繞原語,對象,函數等進行了圓圈轉換。我可以在Python中很好地編寫代碼,所以JavaScript部分現在主要是關於語法和習語。掌握基本知識後選擇JavaScript框架

我在選擇不知所措,我不知道該如何選擇:原型,jQuery的,道場,Node.js的,Backbone.js的等

什麼是良好的JavaScript框架/ s的挑在掌握基礎知識之後開始學習?冒着出賣我的JavaScript天真的風險,我想要一個(或多個)框架,我可以做異步請求,數據可視化和UI實現。

+0

這個問題是主觀... –

+0

關於你在最後一句提到的事(異步請求,等等),我建議在「普通」的JavaScript做他們至少一次,讓你知道事情是如何工作的。您會立即看到,與事件處理一樣,您必須編寫不同的案例以迎合瀏覽器之間的差異。 _然後_切換到一個庫,讓它爲你處理麻煩的東西 - 我使用並推薦jQuery(但對其他庫沒有任何反應)。 – nnnnnn

+0

@nnnnnn您不需要提供抽象API來執行瀏覽器合規性的框架/庫。您可以使用瀏覽器支持的許多polyfill /填充程序之一,仍然使用「普通」javascript。 – Raynos

回答

2

我不會說先確認自己首先了解JavaScript本身,這是一個非常獨特的語言,既有好的部分,也有壞的部分。如果你花時間瞭解關閉,原型繼承,關鍵字,構造函數等,你會感謝你自己。 JavaScript, The Good Parts是一個很好的開始。無論如何...

對於基本的DOM操作,事件處理,ajax等jQuery是明顯的贏家。在過去,Prototype/Scriptaculous是一種常見的選擇。

對於更高級的基於瀏覽器的應用程序,Backbone.js,Angular.jsEmber.js是獲勝者。

DojoMootoolsExtJSKnockout.js一些替代角度和朋友......所有具有不同的優勢和重點。

有無數圖書館的圖表。 HighCharts是一個受歡迎的。要獲得更高級的可視化效果,請查看D3.jsRaphael

Node.js是不同的野獸。這是一個服務器端的網絡IO平臺。它的競爭對手就是Python的Twisted和Ruby的EventMachine。

當然這個話題已經被覆蓋在大篇幅這裏: https://stackoverflow.com/questions/394601/which-javascript-framework-jquery-vs-dojo-vs

0

對於第一個步驟,我會建議jQuery,與它的直觀的語法和能力,與一些插件進行擴展,併爲它的強大社區和大量的文章,教程等the internet

jQuery是一個跨瀏覽器的JavaScript庫,它提供 對DOM遍歷,事件處理,動畫和AJAX

試試先,那麼你就可以基於其他框架去像Raphaël JS矢量圖形,Processing.js爲動畫等

2

任務要求,我可以做異步請求,數據可視化,以及UI實現。

如果你想學習真正學習堅持使用低級別的基礎知識和不要使用臃腫的抽象。

當然,當你使用jQuery你可能會更快地完成它,但你不會學習任何其他那麼如何使用jQuery砍一起麪條代碼。如果您剛學會如何正確使用普通的舊javascript,那麼您的代碼就不會接近可維護,穩定或高性能。

+3

_「UI意味着DOM4或'''_ - 不,不。 UI是用戶與之交互的東西,可能只是一些純文本和一些超鏈接。 「用戶界面」並不意味着圖形。 (不,我是說,一個人不能瞭解DOM4或'') – nnnnnn

+3

+1,但...'當然使用jQuery是faster'其中,「快」是指? jQuery經常被那些沒有花時間學習javascript或瀏覽器腳本的人使用,所以從這個意義上說,獲得特定結果可能會更快。但是,像兼容性,質量,可維護性和性能等總體情況最好與完善的POJS方法相同,而且往往更糟糕。沒有圖書館可以修復糟糕的設計或僞劣的編程。 – RobG

+0

@nnnnnn好點我只是假設他會想要更多的東西,然後只是HTML或否則他不會要求一個js庫。 – Raynos

0

我建議3主/大框架來考慮。我選擇以下3個原因是因爲它們得到了很好的支持,文檔和使用,但更重要的是 - 它們都提出了不同的編碼風格/約定。

  1. Dojo
  2. ExtJS (Sencha)
  3. jQuery (UI/core)

應該指出的是,它們中的任何一個可以適合於幾乎任何編碼風格/偏好,但如果我是創造完美的(從與之合作的角度來看)的框架,我會做一個混合:

Dojo的創作和造型+ ExtJS的布點能力和商店基於數據的managemenet + jQuery DOM操作和AJAX支持。