2011-06-23 100 views
0

我是新來的道場風格編碼。習慣了純JavaScript和jQuery風格。搜索並獲得一些結果,如道場風格編碼

  • Dojo與閉包編譯器一起使用時效果最好。
  • 先進道場比程序類型的更多OO

我在與

  • dojo.require()的問題 - 每當我下載道場插件,我得到的錯誤 - 不是404找到。一半的時間用於開發,以解決這個問題,獲取js文件並將其放置在位置。
  • 是否有可能在jQuery中擴展dojo對象,我們使用內部定義爲jQuery.fn = jQuery.prototype的$ .fn.some函數來擴展根jQuery對象。 Dojo中有類似的東西嗎?
  • 我覺得dojo的文檔不如jQuery的。
  • 什麼是dijit和dojox?當我從Google api庫導入dojo.js,然後在dojo中使用插件時,這些dijit和dojox總是有問題。

需要一些幫助。我將幾個從jQuery插件轉移到dojo的插件。這些插件在dojo中不可用。

我覺得在使用dojo進行編碼時必須使用整個庫,然後編譯它以獲取優化的代碼,並將其導出到任何需要的位置。我在這裏嗎?如果沒有,我做錯了什麼?

+0

我認爲在你的文章中有三個不同的問題(你的第三個項目符號點不計算在內),第一個問題可能無法在沒有看到你的代碼的情況下回答。否則,使用'dojo.extend()'擴展原型,Dijit是UI庫,DojoX是擴展庫。參見[參考指南](http://dojotoolkit.org/reference-guide/)。 –

回答

8

1)dojo.require通過XHR請求自動下載需要的文件。你不需要手動下載任何東西。如果你使用google CDN,所有的課程都應該從那裏下載,我建議你下載完整的軟件包到你的本地應用程序並從那裏使用它。稍後您可能需要創建一個Build。您還應該閱讀Starting with Dojo

2)像jQuery一樣強化dojo沒有任何意義。 dojo只是最上面的命名空間,它下面有很多類,如dojo.Animation,dojo.behavior,dojo.Deferred,dojo.NodeList和很多其他類。有些功能如dojo.connect()dojo.style()

如果你想創建一個新的類看看dojo.declare。您還可以在dojo「名稱空間」或其他名稱空間下創建新類。

如果要將一個新函數添加到dojo名稱空間,只需鍵入dojo.new_function = function(){}就像普通的JavaScript一樣。但我不會推薦。如果升級到更高版本的Dojo版本,可能會造成問題。

jQuery和Dojo完全不同。如果在jQuery中輸入類似$('.data')的東西,它將獲取所有類爲「data」的dom節點,並返回jQuery類中包裝的新對象。

在Dojo中,您使用dojo.query('.data')獲得相同的效果。但它返回dojo.NodeList類型的新對象。如果你想添加新的功能鏈能力,你需要擴展dojo.NodeList。

已經存在一些擴展名,如dojo.NodeList-fx,它將動畫效果添加到dojo.NodeList類。如果您使用dojo.require()加載類,則您的dojo.Nodelist將自動擴展。查看Extend dojo.NodeList瞭解更多信息。

3)文檔相當不錯,你問的所有內容都已經記錄下來,我提供了一些你可以在Dojo主頁上找到的完整資源。不同之處在於Dojo是一個完整的工具包,包括GUI,佈局系統,Widgets,數據抽象以及其他很多高層次的東西。如果你從來沒有用過這樣的東西,可能很難從它開始,因爲它包含了很多東西。 jQuery不提供這樣的東西。所以有時候從它開始肯定會更容易。

有關文檔看看:

4)道場是使用命名空間3在JavaScript dojodijitdojox的工具包。 dojo命名空間包含幾乎所有人都會用到的東西,比如像I18N,L10N的框架,dojo.datadojo.store等模型抽象以及其他許多東西。

只是加載「dojo.js」文件的方式不給你dojo提供的一切。

dijit命名空間在Dojo中包含許多小部件。 dijit命名空間中的所有小部件都具有完整的I10N和L10N支持。 dijit包含對話框,佈局系統,窗口小部件,如日曆,按鈕,選擇字段,無線電字段,完整WYSIWYG Editor under dijit.Editor

另請參閱Dijit Theme Editor以查看Dijit包含的內容。包括佈局在內的完整網站是基於dijit完成的。

dojox命名空間包含許多不適合dijit或實驗的額外功能。但並非一切都是實驗性的。您可以找到諸如dojox.grid.DataGriddojox.chartingStart ChartingAdvanced Charting)或諸如dojox.gfx之類的系統來創建使用SVG,Canvas,VRML,Silverlight或Flash的跨瀏覽器圖形。

只需查看Beyond Dojo's Core即可獲得dijit和dojox包含的(小)概覽。

+0

感謝您提供了一個深思熟慮的答案。 @Boopathi,Dojo將會更加接近JavaScript的風格,所以你應該對這些方面的語法更加熟悉。正如Sid所說,不要考慮如何像jQuery一樣使用Dojo。你說你自己根據你的研究得知dojo提供了更好的OO功能,所以它應該鼓勵你像OO開發者一樣思考。就我個人而言,我並不認爲鏈接命令的提升是一個又一個OO,對我來說似乎是非常程序化的。 Dojo是一個強大的工具包,它需要一些時間。 –