2009-12-29 39 views
0

我所有的項目都包含非常相似的任務,最近我一直在想我應該編寫一個庫來處理大部分繁重的工作,以便我可以編寫簡短易讀的代碼,與庫進行交互以獲取完成工作。看看其他框架,特別是jQuery & YUI,它們以不同的方式工作。 jQuery大多數似乎擴展了&使用全局對象/函數來簡化DOM,而YUI使用名稱空間和模塊。我明白這是因爲他們與圖書館有不同的目標,每個人都有自己的優點。寫一個可移植的Javascript庫的最佳方式是什麼?

最特別,我在尋找答案,以下幾個問題:

  1. 它是最好用的命名空間,如gui.scrollbar.attach(),或者$(domObj).attachScrollbar()這樣一個全球性的方法?
  2. 是否最好將單獨的零件包含爲單獨的js文件或作爲單個js文件進行組件複製/粘貼?我知道eBay Shopping API SDK在單獨的文件夾中有很多.js文件,難道這不會受到顯着的性能影響嗎?
  3. 是否有任何其他建議,你會給有人想要創建一個JavaScript庫?

我已經標記爲社區wiki,因爲我不想冒風險的問題被關閉 - 我真的在這裏尋求建議。

感謝

編輯 我應該有最初說,我不是重新發明輪子,我期待的Windows桌面小工具之間簡化許多常見的任務,所以我不需要其他庫及其核心功能的跨瀏覽器兼容性並不適用於我正在做的事情。我試圖保留一般問題,而不是專門關於桌面小工具,以便這個問題對其他人有用。

回答

3

簡單的回答你的問題:使用現有的書寫你的圖書館

我有一些用jQuery編寫的javascript文件只是爲了這樣的目的。

更具體地說,

  1. 如果你要爲Java風格的面向對象的煩躁,去命名空間。我更喜歡jquery編寫插件的方式。
  2. 如果您正在編寫自己的「工具包」,最好將相關性(縮小)複製並粘貼到您的源代碼中。這種方式
    a。你避免了你提到的開銷
    b。您可以防止不必要的依賴從外部蔓延。

乾杯!

0

你有什麼理由不能使用已經存在的許多庫中的一個?這似乎是一個重新發明輪子的例子。這些庫已經存在多年,並且已經解決了許多在嘗試編寫自己的代碼時肯定遇到的問題。

在大家的一些問題條款:

  1. 這真是喜好IMO。只要你從全局命名空間中獲取你的功能,這是最重要的。但是,這種設計選擇將推動許多其他人的下線。
  2. 最好將所有核心功能包含在一個文件中,然後將其餘的文件分塊爲需要一些功能的文件。你想保持文件的數量,但你也不希望用戶不得不下載很多他們不需要的東西。

說了這麼多之後,我重申一下,您應該考慮使用已經存在的庫中的一個,除非您有一個非常好的理由不這樣做。請記住,您需要在所有舊版瀏覽器以及任何新出現的瀏覽器中進行測試。 jQuery,YUI,原型,Mootools,extJS是一些最流行的

+0

我期待ol'重新發明輪子「的答案,可能應該提到我不需要x瀏覽器的兼容性,這個框架並不專門針對網頁。 – 2009-12-29 13:54:30

1

關於你的第一個問題,這兩個選項實際上是相同的IMO。您可以使用像$這樣的全局函數,而不是像YAHOO或gui這樣的全局對象。在這兩種情況下,你都有一個全局變量來存放你的名字空間。

+0

這是我在寫這篇文章時想到的,但它們仍然是不同的方法,所以它仍然適用,'$'幾乎是一個函數,它具有其他方法。命名空間通常有一個全局的命名空間,其中更多的是像樹狀一樣的子命名空間。 – 2009-12-29 14:00:37

+0

是的。我會補充說,最重要的是不要將項目泄漏到全局名稱空間中:有一個入口點。 – 2009-12-29 14:07:19

相關問題