javascript - 当作者说 "AngularJS has compiled the DOM"时,它实际上意味着什么?

标签 javascript angularjs

我正在浏览Lukas Ruebbelke AngularJS in Action ,

作者在书中的很多地方都提到了,

AngularJS 中的 View 是经过编译后的HTML AngularJS

我真的不明白编译过程的作用以及幕后到底发生了什么?

或者它是否与 粘合 HTML 的行为有关 Controller 具有范围

最佳答案

AngularJS 编译以不同的方式工作。它直接作用于 HTML DOM 而不是字符串,并根据需要对其进行操作。它在模型和 View 之间使用双向数据绑定(bind)来同步数据。

Agular 的 HTML 编译器允许将新的行为或属性附加到任何 HTML 元素。 Angular 将这些行为称为指令。 AngularJS 编译过程发生在 Web 浏览器中;不涉及服务器端或预编译步骤。 Angular 使用 $compiler 服务来编译 Angular HTML 页面。

Angular 编译过程在 HTML 页面(静态 DOM)完全加载后开始。它分两个阶段发生:

1.编译

它遍历 DOM 并收集所有指令。结果是一个链接函数。

2.链接

它将指令与范围结合起来并生成实时 View 。范围模型中的任何更改都会反射(reflect)在 View 中,并且用户与 View 的任何交互都会反射(reflect)在范围模型中。 编译和链接的概念来自C,首先编译代码,然后链接它以实际执行它。 AngularJS 中的过程也非常相似。

所以我们可以说,AngularJS中的 View 就是经过AngularJS编译后的HTML

关于javascript - 当作者说 "AngularJS has compiled the DOM"时,它实际上意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32230003/

相关文章:

javascript - 将特定日期之前的所有剩余日期插入 slider 中

javascript - Angular 手动引导在 IE 10 上不起作用

javascript - Visual Studio - 为 HTML 模板和语法突出显示使用自定义脚本标记类型

javascript - 有没有办法通过属性获取元素?

javascript - 使用 $q 同步多个 Angular $http 调用/使用 $q.catch 进行错误处理

Javascript数组到句子

javascript - 将对象注入(inject)到服务函数中

javascript - 如何将应用程序从 Sublime Text 引入 Web IDE 进行共享?

javascript - 启用 "Terms and conditions"上的复选框滚动不起作用

javascript - Videojs HLS Live 长时间播放内存问题