【问题标题】:I've learned jQuery, should I go back and learn "proper javascript"?我学过 jQuery,我应该回去学习“正确的 javascript”吗?
【发布时间】:2010-12-03 08:10:42
【问题描述】:

我主要是一名服务器端开发人员,专业使用 PHP。对于 javascript,我总是使用框架(jQuery/mootools),这对我来说会是一个专业的劣势吗?我应该花时间直接学习 javascript,还是大多数开发人员都转向框架?

谢谢。

【问题讨论】:

  • jQuery 是 DOM 之上的一个抽象层,而不是 javascript,我想说你现在使用的是正确的 javascript..
  • 好点,我目前正在使用 jQuery 进行选择器和动画,其他一切都是纯 javascript。
  • 感谢您选择我的答案作为“the”答案。我有点担心人们会认为我的回答是“不要学习 Javascript”,而正如 svinto 和 Adam 指出的那样,框架仍然是 Javascript。希望答案清楚地表明,这并不是一个与另一个的问题,而是您将(宝贵的)学习时间集中在哪里。
  • 是的,很清楚,感谢您的建议,我认为这里的每个人都有有效的观点,这是一个非常有趣的讨论,值得我阅读。
  • 这不是更适合程序员网站吗?

标签: javascript jquery frameworks mootools


【解决方案1】:

这取决于。如果您询问的是 DOM 操作,它在浏览器之间存在许多怪癖和不一致之处。虽然知道这些可能会很好,但大多数时候你不必担心你的框架。自己学习所有内容是有益的,但也很困难。

除了纯 JS 中的所有内容,例如闭包、私有函数、对象语法、原型等,你应该绝对学习这些,因为它们在框架中同样适用没有它。从根本上说,您仍然在 JS 中编码,只是在一些常见任务的框架的帮助下。

【讨论】:

    【解决方案2】:

    没有。

    多年来对浏览器依赖性的挫败感以及对 Javascript 设计中最初做出的许多决定的厌恶推动了向框架的转变。请注意,尽管您仍在使用 Javascript,所以说“学习 Javascript”不如“探索现在由 JQuery 处理的 Javascript 领域”是不公平的。

    就你对潜在雇主的吸引力而言,我很确定 JQuery 会比 Javascript 更适合在简历中列出(我知道在我们的商店中会这样)。如果你仔细想想,那些足够关心做好客户端开发的雇主会期望未来的员工有使用 JQuery 等工具的经验。那些不太关心客户端开发的人根本不会将客户端技能(包括 Javascript)作为优先事项。事实上,如果您打算花时间更多地了解客户端,我建议您学习另一个客户端框架(例如 YUI 或 Ext)。它不仅会让你变得更有价值,而且由于框架的差异,它几乎肯定需要一定程度地接触更多的 Javascript 习语。

    更新 - Rohan 对学习 Javascript 提出了一个很好的观点:它可以帮助您在 JQuery 中更高效地编写代码。我在摘要中同意,但我个人会有点犹豫在这方面投入太多精力。作为一名长期(长期)开发人员,我学会了非常关注时间和精力投资的回报。世界上有很多东西要学,而学习它的时间却只有这么多。例如,与投资相比,我花在学习如何编写 ISAPI dll 上的时间付出的代价很少。

    更新 2 - 一些人认为 JQuery 比原始 Javascript 慢。有什么新东西吗?这种关于“原始”开发与框架的争论已经持续了几十年!

    不过,在这种情况下,它尤其令人困惑。根据我的经验,采用客户端框架的人实际上最终提供客户端功能。那些由于处理跨浏览器的 DOM 不兼容性、Javascript 特性等固有的困难而不会被锁定在服务器端解决方案中的人。因此,推荐 Javascript 的“速度”错过了纯 Javascript 站点非常重要的整个动态可能会更慢,因为开发人员最终会回到服务器端代码来保持生产力。

    【讨论】:

    • 说你知道 jQuery 就不需要学习 javascript,就像说你知道 Rails 就不需要学习 Ruby。好吧,你可以在不真正了解 Ruby 的情况下盲目地在 Rails 中进行 Web 开发,但这并不是一个好主意。 (注意:我所说的 javascript 是指跨浏览器高度兼容的核心语言。不一定是跨浏览器高度不兼容的 DOM API。对于 DOM 操作,您使用 jQuery)
    • slebetman - 一开始你似乎没有读过“不”。如果您继续阅读,您将看到,我特别指出您需要学习 Javascript。事实上,您在这件事上没有真正的选择,因为 JQuery 是建立在它之上的。然而,引用我自己的话,几乎不需要“探索现在由 JQuery 处理的 Javascript 领域”。这似乎是您在评论结束时要表达的观点。关于 Stack Overflow 的令人沮丧的事情之一 - 在这里很好地说明 - 是很多人在没有真正阅读答案的情况下扣动扳机。
    【解决方案3】:

    是的。

    jQuery 通常在执行任务时速度较慢。如果您知道如何在纯 JS 中执行此操作,您可以返回并优化页面中较慢的部分。

    【讨论】:

    • 但是这个函数不是不能适应那些有非标准实现的浏览器,比如getElementsByTagName吗?当然,这就是 jQuery 的全部意义所在——它是一个抽象层。
    • 你说得对,但我们公司只针对 IE6,所以这对我们来说不是问题。
    • 等一下 - 首先,对于大多数(显然是以客户端为中心的)任务而言,客户端开发已经比服务器端快一个数量级。其次,您使用的是 frames 示例?没有人知道仍然有框架的程序,而 JQuery 缺乏对它们的支持绝对不足为奇。我提前为我的刻薄而道歉,但我无法抗拒:“是的,学习原始的 Javascript。当你完成后,我们会给你在 Cobol 家伙旁边的隔间”
    • 我认为你在这里是一个边缘案例。 IE6 的 javascript 性能很糟糕,因此优化它具有很高的优先级。此外,您不需要跨浏览器兼容性,因此该优势无效。在一般情况下 jQuery/MooTools 更可取,有时原始 JS 更好。我通常将它与 C C#/ruby/python 的区别进行比较。 C 可能更快,但我提到的其他语言通常更安全/更快地开发。
    • @Chaos - 我同意速度很重要,但更重要的是它工作 - 在每个浏览器中,每次。 “我们没有为 Firefox 编写代码”也给人很坏的印象。也许不是你的情况,但在大多数情况下。
    【解决方案4】:

    事实上,是的。用了几年的 jQuery,学习 JS 是很好的,这样你就知道 jQuery 设置的抽象层背后发生了什么。它将帮助您更好地使用 jQuery 或您可能迁移到的任何其他框架。如果需要,它还将帮助您修改这些框架。

    【讨论】:

      【解决方案5】:

      不是重叠的地方

      您已经需要了解一些用于字符串和数组操作之类的“纯”javascript,对吧?加强这些东西可能会很好。

      在某些特定情况下——比如制作书签——知道如何使用直接的 JS 查找 DOM 元素会很有用。

      但是对于大多数生产代码来说,一个好的 JS 框架要好得多,以至于我认为使用纯 JS 是愚蠢的。

      了解你可以实际使用的东西,但如果它纯粹是学术性的,我会说花时间学习另一种真正相关的技能。

      【讨论】:

      • +1 关于他已经需要了解一些“纯”javascript 才能在 JQuery 中有效这一事实,您提出了一个很好的观点。
      【解决方案6】:

      这并不特定于 Javascript,但学习较低级别的概念通常会在编写较高级别的代码时有所帮助。这是关于学习原因和方法。

      所以如果你有时间和动力,我会推荐它。

      【讨论】:

        【解决方案7】:

        我认为不知道这绝对是职业上的劣势。例如,我有一份工作专门使用 jQuery,而当我最近换了一份新工作时,他们专门使用 YUI。如果我不了解“原始”JavaScript,我将很难选择一个新框架。

        【讨论】:

          【解决方案8】:

          除非你想让 JS 成为核心能力,否则我认为你很好。

          【讨论】:

            【解决方案9】:

            我几乎属于“在必要时不要打扰”阵营。事实上,如果没有必要,我认为潜入底层语言是一种过早的优化。虽然您可能确实需要从脚本中挤出每一毫秒,但只要它可用,我会说不要打扰。

            即便如此,jQuery 也允许您通过选择器优化和类似的东西来腾出空间。

            当然,这可能是我在谈论那些在那些美妙的框架出现之前的那些年“正确”的 javascript 所造成的痛苦:)

            【讨论】:

              【解决方案10】:

              除非你打算成为一名 JavaScript 大师,否则我会说不,你可以花时间学习更好的东西。

              【讨论】:

                【解决方案11】:

                对于 javascript,我总是使用框架(jQuery/mootools), 这会是专业的吗 对我不利?

                可能不是缺点。你只是站在其他图书馆的肩膀上完成你的工作。唯一可能的缺点是,随着新版本的出现,您所学的技能要保持最新,因为您知道您所学的 X 版很可能已经过时了。

                我应该把时间花在学习上吗 直接的 javascript,或者是大多数 开发人员转向框架 还是?

                我想说每个 JS 开发人员都在使用一些库或其他库,但他们仍然应该知道他们正在使用的语言。库/框架就是这样,一个基于语言的代码库。你仍然需要了解语言的来龙去脉。例如,您知道 == 和 === 之间有什么区别吗?

                另外,如果你使用的库有问题需要深入研究,难道不知道语言有帮助吗?

                如果你有时间,我强烈推荐这样的东西,一个 Javascript 上的 video from Douglas Crockford

                【讨论】:

                  【解决方案12】:

                  知道如何在 JavaScript 中进行良好的编程是一件好事,因为了解 jQuery 并不能保护您免于编写不安全和低效的代码。它只会为您提供一些工具来加快您的编码速度。

                  【讨论】:

                    【解决方案13】:

                    IMO,您已经通过说“我是服务器端开发人员”回答了这个问题。你也想做前端代码吗?如果是这样,学习 JavaScript(和框架)会让你脱颖而出。就我个人而言,我认为如果对您正在从事的相反领域有基本的了解,这将使您成为一个更强大的开发人员——当您了解前端人员在做什么时,您可以在从事小组项目时做出更好的假设和编码调用with(或可能建议他们运行的解决方案)。

                    就像大家说的那样 - 这取决于您的长期目标以及您希望被视为什么样的开发人员。

                    【讨论】:

                      【解决方案14】:

                      我认为学习核心语言当然值得。如果你只知道框架,那么你就会被框架的做事方式所束缚。

                      虽然框架在许多情况下提供了更强大和更简洁的代码,但有时它过于矫枉过正,并且在核心语言中存在更简单的问题解决方案。

                      【讨论】:

                      • 您在谈论“核心语言”,就好像该语言是汇编语言一样! JS太简单了。库是为了加快开发任务而不是替换或隐藏核心语言。
                      • 我只是笼统地说,因为它确实适用于任何语言/框架对。
                      • “核心语言”在这里指的是 javascript 本身,而不是 DOM 部分(不是 document.getElementById() 或类似的部分)。您会惊讶于有多少人知道 jQuery,但不知道 foo.barfoo['bar'] 相同。
                      【解决方案15】:

                      没关系,只要记住Law of Leaky Abstractions即可。

                      【讨论】:

                        【解决方案16】:

                        是的!

                        使用库或抽象层意味着您将从语言的基本逻辑中“抽象”出来,即使您需要完成任何简单的任务。 库旨在加快编程和开发任务,而不是始终依赖它们。

                        【讨论】:

                          【解决方案17】:

                          您应该知道它从您那里抽象出什么,但您不需要全部学习。 jQuery 到“纯”javaScript 就像 ASP.net 到“纯”HTTP。您应该了解基本概念(尤其是因为这有助于调试和解决一些非常棘手的错误和问题),但您无需成为其中的专家。

                          【讨论】:

                            【解决方案18】:

                            jQuery 的性能可能会稍微慢一些,但它可以节省大量的开发时间。它也很直观,并且比核心 javascript 需要更少的代码。

                            【讨论】:

                              【解决方案19】:

                              如果你只是一个网页设计师,使用 jQuery 来解决图形师提出的在 CSS 中无法实现的精彩图形,请选择 jQuery。您可以将它用作 CSS 的补充,并且有很多很棒的包可以做到这一点。

                              如果您想编写其中的一些包或重做它们。了解良好的语法和良好的编码应该是必须的。

                              如果您想获得新 HTML5 元素的全部功能,与您的 JSON AJAX blob 交互,并开始在客户端传递大量数据管理、管理本地数据库、启动 Workers 在背景和创建真正的 javascript 应用程序,您只需将 jQuery 保留在原处:一个功能强大的库,您将用于 DOM 管理。

                              【讨论】:

                                猜你喜欢
                                • 2010-11-28
                                • 1970-01-01
                                • 1970-01-01
                                • 2010-10-08
                                • 1970-01-01
                                • 1970-01-01
                                • 1970-01-01
                                • 1970-01-01
                                • 2016-02-13
                                相关资源
                                最近更新 更多