[英]Generic way of handling conflicts between javascript libraries
一些javascript庫作為完全連接的文件分發,包括所有依賴庫。 如果正在使用多個版本的庫,則JQuery等某些庫提供了一種處理沖突的方法。 但是,如果經過編譯/串聯的javascript文件包含的庫沒有內置的處理沖突的方式,而我使用的是同一庫(但版本不同),則可以使用一種通用方法來包裝我正在使用的版本和添加自定義名稱空間嗎? 還是取決於所使用的庫?
這取決於庫。 如果它在一個名稱空間下提供所有功能,則可以首先包含您的版本,將其引用存儲在另一個變量/名稱下(如果可能發生沖突,請取消設置原始名稱),然后再包含另一個庫。
它看起來像這樣:
<script src="MyLibraryV1.js"></script>
<script>
// Assuming all functions are available under `$`
var MyLibraryV1 = $;
// Now the next script can overwrite `$`.
// Optionally we can also delete/undefine this symbol:
delete window.$;
</script>
<script src="OtherLibraryWithDependencies.js"></script>
<script>
// For easy access, you can use an immediate function to still let `$`
// refer to your library version. It should not affect the other code
// (but if it does you obviously have to use the other name)
(function($) {
// put all code that needs `MyLibraryV1` here
}(MyLibraryV1));
</script>
當然,更好的事情是, OtherLibraryWithDependencies
是否可以正確封裝所有依賴項,以便它們不會泄漏到全局范圍內。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.