角度和Vue模板和绑定

时间:2017-02-09 13:48:52

标签: javascript angularjs reactjs vue.js

我是一名新开发人员。我一直在努力加快速度。部分原因让我回顾了Angular,React和Vue。这些中的每一个似乎都使用称为“声明性绑定”和“模板化”的东西。我相信我理解这些是什么。但是,我不明白为什么我需要它们。我的问题是:

  1. 我为什么要关心声明性绑定?
  2. 我为什么要关心模板?
  3. 它们基本上看起来像两种生成HTML的方式。出于这个原因,我觉得我错过了一些东西。有人能帮助我理解这个吗?

    由于

2 个答案:

答案 0 :(得分:1)

HTML在Javascript之前。所以现在HTML作为JS代码可以读取和写入的对象树暴露给Javascript。

这就是为什么旧的方式赋予网站生命(JQuery时代)的原因在于在预先存在的HTML页面之上运行一层JS代码。 JS程序查找页面的交互部分并附加代码以响应用户事件。 JS代码还可以找到页面的可移动部分,以便完成或更新它们。

但是当JS应用程序以这种方式编写时,它们很难维护和改进。一旦你想改变HTML中的东西(将一个按钮从一个页面移动到另一个页面,将一个列表转换成一个表格,添加另一个数值显示等),负责为HTML提供动力的JS代码就会过时,经常坏了。此外,一旦页面出错,就没有简单的方法来追踪哪些JS代码负责屏幕上的内容。

如果您三思而后行,那么在开发复杂的应用程序时,您希望颠倒JS和HTML之间的关系。这是模板/绑定中间件的目的。它们反转了JS和HTML之间的关系,因此JS对象现在成为构建用户界面的基础层。

像Angular这样的框架或像Knockout这样的库,可以使用指令丰富HTML,这样现在的HTML页面就像在Javascript之上运行的真实程序一样。 Javascript层仅支持应用程序逻辑,并且不再依赖于用户界面的制作方式。当你移动一个按钮,用另一个替换某个东西,将一个页面分成两个,等等时,它不会中断。

模板化是这种方法的第一步。它包括将JS变量的名称直接放入Html中。模板引擎将在执行模板时将这些变量替换为它们的值。

但模板还不够。当任何显示的变量发生变化时,您仍然需要手动编写模板的执行代码。这是程序员工作中最糟糕的部分,它跟踪可以更改页面组件的每个可能事件,并手动添加对这些事件的绑定,以便更新组件。

真正的双向数据绑定中间件比模板引擎做得更多。它最初的工作方式类似于模板引擎,但它也跟踪所有替换的变量/表达式,并在值发生变化时立即自动更新HTML文档。它还可以神奇地"当用户编辑表单字段等时,在JS变量中应用更改。

这与您在Excel电子表格中编写数字时的情况完全相同,并且附近的公式会自动更新。 excel公式是"声明性绑定的形式"。您不需要编写代码来更新公式结果,Excel会为您完成繁琐的工作。

这种新的编码方式是一个真正的进步的原因是,在Real Life(tm)中,不断发展的应用程序的视图层的变化比其逻辑层(想想您的银行网站)多10倍。因此,能够在不破坏JS逻辑中的所有内容的情况下修改页面布局是Web开发人员的幸福。

答案 1 :(得分:0)

数据绑定和模板是加入html和javascript的粘合剂。

如果您不使用其中一个框架,则需要编写大量逻辑以保持同步DOM和应用状态(javascript),例如在输入元素上更新文本,创建一个列表({ {1}})显示数组的数据,处理按钮的点击...

除此之外,您提到的框架通常还提供其他功能,如路由,动画,资源处理。

如果您是新开发人员,您应该阅读有关MVVM模式的内容,并且可能会开始使用更简单的框架,例如knockout。 Knockout的教程非常简单易懂