我开始使用Javascript进行HTML5移动开发,但也注意到我也可以使用jQuery库。我的问题是,除了要求你写更少的代码之外,jQuery还有什么要做的吗? Javascript的性能更快吗?对不起,新手问题,但我找不到答案,真正感兴趣的差异。在此先感谢除了少量代码之外,使用jQuery over JavaScript的原因是什么?
回答
jQuery是使用JavaScript构建的库。越抽象你会得到的表现越少。例如,只需使用本机DOM方法选择一个元素,将比使用jQuery做得更快。
所以这个问题并不是“找出哪一个更快”,你已经知道jQuery会变慢。这个问题更像是“值得的表现是否值得?”。是的,大多数情况下,这是因为您在编写代码时节省的时间比您获得的性能更有价值,而大部分时间都是可以忽略的。
另一个因素是你的香草JavaScript代码的质量。 jQuery已经过多年的测试和维护,并且显示。
你的问题不应该是“我应该使用jQuery还是纯JavaScript”而是“我应该使用哪个库?”。没有人应该用零代码开始一个实质性项目,他们应该至少有一个强大的,经过测试的代码集合,可以很容易地整理成一个库或工具包。
一般库的问题是它必须提供一般解决方案,因此为什么jQuery有4000行代码,任何一个项目可能只需要几百行。有些库有更多的代码行。如果你使用别人的库,你经常会被绑定到他们的更新时间表,最终可能会使用需要不同版本库的插件。
如果您拥有自己的图书馆,或者在您的工作区域开发和维护的图书馆,您可以获得相同的代码重用,并可以裁剪布料以适合该项目。 jQuery(和大多数通用库)是单一的:它是全部或者全部,你不能只包含其中一部分(例如,你可能只想要一个好的函数)。你自己的库可以是模块化的,所以你只包含你需要的代码,并且可以避免一般库必须处理的许多跨浏览器问题。大卫马克的“MyLibrary”是极少数模块化图书馆之一。
此外,跨浏览器的差异正变得越来越少,DOM API越来越丰富,因此使用通用库的需求越来越少。例如。没有人占用document.all了,或者不支持的浏览器也不支持addEventListener或attachEvent。一旦支持IE 6和7可以被删除(几年之后),使用单一的第三方库几乎没有什么理由,模块化将是关键。一切都将是一个插件,不需要基础库,或者基础库将非常小,以提供基本DOM功能的通用API。
虽然“没有人应该用零代码启动实质性项目”具有一定的价值,但人们在**学习* jQuery方面** **的价值要低得多,并且对JavaScript没有任何了解。这基本上导致程序员不知道JavaScript的内部工作是如何工作的,因此发布诸如*“OMG!”这样的问题,为什么不是'$('#myDiv')== $('#myDiv')? “*。在某些时候从零开始有**总是**值;特别是自OP刚刚开始。 – Jesse 2013-05-07 23:37:14
非常感谢您花时间写下所有这些内容。我真的很喜欢你创建自己的图书馆的想法,以满足他们目前正在从事的任何项目的特定需求。这很有道理,一定会听从你的建议。再次感谢您花时间编写所有这些 – 2013-05-07 23:52:30
顺便说一句,“少代码更好”的概念是有缺陷的。 “更少的代码”不是一个很好的理由,可以自己做任何事情。它应该是你最担心的问题,特别是在使用最小化器的情况下。 “较少的代码”通常很难调试和维护,正如许多库常用的函数调用的链接一样。很久以前,软件开发工作的估计集中在功能上,而不是代码行,这个焦点没有改变,特别是因为切割代码可能不到软件开发项目总成本的20%。 – RobG 2013-05-08 02:47:37
- 1. 为什么除了“try..except”块之外的原因被绕过
- 2. 除了除零之外,double_scalar中遇到溢出的原因是什么?
- 3. 是什么原因
- 4. RejctedExecutionException的原因是什么?
- 5. 除了提前调用cursor.close()之外,什么原因会导致StaleDataException?
- 6. 什么是“||”除了or之外,在JavaScript中引用?
- 7. 'System.IO.IsolatedStorage.IsolatedStorageException'的原因是什么?
- 8. 在Javascript中使用===而不是== typeof的原因是什么?
- 9. 使用esb的原因是什么
- 10. 使用OpenJDK的原因是什么?
- 11. ChangeConflictException的原因是什么?
- 12. java.lang.reflect.InvocationTargetException:这是什么原因?
- 13. 将常量放在if语句之后的原因是什么?
- 14. 在getopts之后使用shift $((OPTIND-1))的原因是什么?
- 15. 为什么jQuery被称为jQuery?名称的原因是什么?
- 16. 什么是UnsatisfiedLinkError的原因?
- 17. 我无法执行下面的代码的原因是什么?
- 18. 这段代码的结果背后的原因是什么?
- 19. UnsupportedClassVersionError的原因是什么?
- 20. 除了对象之外,JavaScript中调用的实例化“类”是什么?
- 21. 防止代码更改商店状态的原因是什么?
- 22. 这段代码中导致段错误的原因是什么?
- 23. 在此代码中导致nullreference异常的原因是什么?
- 24. 在此代码中导致NullPointerException的原因是什么?
- 25. 这段代码中导致ArrayIndexOutOfBounds错误的原因是什么?
- 26. JVM退出代码1073807364的原因是什么?
- 27. 这段代码中运行时错误的原因是什么?
- 28. 以下代码中运行时错误的原因是什么
- 29. 以下Java代码输出的原因是什么?
- 30. cheerio.filter()?这段代码没有运行的原因是什么?
谢谢。正是我在寻找的答案。对于新手问题再次抱歉 – 2013-05-07 23:49:37