【问题标题】:Things to consider before including a js library in large existing project [closed]在大型现有项目中包含 js 库之前需要考虑的事项 [关闭]
【发布时间】:2011-07-18 06:54:34
【问题描述】:

我正在开展一个大型项目,该项目是 XRMS CRM 的衍生产品。不幸的是,以前的开发人员没有正确(甚至不正确地)记录他/她的编码。现在我有一大块凌乱的 PHP + JS 文件。目前它不使用任何 js 库,而是使用原生 JS 代码。由于某些原因,我想使用 jQuery、prototype 或 mootools。当我在某些页面中包含 jQuery 进行了一些测试时,我意识到它们运行良好。但是由于页面太多,在所有页面上测试所有功能将非常繁琐。

我想知道在应用这些 js 库之前应该考虑的关键点。

【问题讨论】:

  • 如果可能的话,我会从零开始重新编码。
  • 我也会这样做。简直是不可能的:(
  • 关键点是什么意思?你到底在找什么?如果你能从举个例子开始就好了。
  • 将 jQuery 库添加到页面将什么都不做,直到您开始重写代码以使用 $(或备用)访问器。
  • @Sukumar 我的意思是 jQuery 与现有 JS 代码发生冲突的关键可能性。

标签: php javascript jquery crm


【解决方案1】:

考虑以progressive enhancement 的方式包含jQuery,实现graceful degradation。如果出现问题,用户仍然可以使用该网站。

将 jQuery 放在页面底部将有助于提高页面加载速度,并且可以避免一些潜在的冲突。

另请参阅jQuery.noConflict() 模式和Using jQuery with other libraries

编写新代码时还要编写单元测试(例如,使用qunitjstestdriver,无论是否可能包括旧代码的单元测试。这对refactoring 很有帮助。

【讨论】:

  • 您能否再解释一下“...渐进式增强方式,实现优雅降级”是什么意思?
  • @Muhammad 我添加了一些有用的链接。
【解决方案2】:

对于像 jQuery 这样的库,整个代码库都包含在单个变量的范围内,这是为了避免与现有代码发生冲突。

在 jQuery 的情况下,它是美元符号 ($),尽管这可以被覆盖以使用 jQuery 变量是 $ 在其他地方使用(称为无冲突模式)。

这意味着只要您现有的代码不使用 $ 变量,您就可以安全地包含该库,而不必担心它会覆盖您现有的代码。

【讨论】:

  • 感谢您的回答。您是否 100% 确定现有代码中没有 $ 变量意味着与 jQuery 没有冲突?请提供任何我可以提供给其他人的参考。
  • 无需太技术化,您可以通过查看 jQuery 代码本身确定,整个库包含在一组括号内(以创建本地范围),最后一行:@ 987654325@ 向您展示了 $jQuery 是唯一从该范围逃逸的变量名。如果你不使用这两个,你很高兴。
  • 另外,如果您不确定现有代码库中$ 变量的安全性,最好在包含库后立即调用jQuery.noConflict(),并坚持使用@987654330 @变量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-03
  • 2011-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多