MV*

程序=算法+数据结构

html

浏览器是别人的程序,作为web工程师,所做的内容就是提供浏览器所需要的结构,即html

后端MVC - ssh

html在大部分情况下具有一定的通用性,如分页,不同信息的相同格式的展示,此时,url具有两种意义
1.静态资源
包括zip,png,script,css等
2.动态服务
如.asp,.jsp,.php,.action等

此处以url为视角,url代表动态资源与动态服务
在动态服务中,目的是提供html(结构)
但依然由算法与结构组成
此时结构为
1.M
程序所需的数据的集合即动态数据
常见的数据包括

  • req的参数,如cookie,body,query,甚至dataType等
  • 数据库数据
  • 缓存
  • 内存,常说的写死
  • 配置参数
    ....

2.V
应该为视图,正常情况下应该为swing/gui等程序的展示部分
在后端mvc中,"不存在"view,目的是获取html结构,性质上类似于函数获取一个模型
只是这个模型交给浏览器处理后可以得到显示

对web程序来讲,可以理解为html的模板部分,即模型模板

如果原生自带,则为固定的语法如swing/gui等
如果为其他特殊特殊语法(框架提供),即对原生语法的封装,针对html的性质,此处统称模板
V具有固定的性质,即语法需要或框架需要,此处也一并列为结构中

常见的V包括

  • jsp
  • asp/aspx
  • vm
    各种怎么看怎么样html的混合语法

算法为
3.C
在算法中计算所需的M,并对M与V进行关联

如spingMVC例子

 @RequestMapping("/show")
 public String show(Map<String,Object> map){
        User user =new User();
        map.put("user", user);
        user.setAge(20);
        p.setName("MVC");
        return "show";
 }

无论怎么描述,后端MVC,都是弱js甚至是无js的结构
即后端MVC本身对js的使用,无要求

MVP与MVVM

不存在,利用事件和交互是处理C的依据

1.url具是短连接
2.区别于其他程序,本质只是单纯的提供html
3.提供html这一行为,没有事件或交互的概念

js

html+js是web前端的程序

以js为开发语言,页面为最终产品,动态数据通过远程通讯的方式进行获取,这就是以前端为主的框架
此时,js/html/css就是开发语言,相对于后端mvc,最明显的是开发语言的变更

前端MVC

最早的前端工程/框架,主要解决模块开发(参考使用前和框架提供的目录结构,以及其他包含GUI语法所要求的结构进行理解),顺带解决作用域,注入生命周期,提供开发思路等一系列其他问题

如Backbone,Ext等
一定会涉及到对目录结构的定义,以及描述结构之间如何进行通讯,主要目的依然是产生html,业务逻辑的交互参考事件

此时结构为
1.M
程序所需的数据的集合即动态数据
常见的数据包括

  • 后端诗句
  • 缓存/localstorage等前端缓存
  • 用户输入
  • 内存,常说的写死
    等等

2.V
相对于后端,更为丰富

  • 前端模板语法
    如handlebars,_.template
  • js对象
    如ext系列,最终可能会包含tpl等模板相关的语法,但会封装到尽量让人看不见,即js代替html的,去html思路
  • 特殊模板
    基于元数据开发的前端,结构一般为json,局限性大,可以理解成大插件
    基于生成器生成的模板,类似于cli
    基于其他结构生成的V,利用webpack进行解析,如jsx
    基于其他结构生成的V,不需要解析,应用在各种轻应用,如小程序(这个算特殊浏览器)

总之,业务开发时使用的是框架需要的格式,而最终生成的则是浏览器需要的格式(html)

此时算法为

  • C
    在生命周期内(初始化时)关联V与C
    其他动态交互依然利用事件

前端MVVM

将V与C的绑定内容抽象为VM在V中进行描述,并进行动态的关联即为VM
关键点在自动更新

在MVC中M与V的关系也可以体现在V中(单指初始化),参考jsp,asp,handlebars,_.template等模板系列的语法
关键点在关联的Model的更新,是需要事件(开发人员)主动重新渲染V还是自动(框架)渲染

此时结构功能参考MVC,甚至V的语法都可直接参考

算法为

  • VM
    配合框架,自动调用

优势为自动调用,减少开发对dom的依赖
劣势为高频dom无力


MVC中,M与V的关系可以在初始化中进行描述,但对于后续事件中,C对V有所有权限,会怎么处理由开发人员决定
MVVM中,VM是与V与C关系的抽象,开发人员通过修改VM达到修改V的目的,不可以直接操作V

而高频很难抽象出VM

前端MVP

面向id的MVC

V与M不进行实例依赖,而通过接口的方式进行注入依赖,即面向接口,类似的观点有ioc等
V是GUI系列中,尤其是面向对象语言中的一个具体的对象,而在前端,view最终是一个结构(html)

只要通过id(或其他固定选择器)寻找具体的dom,且不通过标签,位置等视图属性获取即可,对前端而言意义不大

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,753评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,668评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,090评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,010评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,054评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,806评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,484评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,380评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,873评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,021评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,158评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,838评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,499评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,044评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,159评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,449评论 3 374
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,136评论 2 356

推荐阅读更多精彩内容

  • 概要 这篇文章首先梳理一下传统MV的设计模式,然后以一个例子来说明vue中的MVVM的思想。主要讲什么是MV以及v...
    HelenYin阅读 1,571评论 0 3
  • 一、学习背景 由于公司业务日益庞大,很多老项目需要维护,由于这些项目的前端基本都是jQuery+jQuery pl...
    integrate阅读 3,641评论 3 32
  • 一、学习背景 本文是继“前端MV*框架之经典MVC”的第二篇,学习动机是通过深入理解MVC、MVP、MVVM后,找...
    integrate阅读 4,515评论 3 23
  • 在前端领域中,jQuery操作的DOM的时代渐渐被人们所遗弃,SPA应用开始被广泛使用。但是如果依旧使用DOM操作...
    IsaacHHH阅读 1,118评论 0 3
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于...
    Hsinwong阅读 22,423评论 1 92