注意:哪两层绑定?

MVVM已经相当成熟了,主要运用但不仅仅在网络应用程序开发中。当下流行的MVVM框架有
Vue.js,Angular]S等。
View是视图层,也就是用户界面。前端主要由HTML和CSS来构建,为了更方便地展现
ViewModel或者Model层的数据,已经产生了各种各样的前后端模板语言,比如FreeMarker
hymeleaf等等,各大MVVM框架如Vue.js,AngularJS,EJS等也都有自己用来构建用户界面的
内置模板语言。
Model是指数据模型,泛指后端进行的各种业务逻辑处理和数据操控,主要围绕数据库系统展
开。这里的难点主要在于需要和前端约定统一的接口规则
- ViewMode|是由前端开发人员组织生成和维护的视图数据层。在这一层,前端开发者对从后端获取的Mode|数据进行转换处理,做二次封装,以生成符合View层使用预期的视图数据模型。
- 需要注意的是ViewModel所封装出来的数据模型包括视图的状态和行为两部分,而Model层的数据模型是只包含状态的
- 比如页面的这一块展示什么,那一块展示什么这些都属于视图状态(展示)
- 页面加载进来时发生什么,点击这一块发生什么,这一块滚动时发生什么这些都属于视图行为(交互)
- 视图状态和行为都封装在了ViewModel里。这样的封装使得ViewModel可以完整地去描述
view层。由于实现了双向绑定,viewModel的内容会实时展现在View层,这是激动人心的,因为前端开发者再也不必低效又麻烦地通过操纵DOM去更新视图。- MVVM框架已经把最脏最累的一块做好了,我们开发者只需要处理和维护ViewModel,更新数据视图就会自动得到相应更新,真正实现事件驱动编程。
- View层展现的不是Model层的数据,而是ViewMode1的数据,由ViewModel负责与Model
层交互,这就完全解耦了View层和Mod!层,这个解耦是至关重要的,它是前后端分离方案实施的
重要一环。
注意:Vue不支持IE8及以下悵本,因为Vue使用了IE8无法模拟的ECMAScript5特性。但
它支持所有兼容ECMAScript5的浏览器。
vue2
{{msg}}
之前HTML等静态页面,在与后台交互时通过操作dom元素来进行的,而vue通过vm来绑定视图和模型,观察模型数据变化同步到视图,监听视图变化来通知模型,从而不直接操作dom元素
测试:为了能够更直观的体验Vue带来的数据绑定功能,我们需要在浏览器测试一番,操作流程如下:
注意:需要将模板放到el元素选择标签内部
注:使用V-*绑定属性数据是不需要双花括号包裹的,若绑定值数据,而在后面要使用则需使用模板{{}}
vue2
{{msg}}{{name}}
鼠标悬浮试试
注:===三个等号在JS中表示绝对等于(就是数据与类型都要相等)
注:items是数组,item是数组元素迭代的别名。之后学习的Thymeleaf模板引擎的语法和这个十分的相似
控制台可以通过push方法来给vm新加值vm.items.push({msg:‘hadoop’})
ture
false
优秀
及格
不及格
无成绩
{{item.msg}}---{{index}}
vue2
{{msg}}{{name}}
鼠标悬浮试试
请说一段语言
点我链接...
点我按钮...
点我按钮3...
class区域
class区域
{{index}}---{{item.messae}}
{{key}}:{{value}}