从零开始学习Vue(二)
思维方式的变化
- WebForm时代, Aspx.cs 取得数据,绑定到前台的Repeater之类的控件.重新渲染整个HTML页面.就是整个页面不断的刷新;后来微软打了个补丁,推出了AJAX控件,比如UpdatePanel,就不是整个HTML页面渲染了,只是渲染指定的UpdatePanel里面的DOM
- MVC时代, Controller的Method取得数据,传递到Model或者ViewBag,前台的Razor引擎就是比较纯粹的HTML了,对Model的数据做个循环,就能显示出需要的数据;这个方法方便和设计师合作.通常设计师设计是图片,再切图成CSS/HTML, 取消的控件的概念,整个html就比较清爽了.
- Jquery的兴起, 你要在页面改变某个元素,你得操心具体的DOM的结构.看下面的代码是不是很熟悉呢?
$.ajax({
 url: '/api/data/query',
 data: {
 id: id
 }
 }).done(function(res){
 if(res.code == ) {
 var name = res.data.name;
 $input.val(name);
 $name_text.text(name);
 }
 }) var params = {name: name}; $.ajax({
 url: '/api/data/save',
 data: params
 }).done(function (res) {
 if (res.code == ) {
 $name_text.text(name);
 }
 })这种实现的主要问题在于: 1)在数据变化的时候,必须手工更新DOM,看那两个ajax请求的回调就知道。对这种简单页面可能还好说,要是页面里面包含几十个不同类型的表单控件时,这些页面的更新操作就会变得非常繁杂,而且还容易出错; 2)缺乏封装,没有体现数据的管理,功能都是直接靠请求与DOM操作实现的,实际上按照面向对象的思路以及职责分离的原则,应该把数据的同步和数据的管理功能单独封装起来,把界面变化的功能也单独封装起来,两部分的内容通过接口或者事件来交互。 
从零开始学习Vue(二)的更多相关文章
- 从零开始学习jQuery (二) 万能的选择器
		本系列文章导航 从零开始学习jQuery (二) 万能的选择器 一.摘要 本章讲解jQuery最重要的选择器部分的知识. 有了jQuery的选择器我们几乎可以获取页面上任意的一个或一组对象, 可以明显 ... 
- 从零开始学习Vue.js,学习笔记
		一.为什么学习vue.js methods 只有纯粹的数据逻辑,而不是去处理 DOM 事件细节. vue.js兼具angular.js和react的优点,并且剔除了他们的缺点 官网:http://cn ... 
- 从零开始学习Android(二)从架构开始说起
		我们刚开始学新东西的时候,往往希望能从一个实例进行入手学习.接下来的系列连载文章也主要是围绕这个实例进行.这个实例原形是从电子书<Android应用开发详解>得到的,我们在这里对其进行详细 ... 
- 从零开始学习Vue(三)
		我们从一个例子来学习组件,vuejs2.0实战:仿豆瓣app项目,创建自定义组件tabbar 这个例子用到其他组件,对于初学者来说,一下子要了解那么多组件的使用,会变得一头雾水.所以我把这个例子改写了 ... 
- 从零开始学习vue(2)
		一.vue实例 每个vue应用都是通过Vue构造函数创建的一个新的实例开始的: var vm = new Vue({ //选项对象 }) 在这其中vm(viewModel的简称)通常都表示vue实例的 ... 
- 从零开始学习Vue(一)
		因为最近有个项目的需求是,微信公众号+IOS/Android APP, 界面都很类似. 以往的做法是APP是调用JSON接口,后台只负责提供接口. 而H5,我以前都是用Jquery,用来写手机网站总是 ... 
- 前端框架开始学习Vue(二)
		1 根据关键字实现数组的过滤 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ... 
- oracle从零开始学习笔记 二
		多表查询 等值连接(Equijoin) select ename,empno,sal,emp.deptno from emp,dept where dept.deptno=emp.deptno; 非等 ... 
- 从零开始学习Vue(四)
		这里引入一个概念SPA(single Page Application), 接着上次的例子,我们在页面底部做了一个Tab的菜单,点击不同的按钮应该是显示不同的内容. 按传统的MVC的思维,我要在Con ... 
随机推荐
- 01: shell基本使用
			目录: 1.1 编写登录欢迎脚本 1.2 重定向与管道操作 1.3 使用shell变量 1.4 特殊的shell变量 1.5 read与echo使用比较 1.1 编写登录欢迎脚本返回顶部 (1)新建脚 ... 
- GreenOpenPaint的实现(五)矩形框
			想显示一副图片相对来说比较容易.但是想在SDI中显示一个可以拖拽的矩形框,并且在滚动和缩放下都不变形,是很困难的. MFC应该说在这个方面提供了强大的支持,但是也有一些是由于历史的原因需要去除的地方, ... 
- Oracle RAC(Real Application Clusters)とは
			ここからはOracle RAC(Real Application Clusters)の基本的な概念について述べていきたいと思います. 「RAC」の読み方は普通に「ラック」です. その前に.通常のデータ ... 
- C#  string字节数组转换
			string转byte[]:byte[] byteArray = System.Text.Encoding.Default.GetBytes ( str ); byte[]转string:string ... 
- Python3基础 str format 位置参数与关键字参数
			Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ... 
- Python3基础 __setattr__ 在属性被赋值的时候,新增提示功能
			Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ... 
- LightOJ - 1247 Matrix Game (Nim博弈)题解
			题意: 给一个矩阵,每一次一个玩家可以从任意一行中选任意数量的格子并从中拿石头(但最后总数要大于等于1),问你谁赢 思路: 一开始以为只能一行拿一个... 将每一行石子数相加就转化为经典的Nim博弈 ... 
- StringUtils类常用的方法讲解
			StringUtils 方法的操作对象是 Java.lang.String 类型的对象,是 JDK 提供的 String 类型操作方法的补充,并且是 null 安全的(即如果输入参数 String 为 ... 
- python ros topic demo
			发布者: #!/usr/bin/env python #coding=utf- import rospy from std_msgs.msg import String def talker(): ... 
- Mac OS下 selenium 驱动safari日志
			/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home/bin/java "-javaagent:/Applicat ... 
