我正在开发一个内部使用 jQuery 的 JavaScript 库。但是,到了部署它的时候,我宁愿简化一些事情(wrt 部署),而不用担心环境中是否已经包含(或没有)jQuery <head>
。
我应该提到我的库是作为 Coffescript 中的一个类实现的,并且生成的 .js 文件具有用于隔离作用域的默认函数包装器。
我可以想到几个解决这个问题的方法:
询问网站管理员他们是否已经存在 jQuery。如果是,只需包含库本身。如果没有,则包含 jQuery + 库,可能在单个文件中并连接起来。部署更难,但问题可能已经解决。
创建一个连接 jQuery 和我的 lib 代码的文件,并且总是让网站管理员只包含这个文件。为防止冲突,请
var myJ = jQuery.noConflict()
在 jQuery 代码之后执行。像上面的(2)那样做,但是调用
var myJ = jQuery.noConflict()
封装好的 Coffeescript 类里面。
总之,这项挑战的目标是:
- 绝对避免在部署的网站上出现任何损坏,无论他们可能使用什么
- 使部署尽可能简单
- 尽可能避免不必要的 jQuery 转移
我的担忧是:
- 如果站点已经有 jQuery,但需要旧/新版本怎么办?
- 如果我的
noConflict()
电话打断了他们的某些东西怎么办?
解决这种情况的最佳方法是什么?我错过了什么吗?