什么是jQuery最重要的挑战,作为开发人员我可以做些什么呢?

Dan*_*ows 13 jquery jquery-ui

我有一个项目即将构建一个界面,允许用户使用预定义的模板和代码片段构建内容.

我们已经决定使用jQuery和jQuery UI框架来帮助我们处理拖放/排序部分.还需要进行一些编辑,我将contenteditable结合使用jQuery的CSS函数.

我已经对这两个框架都有相当多的经验(并且喜欢它们),但到目前为止,我的典型项目已经运行到大约50行,而这个项目将运行到更多,使用更多的函数并编写自己的插件.

在我开始研究项目之前,我想知道jQuery是否存在任何常见的陷阱 - 有点像'jQuery - Bad Parts'.是否有最好的避免功能?有需要解决的功能吗?

我读了这个链接,但它现在已经2年了,从那以后jQuery(和浏览器)发生了很多变化.

任何"使用此框架代替"或"不使用框架"的答案都将被忽略 - 我必须使用jQuery.任何不提供解决方案的'jQuery is rubbish'咆哮也将被忽略.只有建设性意见.如果我知道如何在JavaScript中做得更好jQuery做什么,我就不会使用jQuery.

ano*_*non 8

我会回答你的一半问题.这是一个基于痛苦经历的陷阱清单,并非所有我都有解决方案.

  • 大量使用长链选择器的诱惑("ul#leftnav li p a.current")会使你的代码变得脆弱.它可能很聪明("嘿,我是CSS主人!"),但是当布局以任何非平凡的方式改变时,它很容易破裂.
  • 使用DOM作为数据库.使用.data()将数据附加到DOM元素,跟踪页面状态以及将DOM元素链接在一起似乎是一个巧妙的想法,但是如果你过分了,你就会开始忘记在哪里.
  • 在$(document).ready()中添加太多东西.再一次,在这里初始化所有事件和数据是很自然的,但很快就会遇到组织和订购问题.研究类似MVC的解决方案,以保持组织有序.
  • 不完全是跨浏览器.尽早经常在所有目标浏览器中进行测试!jQuery虽然是一个很棒的抽象,但仍然是一个漏洞.事件和属性在不同的JS引擎中的行为并不总是完全相同.


cap*_*ete 5

保持胶水最小化

我在jQuery中所做的事情,我学会了避免:

  • 过度使用大而聪明的插件.保持简单或保持原样.
  • 大而复杂的文件.保持文件小和描述性.
  • 污染全局命名空间.使用每个文件的闭包.导出到命名空间.
  • $().构造标记.使用骨干/胡子的模板来保持js干净.
  • 脆弱的CSS选择器.尽可能按ID选择,使用层次结构会导致问题.

保持可维护性

我在jQuery中所做的事情,我每次都学会了这样做:

  • 绝对可以使用自动化测试.保持代码结构,让您高枕无忧.
  • 在模型中将状态信息保留在DOM之外.
  • 选择存储回调函数并通过var name在疯狂函数嵌套中引用它们.
  • 利用最小的框架尽早建立约定.

最后一个是必须的.有无数种方法来组织项目的JS方面.选择像ember.js这样的东西给你一套约定,然后坚持下去!