通过TodoList案例对比Vue.js的MVVM设计模式与JQuery的MVP设计模式

Vue MVVM设计模式:

在使用vue进行编程时,不会再涉及到DOM的操作,取而代之的是修改数据层,当把数据进行变更的时候,vue之中它的底层会自动的根据数据的不同帮助我们去重新渲染页面。

编码时不需要关注VM层是如何实现的,它是vue内置的,只需要关注M层(模型层)和V层(视图层)。

使用MVVM设计模式进行编码时,编码的重点一部分在于视图层,一部分在于模型层。

data:指M层。

<div>模板标签:指V层。

vue:自身实现VM层。vue会监听到数据变了会帮你改变视图层,vue也能监听到视图层有一些事件触发然后帮助你通过VM这一层去调用一些你写的逻辑代码,通过这些代码改变了M层的数据,当数据发生变化时,VM层又会自动的把数据的变化映射到视图层的上面来。

VM层的实现:引入虚拟DOM+ES5的一个核心API:Object.defineProperty(),来实现VM层的架构体系。

MVVM设计模式的好处:

开发时只需要关注M层的开发。代码会得到显著的减少。

MVVM里最重的一层是M层。

vue是面向数据进行编程。

JQuerty:MVP设计模式:

M(model):模型层(数据层)(弱)

V(view):视图层,页面上的DOM展示

P(presenter):控制器(最核心的一层),视图和模型层的中转站,大量代码做DOM的操作,模型层非常弱。视图发生改变点击提交时控制器会去执行,控制器里负责了所有的业务逻辑,控制器可以去调模型层去发Ajax请求,控制器通过DOM操作再改变视图层。

在大型项目中,JQuery编写的百分之七八十以上的代码都在操作DOM。

JQuery是面向DOM在做开发。

vue实现todolist:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3
 4 <head>
 5     <meta charset="UTF-8">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 8     <title>todolist</title>
 9     <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
10 </head>
11
12 <body>
13     <div id="app">
14         <!-- v-model:数据的双向绑定 -->
15         <!-- 把input里的value值和data里的value值做了绑定 -->
16         <input type="text" name="" id="" v-model="inputValue">
17         <!-- v-on:绑定事件 -->
18         <button v-on:click="handleBtnClick">提交</button>
19         <ul>
20             <!-- item指list中的每一项(循环过程的每一项内容) -->
21             <!-- v-for指令:循环数据 -->
22             <li v-for="item in list">{{item}}</li>
23         </ul>
24     </div>
25
26     <script>
27         var app = new Vue({
28             el: ‘#app‘,
29             data: {
30                 list: [],
31                 inputValue: ‘‘
32             },
33             methods: {
34                 handleBtnClick: function() {
35                     this.list.push(this.inputValue);
36                     this.inputValue = ‘‘;
37                 }
38             }
39         })
40     </script>
41 </body>
42
43 </html>

jquery实现todolist:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3
 4 <head>
 5     <meta charset="UTF-8">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 8     <title>TodoList Jquery</title>
 9     <script src="https://code.jquery.com/jquery-3.3.1.js"></script>
10 </head>
11
12 <body>
13     <div>
14         <input type="text" id="input">
15         <button id="btn">提交</button>
16         <ul id="list"></ul>
17     </div>
18
19     <script>
20         function Page() {
21
22         }
23         $.extend(Page.prototype, {
24             init: function() {
25                 this.bindEvents()
26             },
27             bindEvents: function() {
28                 var btn = $(‘#btn‘);
29                 btn.on(‘click‘, $.proxy(this.handleBtnClick, this)); //proxy:改变this的指向
30             },
31             handleBtnClick: function() {
32                 var inputEle = $(‘#input‘);
33                 var inputValue = inputEle.val(); //获取input框的内容
34                 var ulEle = $(‘#list‘);
35                 ulEle.append(‘<li>‘ + inputValue + ‘</li>‘);
36                 inputEle.val(‘‘);
37             }
38         })
39         var page = new Page();
40         page.init();
41     </script>
42 </body>
43
44 </html>

原文地址:https://www.cnblogs.com/knuzy/p/9257623.html

时间: 2024-08-05 06:45:41

通过TodoList案例对比Vue.js的MVVM设计模式与JQuery的MVP设计模式的相关文章

Vue.js 和 MVVM 小细节

Vue.js 和 MVVM 小细节 MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式,其核心是提供对View 和 ViewModel 的双向数据绑定,这使得ViewModel 的状态改变可以自动传递给 View,即所谓的数据双向绑定. Vue.js 是一个提供了 MVVM 风格的双向数据绑定的 Javascript 库,专注于View 层.它的核心是 MVVM 中的 VM,也就是 ViewModel. ViewModel负责连接 View 和 Mode

Vue.js – 基于 MVVM 实现交互式的 Web 界面

Vue.js 是用于构建交互式的 Web  界面的库.它提供了 MVVM 数据绑定和一个可组合的组件系统,具有简单.灵活的 API.从技术上讲, Vue.js 集中在 MVVM 模式上的视图模型层,并通过双向数据绑定连接视图和模型.实际的 DOM 操作和输出格式被抽象出来成指令和过滤器.相比其它的 MVVM 框架,Vue.js 更容易上手. 官方网站      插件下载 HTML: <div id="demo"> {{message}} <input v-model=

Vue.js 和 MVVM 的小细节

MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式,其核心是提供对View 和 View Model 的双向数据绑定,这使得View Model的状态改变可以自动传递给 View,这就是所谓的数据双向绑定. Vue.js 是一个提供 MVVM 风格的双向数据绑定的 Javascript 库,专注于View 层.它的核心是 MVVM 中的 VM,也就是 ViewModel.ViewModel负责连接 View 和 Model,保证视图和数据的一致性,这种轻

Vue.js 和 MVVM

MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式,其核心是提供对View 和 ViewModel 的双向数据绑定,这使得ViewModel 的状态改变可以自动传递给 View,即所谓的数据双向绑定. Vue.js 是一个提供了 MVVM 风格的双向数据绑定的 Javascript 库,专注于View 层.它的核心是 MVVM 中的 VM,也就是 ViewModel. ViewModel负责连接 View 和 Model,保证视图和数据的一致性,这种轻量

Vue.js前端MVVM框架实战篇

相信大家对vue.js这个前端框架有了一定的了解.想必也想把Vue急切的运用在项目中,看看它的魅力到底有多大?别急,今天我会满足大家的想法. 我们一起来看看“Webpack+Vue”的开发模式相比以往老项目(Gulp+jQuery)的开发模式的魅力在哪里. 一.配置开发环境 1.先安装Node和Webpack 2.建立一个文件夹为:Vue-project,然后初始化生成package.json.运行以下指令: npm init 初始化完成后,添加项目开发所依赖的包 "dependencies&q

Vue.js与React的全面对比

Vue与React的对比 Vue.js与React.js从某些反面来说很相似,通过两个框架的学习,有时候对一些用法会有一点思考,为加深学习的思索,特翻阅了两个文档,从以下各方面进行了对比,加深了对这两个框架的认知. 1.数据绑定 1.1 Vue中有关数据绑定的部分 vue是双向绑定, Vue.js 最核心的功能有两个,一是响应式的数据绑定系统,二是组件系统.所谓双向绑定,指的是vue实例中的data与其渲染的DOM元素的内容保持一致,无论谁被改变,另一方会相应的更新为相同的数据.这是通过设置属性

vue.js 入门案例

作者:故事我忘了¢个人微信公众号:程序猿的月光宝盒 1 vue.js 研究 1.1 vue.js 介绍 1.1.1.vue.js是什么? Vue (读音 /vju?/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计 为可以自底向上逐层应用.Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合.另一方面,当与现代化的工具链以及各种 支持类库结合使用时, Vue 也完全能够为复杂的单页应用提供驱动. 渐进式框架:Progressi

从零开始学习Vue.js,学习笔记

一.为什么学习vue.js methods 只有纯粹的数据逻辑,而不是去处理 DOM 事件细节. vue.js兼具angular.js和react的优点,并且剔除了他们的缺点 官网:http://cn.vuejs.org/ 手册:http://cn.vuejs.org/v2/api/ 二.vue.js是什么 Vue是一个"MVVM框架(库)",和angular类似,相比angular小巧,比较容易上手 Vue是一个构建用户界面点的渐进式框架,与其他重量级框架不同的是,vue采用自底向上

vue.js的快速入门使用

1. vue.js的快速入门使用 1.1 vue.js库的下载 vue.js是目前前端web开发最流行的工具库,由尤雨溪在2014年2月发布的. 另外几个常见的工具库:react.js /angular.js 官方网站: ? 中文:https://cn.vuejs.org/ ? 英文:https://vuejs.org/ 官方文档:https://cn.vuejs.org/v2/guide/ vue.js目前有1.x.2.x和3.x 版本,我们学习2.x版本的. 1.2 vue.js库的基本使用