2012-12-05 82 views
1

我正在爲第三方JavaScript應用程序做出貢獻,我們稱它爲X.網站所有者可以將X放在自己的站點中,我們稱之爲Y,使用腳本標記和X可能會渲染一些內容,對事件做出反應等。想想像Disqus這樣的東西。第三方JavaScript應用程序依賴關係管理

X可能依賴於諸如Handlebars,Underscore.js等庫。我面臨以不干擾Y的方式解決這些依賴性的問題。如果X爲自己提供Handlebars和Underscore.js,並且Y已經包含這些庫,由於存在兩個版本可能會導致未定義的行爲,因此可能會爆炸。

那麼處理這種情況的最好方法是什麼?

回答

0

由於您不能保證任何網站所有者將使用與X相同的依賴關係管理系統,爲什麼不使用條件加載?只需檢查(例如)window.jQuery是否存在,並且只在尚未定義的情況下才加載jQuery。等等等等,爲您的命名空間正確的第四方組件。如果你要求你的用戶只在你的頁面底部加載你的庫,你應該沒問題。

爲了清晰和快速,您可以使用像條件加載器http://yepnopejs.com/

或者,您是否可以要求您的用戶自己插入所需的庫?您在分發點聲明您的依賴關係(並提供代碼),並在其他所需庫不在頁面上時提供一個好看的錯誤狀態(例如,對話框,console.log等)。

+0

啊,是的,我同意yepnope將是一個很好的方法來處理它。感謝您的建議。 – Leirith