MV*

前言

前端演进是段特别有意思的历史。人们总是在过去就做出未来需要的框架,而现在流行的是过去的过去发明过的。如,响应式设计不得不提到的一个缺点是:

他只是将原本在模板层做的事,放到了样式(CSS)层来完成

前言

什么是前端?

wiki:前端Front-End和后端Back-End是描述进程开始和结束的通用词汇。前端作用于采集输入信息,后端进行处理,计算机程序的界面形式,视觉呈现属于前端。

前言

在MV*中前端属于哪个?

V?

我们将model,view与其他要素关联起来的某种形式叫做MV*架构

前言

复杂度同力一样不会消失,也不会凭空消失

它总是从一个物体转移到另一个物体

或者从一种形式转换为另一种形式

MVC

层次 职责
v 提供服务、显示信息、用户请求、HTTP请求和命令行调用
C 逻辑处理,系统中真正的核心
M 与数据库、消息系统、事务管理器和其他软件包通信

有哪些MVC流行框架?

SSH的Spring

我们在Controller层应该做的事情是?

1.处理请求的参数

2.渲染和重定向

3.选择Model和Service

4.处理Session和Cookie

因为Controller层的足够强大,所以View在MVC时代所做的事情就是渲染,被动渲染

而我们叫做前端开发工程师

MVP

MVP?

MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负责显示。

作为一种新的模式,MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会直接从Model中读取数据而不是通过 Controller。

MVVM

MVVM,全称Model-View-ViewModel,Model提供数据,View负责显示,ViewModel通过双向绑定实现视图更新。

MVVM的核心思想:不关注数据如何呈现到页面,由框架更新Model和VIew

Jquery与MVVM代码Demo

输入一个名字,div更新输入的名字

Jquery

var updateLabel = $("#label-show");
$("#input-name").onchange(function(){
    var name = $(this).val();
    var defaultStr = updateLabel.text();
    var updateStr = defaultStr + name;
    updateLabel.empty().text(updateStr);
})
<input id="input-name" value=""/>
<label id="label-show">我的名字是</label>

Angular.js

<input ng-model="name" id="input-name" value=""/>
<label id="label-show">
     我的名字是 {{name}}
</label>

http://www.runoob.com/try/try.php?filename=try_ng_intro

ViewModel的数据绑定的思维颠覆了传统的javascript操作DOM的行为,迎合MVC的思想又能够让javascript的逻辑更加的清晰 

MVVM实现

Angular.Js

脏检查机制,Timer

Vue.Js

Object.defineProperty的getter和setter 结合观察者模式(watcher,dep,observer) 

模板 Template, 与其相关的有 String-based、DOM-based。

String-base,基于字符串的模板

向对象添加新属性。  当对象不具有指定的属性名称时,发生此操作。  

修改现有属性的特性。  当对象已具有指定的属性名称时,发成此操作。 

var a= {}
Object.defineProperty(a,"b",{
  set:function(newValue){
    console.log("你要赋值给我,我的新值是"+newValue)
    },
  get:function(){
    console.log("你取我的值")
    return 2 //注意这里,我硬编码返回2
   }
})
a.b =1 //打印 你要赋值给我,我的新值是1
console.log(a.b) 

https://github.com/georgebbbb/fakeVue

体验MV*

What's More?

爱之初体验

> npm install -g cordova ionic

> ionic start myApp tabs

> ionic platform add ios

> ionic build ios

> ionic emulate ios

React Native

Javascript Core

> npm install -g react-native-cli

> react-native init PropertyFinder

HomeWork

结合RAP MOCK 出Json数据,选择一种MV*框架实现Todo list。

 

你可以选择Vue.js Angular.js React.js等等

MV*

By pokerone

MV*

  • 1,423