1

我剛開始一個新的工作,我的第一個任務是清理該網站的Javascript代碼 - 問題是有兩個JS庫正在使用(jQuery和Prototype/Scriptaculous) 。修復一個項目與多個Javascript框架

我想弄清楚什麼是在哪裏使用,但這很困難,尤其是不太熟悉代碼。

有沒有人有任何建議?如果可能的話,我可能更願意放置Prototype/Scriptaculous。

回答

0

我會垃圾桶原型來自所有包括在所有頁面,刪除jQuery的&的noconflict然後保持Firebug準備給我看所有的錯誤,並去了所有的頁面一個接一個,jquery的等效替代功能,直到工作的事情對。

..pain在對接方法,但懷疑你會發現較少的痛苦。 可能有幫助:http://api.jquery.com/browser/

2

我不會建議刪除一個JavaScript庫,因爲這將是一個橫截面變化。非常危險,現在和將來都會造成虛假的錯誤。

1

很可能,Prototype將使用$變量,並且jQuery將以noConflict模式運行,因此它將被jQuery變量引用。

它可能很麻煩,比如:

// here $ = Prototype 

jQuery(function($){ 
    // here $ = jQuery 

}); 

// here $ = Prototype 

而且在不同的文件:

// here $ = Prototype 
(function($){ 
    // here $ = jQuery; 
})(jQuery); 
// here $ = Prototype 

它只是真正重要的是要注意你的背景,看看哪個庫被引用。此外,如果您難以理解如何在Prototype中完成jQuery中的某些操作,則可以在此處提問perfectly acceptable

+0

這只是冰山一角。 Prototype中的'$'只會做一個相對有限的事情,而不像jQuery的'$'幾乎可以做任何事情。因爲Prototype在各種基本對象原型上都提供了各種功能,所以嘗試和發現它們都是令人興奮的。例如jQuery「$ .each()」是在Prototype中作爲基本的Array操作完成的。 – Pointy 2010-02-11 15:56:06

+0

@Pointy,非常真實。但就圖書館而言,只要知道何時使用'$ = jQuery',jQuery的東西應該很容易找到。但是,當Prototype的東西看起來像本地功能時,這很難確定。 – 2010-02-11 15:59:38

+0

是的,就是這樣,儘管一旦你找到了它,那麼你必須重寫它:-)我同意答案「不要這樣做」我認爲! – Pointy 2010-02-11 16:01:19

0

特別是擺脫Prototype可能會很難受,特別是如果有人在開發真正「獲得」Prototype的代碼庫。我在這裏談論自己,曾經在一個非常大的Web應用程序上工作,事實上它具有你描述的完全混合(儘管我認爲我離開Scriptaculous的東西已經消失了)。

由於Prototype的工作原理,絕對無處不在的情況下可能存在依賴關係。

0

這是一個艱鉅的任務。如果事情正在發揮作用,那麼建議讓這兩個框架生存下來並不錯。如果它們真的駐留在同一頁面上,jQuery可能處於noConflict模式。

一個工具,它是非常有用的是使用Web Developer Toolbar Firefox和導航到一個頁面,做到:Information -> View JavaScript - 這將給你滿載<script>標籤,以及內嵌JavaScript中所有的JavaScript腳本的完整列表<script>標籤,但我認爲內聯事件處理程序不在那裏列出。

但是你可以做的一件事就是簡單地解開Prototype或JavaScript,看看哪一個以最少的錯誤結束。然後你就可以調試缺少的東西了。

更容易標準化在一個圖書館,但有一個情況是要作出「如果它沒有壞了,不要修復它」。

我已經採取了一些時間來學習一些關於一切的框架,這樣做對相同的HTML相同的效果:ArtLung Rosetta:您可以通過比較thisthis得到一個快速潛入原型和jQuery的語法之間的差異。

祝你好運!

相關問題