我剛開始一個新的工作,我的第一個任務是清理該網站的Javascript代碼 - 問題是有兩個JS庫正在使用(jQuery和Prototype/Scriptaculous) 。修復一個項目與多個Javascript框架
我想弄清楚什麼是在哪裏使用,但這很困難,尤其是不太熟悉代碼。
有沒有人有任何建議?如果可能的話,我可能更願意放置Prototype/Scriptaculous。
我剛開始一個新的工作,我的第一個任務是清理該網站的Javascript代碼 - 問題是有兩個JS庫正在使用(jQuery和Prototype/Scriptaculous) 。修復一個項目與多個Javascript框架
我想弄清楚什麼是在哪裏使用,但這很困難,尤其是不太熟悉代碼。
有沒有人有任何建議?如果可能的話,我可能更願意放置Prototype/Scriptaculous。
我會垃圾桶原型來自所有包括在所有頁面,刪除jQuery的&的noconflict然後保持Firebug準備給我看所有的錯誤,並去了所有的頁面一個接一個,jquery的等效替代功能,直到工作的事情對。
..pain在對接方法,但懷疑你會發現較少的痛苦。 可能有幫助:http://api.jquery.com/browser/
我不會建議刪除一個JavaScript庫,因爲這將是一個橫截面變化。非常危險,現在和將來都會造成虛假的錯誤。
很可能,Prototype將使用$
變量,並且jQuery將以noConflict
模式運行,因此它將被jQuery
變量引用。
它可能很麻煩,比如:
// here $ = Prototype
jQuery(function($){
// here $ = jQuery
});
// here $ = Prototype
而且在不同的文件:
// here $ = Prototype
(function($){
// here $ = jQuery;
})(jQuery);
// here $ = Prototype
它只是真正重要的是要注意你的背景,看看哪個庫被引用。此外,如果您難以理解如何在Prototype中完成jQuery中的某些操作,則可以在此處提問perfectly acceptable。
特別是擺脫Prototype可能會很難受,特別是如果有人在開發真正「獲得」Prototype的代碼庫。我在這裏談論自己,曾經在一個非常大的Web應用程序上工作,事實上它具有你描述的完全混合(儘管我認爲我離開Scriptaculous的東西已經消失了)。
由於Prototype的工作原理,絕對無處不在的情況下可能存在依賴關係。
這是一個艱鉅的任務。如果事情正在發揮作用,那麼建議讓這兩個框架生存下來並不錯。如果它們真的駐留在同一頁面上,jQuery可能處於noConflict
模式。
一個工具,它是非常有用的是使用Web Developer Toolbar Firefox和導航到一個頁面,做到:Information -> View JavaScript
- 這將給你滿載<script>
標籤,以及內嵌JavaScript中所有的JavaScript腳本的完整列表<script>
標籤,但我認爲內聯事件處理程序不在那裏列出。
但是你可以做的一件事就是簡單地解開Prototype或JavaScript,看看哪一個以最少的錯誤結束。然後你就可以調試缺少的東西了。
它是更容易標準化在一個圖書館,但有一個情況是要作出「如果它沒有壞了,不要修復它」。
我已經採取了一些時間來學習一些關於一切的框架,這樣做對相同的HTML相同的效果:ArtLung Rosetta:您可以通過比較this和this得到一個快速潛入原型和jQuery的語法之間的差異。
祝你好運!
這只是冰山一角。 Prototype中的'$'只會做一個相對有限的事情,而不像jQuery的'$'幾乎可以做任何事情。因爲Prototype在各種基本對象原型上都提供了各種功能,所以嘗試和發現它們都是令人興奮的。例如jQuery「$ .each()」是在Prototype中作爲基本的Array操作完成的。 – Pointy 2010-02-11 15:56:06
@Pointy,非常真實。但就圖書館而言,只要知道何時使用'$ = jQuery',jQuery的東西應該很容易找到。但是,當Prototype的東西看起來像本地功能時,這很難確定。 – 2010-02-11 15:59:38
是的,就是這樣,儘管一旦你找到了它,那麼你必須重寫它:-)我同意答案「不要這樣做」我認爲! – Pointy 2010-02-11 16:01:19