您如何描述 jquery 和 angularjs 之间 DOM 抽象的不同性质?

How would you describe the different nature of DOM abstraction between jquery and angularjs?

我正在寻找关于我认为 jquery 和 angular 之间完全不同的 DOM 抽象方法的描述,但我找不到它。

我想我对 jquery 和 angularjs 都比较了解,经过多年使用前者和后者进行开发。

使用 jquery 完成的

DOM 抽象看起来与使用 angularjs 完成的 DOM 抽象根本不同。

但我找不到这些差异的正式定义,我不知道这是否是客户端 Web 应用程序设计模式的变化,如果是的话,它背后的理念是什么。

理论上jquery逻辑与DOM的解耦更严格,因为所有js代码都被排除在HTML之外,但实际上(在我看来)angular 指令(与双向绑定相结合)使您可以更加简洁明了 DOM 抽象。

但这是否是 Web 开发模式的转变?看起来是这样,既有击倒,也有反应,ember,可能还有更多...分享类似的方法。

这只是采用 MVC 的结果吗?

如果有人能指出我背后的一些理论,我将不胜感激。

试着用 "imperative" 和 "declarative" 来思考它。使用 jQuery 你编写的 JS 会创建一个严格的 DOM 结构,绑定到你要显示的数据(你遍历一个数组并为每个项目生成一个 <tr> 例如)。使用 AngularJS,您在数据(模型)和我们有时称为 "bindings" 的表示 (DOM) 之间引入了一个新的 "language" - 抽象层。 ng-repeat 在幕后的工作方式与编写生成 <tr> 的 jQuery 循环没有什么不同,但你自己不直接这样做,它是在一个很好的声明下抽象出来的包装器,您告诉 AngularJS 您想要 DOM 中的内容列表,并且该列表应该绑定到模型层中的内容列表。

让我说得更清楚:在内部 AngularJS 使用 "tiny, API-compatible subset of jQuery that allows Angular to manipulate the DOM in a cross-browser compatible way" - https://docs.angularjs.org/api/ng/function/angular.element