簡體   English   中英

使用多個Javascript框架修復項目

[英]Fixing a project with multiple Javascript frameworks

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

我試圖弄清楚在什么地方使用了什么,但是這非常困難,尤其是對代碼不太熟悉。

有沒有人有什么建議? 如果可能的話,我可能更希望刪除Prototype / Scriptaculous。

我不建議刪除javascript庫,因為這將是橫截面更改。 非常危險,現在和將來都將導致虛假錯誤。

可能是,Prototype將使用$變量,並且jQuery將在noConflict模式下運行,因此它將由jQuery變量引用。

例如,它可能會很棘手:

 // here $ = Prototype

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

 });

 // here $ = Prototype

並在單獨的文件中:

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

注意您的上下文以查看被引用的庫確實非常重要。 此外,如果您對如何在Prototype中完成的jQuery操作感到困惑,可以在這里提出問題是完全可以接受的

尤其是如果有一些在代碼庫上工作的人真正“擺脫”了原型,那么擺脫Prototype可能會非常困難。 我在這里談論我自己,是在一個非常大的Web應用程序上工作的,實際上它確實具有您所描述的混合方式(盡管我認為到我離開Scriptaculous的時候已經不見了)。

由於原型的工作方式,絕對可以在任何地方都存在依賴項。

這是一項艱巨的任務。 只要一切正常,關於活着和放任兩個框架的建議都不錯。 如果jQuery確實位於同一頁面上,則很可能處於noConflict模式。

一個非常有用的工具是使用Firefox的Web開發人員工具欄並導航到頁面並執行以下操作: Information -> View JavaScript這還將為您提供加載了<script>標記的所有JavaScript腳本的完整列表。作為<script>標記中的內聯JavaScript,盡管我認為內聯事件處理程序未在此處列出。

但是,您可以做的一件事就是簡單地摘除Prototype或JavaScript,然后查看哪個最終可以減少錯誤。 然后,您便可以調試缺少的內容。

比較容易在一個庫規范,但有一個為“如果沒壞,就不要修理它”太進行的情況下。

我花了一些時間來了解所有框架,並在相同的HTML上實現了相同的效果: ArtLung Rosetta :通過比較thisthis,您可以快速了解Prototype和jQuery語法之間的區別。

祝你好運!

我會從所有頁面上所有包含的原型中刪除原型,刪除jquery中的noconflict,然后讓firebug准備向我展示所有錯誤,然后逐頁瀏覽所有頁面,用jquery等效項替換功能,直到一切正常。

..痛苦的對接方法,但懷疑您會不會覺得那么痛苦。 可能會有所幫助: http : //api.jquery.com/browser/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM