为什么在Angular控制器中使用jQuery是不好的?

21 浏览
0 Comments

为什么在Angular控制器中使用jQuery是不好的?

已关闭。此问题需要更加集中的思考。目前无法接受回答。

已锁定。此问题及其回答已锁定,因为问题不属于主题,但具有历史意义。目前无法接受新的答案或互动。

假设我熟悉在jQuery中开发客户端应用程序,但现在我想开始使用AngularJS。您能描述必要的范式转变吗?以下是几个问题,可能有助于您构筑答案:

  • 我该如何不同地构建和设计客户端Web应用程序?最大的区别是什么?
  • 我应该停止使用哪些事物?应该用什么来代替?
  • 有哪些服务器端考虑/限制吗?

我并不想要一个关于jQueryAngularJS的详细比较。

admin 更改状态以发布 2023年5月21日
0
0 Comments

命令式 → 声明式

在 jQuery 中,选择器用于查找 DOM 元素,然后绑定/注册事件处理程序。当触发事件时,该(命令式)代码执行以更新/更改 DOM。

在 AngularJS 中,您要考虑的是视图(views),而不是 DOM 元素。视图是(声明式)HTML,其中包含 AngularJS 指令。指令在幕后为我们设置事件处理程序并提供动态数据绑定。选择器很少用到,因此对 ID(以及某些类型的类)的需求大大减少。视图与模型(通过范围)相关联。视图是模型的一个投影。事件更改模型(即数据、范围属性),并且投影这些模型的视图会“自动”更新。

在 AngularJS 中,将注意力放在模型上,而不是 jQuery 选择的 DOM 元素上,这些元素保存了您的数据。将视图视为这些模型的投影,而不是注册回调以操作用户所见内容。

关注点分离

jQuery 采用无侵入式 JavaScript - 行为(JavaScript)与结构(HTML)分离。

AngularJS 使用控制器和指令(每个都可以有自己的控制器和/或编译和链接函数)将行为从视图/结构(HTML)中删除。Angular 还有服务和过滤器来帮助分离/组织您的应用程序。

另请参见 https://stackoverflow.com/a/14346528/215945

应用程序设计

设计 AngularJS 应用程序的一种方法:

  1. 考虑您的模型。为这些模型创建服务或自己的 JavaScript 对象。
  2. 考虑如何呈现您的模型-您的视图。为每个视图创建 HTML 模板,使用必要的指令来获取动态数据绑定。
  3. 将控制器附加到每个视图(使用 ng-view 和路由或 ng-controller)。让控制器仅查找/获取视图需要做其工作的任何模型数据。尽可能使控制器变薄。

原型继承

您可以在不知道 JavaScript 原型继承如何工作的情况下使用 jQuery 完成许多工作。当开发 AngularJS 应用程序时,如果您对 JavaScript 继承有很好的了解,则可以避免一些常见陷阱。建议阅读:What are the nuances of scope prototypal / prototypical inheritance in AngularJS?

0