簡體   English   中英

在構建自己的JavaScript庫或jQuery插件時,我是否必須避免入侵?

[英]Do I have to avoid being invasive when building my own JavaScript library or jQuery plugin?

最近,我一直在構建一些JavaScript庫以及一些jQuery插件,我有一個'utils.js'文件,我將所有自定義函數放入ArrayStringNumber等,並將其包含在final中縮小版本的庫或插件。

像這樣的東西:

String.prototype.custom_method = function() {
  // Do custom stuff
};

Array.prototype.custom_method = function() {
  // Do custom stuff
};

所以,這些是我的問題:

  • 我必須避免這個嗎? 這是一種不好的做法嗎?
  • 如果我將這些方法放在每個庫/插件范圍內會更好嗎?

鑒於jQuery和Modernizr做同樣的事情(提供了很多開箱即用的能力,而普通人只使用了10%)我沒有看到問題。

它臃腫了嗎? 也許。 理想的做法是只包含您使用的文件(Google的插件方法,包括您需要的內容之一),但是我沒有看到比已經存在的更大的威脅。

我認為你划分它們是朝着正確的方向邁出的一步,因為多個庫可能需要它們(沒有重復的聲明)。 但是,如果你真的擔心它,你可以做一個測試聲明設置:

if (typeof foo === 'undefined'){
  function foo(){}
}

但是,再一次,它需要包含在您發布/構建的每個庫中/上,而不是“無所不包”的庫。

以下是對您要問的內容的一個很好的討論。

http://perfectionkills.com/extending-built-in-native-objects-evil-or-not/

簡短回答:擴展原生類型並不是很好,但還可以。 像underscore.js一樣包裝它們會更好,因為這樣就不會有未來的沖突。

這取決於觀眾。 如果向默認類添加或覆蓋方法,則永遠不會贏得企業受眾。 誰知道可能導致的沖突? 看一下underscore.js http://documentcloud.github.com/underscore/一個不打算使用裝飾器方法做到這一點的庫。 這對於擁有代碼庫的用戶來說更加友好,除了代碼之外,代碼可以包括善良知道什么。

但是,如果你的代碼可以自己運行,那么在一個孤島中,去吧。

暫無
暫無

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

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