jQuery、AngularJS和Node.js之间的区别

108

我刚开始学习网站开发,目前已经掌握:

HTML - 网站布局

CSS - 使其美观

JavaScript - 实现功能

那么 jQueryAngularJSNode.js 是什么呢?

做了一个快速搜索,发现jQuery 是“JavaScript 库”,AngularJS 是“基于 JavaScript 的开源前端 Web 应用框架”,而 Node.js 则是“JavaScript 运行环境”。

它们似乎都与 JavaScript 相关,所以它们是新语言吗?“框架/库”又是什么意思呢?

能否给出简单的答案?(我刚开始学习网页编程,但熟悉编程)。


3
一个“库”基本上只是一组其他人为你编写和测试过的有用函数 - jQuery 是 JavaScript 函数的集合。一个“框架”是一种抽象,其中常见的应用程序结构代码已经为您编写了,您可以根据您特定应用的需求覆盖其中的位。NodeJS 是一个工具,它让你在除浏览器之外的其他地方运行 JavaScript(通常在 Web 服务器上,所以代替 Java 或 DotNET 或 PHP 等)。 - nnnnnn
3
你会没事的,你知道为什么吗?因为你是一个英语使用者。已经有很多东西适合你了。你只需要花时间去学习它。在我的国家,英语是一个大问题。我认识很多人,他们因为英语不好而努力学习编程(很多人已经放弃并转行其他工作)。但是,正如我所说的,这需要你花费很多时间。 - vothaison
请参见此问题 - nnnnnn
6个回答

203

jQuery是一个库(客户端)

jQuery是一个快速、小巧、轻量级、“写得更少,做得更多”和功能丰富的JavaScript库。

它通过易于使用的API使HTML文档遍历和操作、事件处理、动画和Ajax等事项变得更加简单,并可在众多浏览器上运行。

AngularJS是一个MVC框架(客户端)

AngularJS是一个客户端JavaScript MVC框架,用于开发动态Web应用程序。

它让您将HTML作为模板语言,并扩展HTML的语法以清晰而简洁地表达应用程序的组件。AngularJS的数据绑定和依赖注入消除了大部分您必须编写的代码。所有这些都发生在浏览器内部,使其成为任何服务器技术的理想合作伙伴。AngularJS最初是在Google中启动的一个项目,但现在它是一个开源框架。

Node.js是一个平台和运行环境(服务器端)

Node.js是一个开源的、跨平台的运行时环境,用于开发基于Google Chrome的JavaScript引擎(V8 Engine)的服务器端和网络应用程序。Node.js应用程序使用JavaScript编写,并可以在OS X、Microsoft Windows和Linux上在Node.js运行时中运行。
Node.js还提供了丰富的各种JavaScript模块库,极大地简化了使用Node.js开发Web应用程序的过程。Node.js使用事件驱动、非阻塞I/O模型,使其轻巧高效,非常适合在分布式设备上运行的数据密集型实时应用程序。
库与框架之间的关键区别在于“控制反转”。当您从库中调用方法时,您处于控制状态。但是对于框架,控制被反转:框架调用您。

Enter image description here

一组编写Web应用程序时有用的函数。您的代码负责,并在适当时调用库。例如,jQuery。

框架

Web应用程序的特定实现,其中您的代码填充细节。框架负责,并在需要特定于应用程序的内容时调用您的代码。例如,AngularJS,DurandalEmber.js等。


27

简而言之:

  • jQuery - 是一组JavaScript函数,用于操作HTML和CSS
  • AngularJS - 是一个JavaScript框架,帮助您组织HTML和CSS
  • Node.js- 是一个JavaScript运行时... 类似于服务器或本地计算机上的浏览器,但没有浏览器渲染引擎和附加功能...它只是一个运行时

库和框架的主要区别:
框架强制规定特定的体系结构,并期望应用程序遵循其预期
是一组低级构建块,通常提供针对解决特定问题的粒度函数(即jquery.post()函数)*


17

jQuery

jQuery是一个库,可以为您完成很多事情。它包含许多方便的常用函数,因此您不必自己编写这些代码。这就像在石器时代当木匠和有一系列电动工具之间的区别。

AngularJS

AngularJS是一个框架,用于构建交互式网站和Web应用程序的前端图形用户界面(GUI)。如果与Node.js一起使用,则会产生强大的组合。

Node.js

Node是一个框架,用于构建后端Web服务,例如API REST端点,从背景中拉取数据。您可以使用AngularJS将按钮和GUI元素连接到这些端点,以构建丰富的、数据驱动的Web应用程序和Web报告。作为RESTful,这些服务等待前端发送请求(用户单击按钮),然后执行数据库查询或读取文件并返回一些数据,Web应用程序可以显示给用户。

总体框架

早期的木匠比喻中,框架就像聘请专业建筑师团队为您完成工作。您以足够详细的方式描述工作,他们接管并实际完成。因此,您的任务就是用正确的语言描述工作规格,让建筑师团队理解,而不是自己做工作。

AngularJS就像室内设计团队以及电气工程,而Node.js则是其他所有东西。简化了吗?也许。但你要求一个简单的解释。

因此,您可以认为AngularJS和Node.js是相反的,但它们可以在同一应用程序或项目中一起使用。它们填补不同的目的,但它们都使用JavaScript(在某种程度上使用jQuery)来完成。


7
  • 框架(Framework):它描述了您应如何呈现代码的特定结构。就像一个代码模板,配合一些助手、构造函数等来解决/简化特定问题或使您的架构有条不紊。例如,Backbone.js,RequireJS,Socket.IO。框架封装了通用应用程序功能,允许开发人员专注于其应用程序中独特的部分。

  • 库(Library):是完整的工具包,高度抽象了不同的层,如浏览器、DOM模型等。正如一个好的工具包一样,它提供了很多工具和美妙的东西供您使用,通常简化了您的编码体验。例如jQuery和MooTools

这里查看更多信息。


“Library: Is an entire toolkit” - 注意,如果它的目的仅是处理日期/时间数据,则它可能是非常小的工具包。 - nnnnnn

7

以下是它们日益普及的原因:

jQuery

  • jQuery 代码相对较短。有时候只需五行 jQuery 代码就可以等效于25行传统 JavaScript 代码(例如使用 AJAX 加载数据文件)。这意味着更少的代码和更小的文件。
  • 大型库:与其他 JavaScript 库相比,jQuery 可以执行大量功能。
  • 超级易用的 Ajax:jQuery 让您轻松开发 Ajax 模板,Ajax 可以实现更流畅的界面,在不需要重新加载整个页面的情况下执行页面操作。

AngularJS

  • 双向数据绑定: 尽管你可以在jQuery中编写一个简单的双向数据绑定事件,但JavaScript MVC库提供了一种更加声明性(使用HTML)的方式来连接模型和视图。
  • 非常适合SPA(单页应用程序):像AngularJS、Aurelia、Ember.jsMeteor这样的库为您提供了所有的管道,而不是在jQuery中编写所有内容。

Node.js

  • 速度快:除了闪电般快速的JavaScript执行外,Node.js真正的魔力在于事件循环。事件循环是一个单线程,可以异步执行所有I/O操作。传统上,I/O操作要么同步运行(阻塞),要么通过生成并行线程来执行工作。
  • 实时轻松:如果Node.js擅长许多并发连接,那么它在多用户、实时Web应用程序(如聊天和游戏)方面也表现出色。Node.js的事件循环负责多用户需求。

2
“5行jQuery代码相当于25行传统JavaScript代码” - 这取决于你想做什么。对于某些任务,差异很小,而对于其他任务,则存在很大差异。 “这意味着文件更小,网页加载更快。” - 除了jQuery为您节省的编写代码外,所有内容都包含在jQuery文件中,该文件也必须下载到浏览器中。因此,总代码量可能更多。 - nnnnnn
这些文件在文档加载时被加载。由于最佳实践是在DOM加载完成之前不使用JS,因此它们不会影响单击或悬停事件的执行速度。 - ab29007
在你的答案中,你说“更快的加载”。那并不是真的,或者至少不是普遍适用的。在文档加载时加载的文件仍然需要被下载,并且(取决于页面)必须在用户可以有意义地与页面交互之前被下载。 (注意:我并不是说jQuery一无是处,只是你的描述最多是误导性的。) - nnnnnn
我可以在同一个程序中编写JQuery和JavaScript吗? - K Split X
选择其中之一(angular / jquery)取决于您的最终目标。是网站还是Web应用程序。 - ab29007
显示剩余6条评论

6
你使用HTML、CSS和JavaScript创建交互式网站。
jQuery是一种用JavaScript编写的工具。
AngularJS是一种用JavaScript编写的工具。
React是一种用JavaScript编写的工具。
这些工具根据自己的规则帮助您管理HTML、CSS和JavaScript之间的交互。一旦一个工具变得非常大,根据其特性,它可能会被称为“库”或“框架”。
我们经常在Web浏览器中运行JavaScript。但是几年前出现了一个叫做Node.js的东西,它允许我们轻松地在浏览器之外运行JavaScript。我喜欢把它看作是“在浏览器之外运行JavaScript的程序”(这意味着...没有HTML或CSS可查看)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接