MVC(Model–View–Controller)

Model:数据模型  负责操作所有数据
View:视图 负责所有UI界面
Controller:控制器 负责其他

//数据放在m
const m = {
//1.有个数据本数
data: {},
//2.可以对数据增删改查
create() {},
delete() {},
update(data) {},
get() {}
}
//视图放在v
const v = {
//1、一个空容器,以后就是装html的容器
el: null,
//2、要添加的html
html: ,
//3、初始化容器函数,参数是我们给的要当容器的元素(应该是index.html里就有的元素)
init(container) {v.el = $(container);},
//4、渲染函数,参数将是数据。也就是视图全都是对数据渲染 view = render(data)
render(x) {}
}
//其他放在c
const c = {
//1.总初始化函数,参数是我们给的要当容器的元素
init(container) {},
//2、自动绑定事件
//(1)把所有事件写成哈希表
events: {},
//(2)每个事件要执行的函数写出来
add() {},
minus() {},
mul() {},
div() {},
//(3)自动绑定事件
autoBindEvents() {}
}

EventBus

eventBus主要用于对象间通信
监听事件 eventBus.on()

触发事件 eventBus.trigger()

//一个事件执行
eventBus.trigger("m:updated"); //在数据增删改查函数中
eventBus.on("m:updated", () => {
//④监听m:updated事件,每次触发就执行一些内容
v.render(m.data.n);
})

表驱动编程

表驱动法是一种编程模式(scheme)——从表里面查找信息而不使用逻辑语句(if和case)。事实上,凡是能通过逻辑语句来选择的事物,都可以通过查表来选择。对简单的情况而言,使用逻辑语句更为容易和直白。但随着逻辑链的越来越发杂,查表法也就愈发显得更具吸引力

//不使用表的编程
$('#add').on('click', ()=>{
number += 1
$number.text(number)
localStorage.setItem('number', number)
})
$('#minus').on('click', ()=>{
number -= 1
$number.text(number)
localStorage.setItem('number', number)
})
$('#mult).on('click', ()=>{
number *= 2
$number.text(number)
localStorage.setItem('number', number)
})
$('#divide).on('click', ()=>{
number /= 2
$number.text(number)
localStorage.setItem('number', number)
})
***************************************
//使用表的编程
events: {
'click #add1': 'add',
'click #minus1': 'minus',
'click #mul2': 'mul',
'click #divide2': 'div',
},
add() {
m.update({n: m.data.n + 1})
},
minus() {
m.update({n: m.data.n - 1})
},
mul() {
m.update({n: m.data.n * 2})
},
div() {
m.update({n: m.data.n / 2})
},
  • 表指的是哈希表
  • 表驱动编程可以减少重复代码,只讲重要的信息放在表里,然后利用表来编程
  • 利用哈希表,把每一个的事件,元素,函数列出来
  • 把每一个的函数定义出来
  • 自动绑定事件:利用遍历哈希表,把元素绑定上事件

对于模块化的理解

模块化:模块的内部数据的实现是私有的,只是向外部暴露一些接口(方法)与外部其他模块通信。
模块化可以降低代码耦合度,减少重复代码,提高代码重用性,并且在项目结构上更加清晰,便于维护。

浅析 MVC的更多相关文章

  1. 浅析MVC模式与三层架构的区别

    浅析MVC模式与三层架构的区别 三层架构和MVC是有明显区别的,MVC应该是表现模式(三个加起来以后才是三层架构中的UI层).三层架构(3-tier application) 通常意义上的三层架构就是 ...

  2. 从源码浅析MVC的MvcRouteHandler、MvcHandler和MvcHttpHandler

    熟悉WebForm开发的朋友一定都知道,Page类必须实现一个接口,就是IHttpHandler.HttpHandler是一个HTTP请求的真正处理中心,在HttpHandler容器中,ASP.NET ...

  3. 【转】从源码浅析MVC的MvcRouteHandler、MvcHandler和MvcHttpHandler

    原文:http://www.cnblogs.com/jeffwongishandsome/archive/2012/01/08/2316521.html 熟悉WebForm开发的朋友一定都知道,Pag ...

  4. 浅析MVC模式与三层架构的区别01

    三层架构和MVC是有明显区别的,MVC应该是展现模式(三个加起来以后才是三层架构中的UI层)三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI ...

  5. 浅析MVC和说媒的过程

    什么是MVC? MVC 全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面 显 ...

  6. 转载《浅析MVC框架中View层的优雅设计及实例》

    在基于B/S的应用程序开发中,从基本的技术分工上来说就是两大块,一是软件显示界面,另一个是程序逻辑.在N年前的脚本语言时代,无论是asp.php还是jsp,我们基本是都是把这两者柔和在一起的.尽管我们 ...

  7. 浅析MVC Pattern

    一.前言 最近做CAD插件相关的工作,用到了一些模式,解决对应场景的问题. 比如插件的运行实例上使用Singleton.实例内部使用了MVC(Strategy and Observer ). 针对CA ...

  8. 浅析 MVC Pattern

    一.前言 最近做CAD插件相关的工作,用到了一些模式,解决对应场景的问题. 比如插件的运行实例上使用Singleton.实例内部使用了MVC(Strategy and Observer ). 针对CA ...

  9. MVC form post 传值

    http://www.cnblogs.com/firstcsharp/archive/2013/08/05/3238321.html @using (Html.BeginForm())参数示例 MVC ...

随机推荐

  1. 【保姆级教学】新手第一次搭建vue项目和初始化

    前端项目初始化步骤 安装vue脚手架 通过vue脚手架创建项目 配置vue路由 配置Element-UI组件库 配置axios库 初始化git远程仓库 将本地项目托管到github或者码云上 通过vu ...

  2. PHP attributes() 函数

    实例 返回 XML 的 body 元素的属性和值: <?php$note=<<<XML<note><to>Tove</to>高佣联盟 www ...

  3. Python 为什么会有个奇怪的“...”对象?

    本文出自"Python为什么"系列,请查看全部文章 在写上一篇<Python 为什么要有 pass 语句?>时,我想到一种特别的写法,很多人会把它当成 pass 语句的 ...

  4. Docker入坑指南之RUN

    总有一些场景,我们需要自己制作一个镜像,可以快速还原环境,又不想被其他因素干扰镜像的纯净,这个时候,就可以选择Docker了,启动便捷,镜像还原很快捷,除了上手不容易. 最近入坑研究了一番,小有心得, ...

  5. 5 年 Python 的我,总结了这 90 条写 Python 程序的建议

    自己写 Python 也有四五年了,一直是用自己的“强迫症”在维持自己代码的质量.都有去看Google的Python代码规范,对这几年的工作经验,做个简单的笔记,如果你也在学pythpn,准备要学习p ...

  6. JS 鼠标放上去滑出内容案例

    .sliderbar { width: 200px; height: 40px; position: relative; margin: 0 auto; } .sliderbar span { dis ...

  7. Java基础—字符串

    事实上,Java是没有内置的字符串类型的,而是在标准Java类库中提供了一个预定义类String.每个用双引号括起来的字符串都是String类的一个实例: String str = "&qu ...

  8. akka-typed(9) - 业务分片、整合,谈谈lagom, 需要吗?

    在讨论lagom之前,先从遇到的需求开始介绍:现代企业的it系统变得越来越多元化.复杂化了.线上.线下各种系统必须用某种方式集成在一起.从各种it系统的基本共性分析:最明显的特征应该是后台数据库的角色 ...

  9. 内存总是不够?HBase&GeoMesa配置优化了解一下

    概况: 生产环境HBase集群内存经常处于高位(90%),而且GC之后也是内存依然处于高位,经分析内存全部由集群的regionserver进程所持有,,经常重启之后,大概3-4天就会保持在高位.由上述 ...

  10. C#LeetCode刷题之#125-验证回文串(Valid Palindrome)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3899 访问. 给定一个字符串,验证它是否是回文串,只考虑字母和数 ...