博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MVC
阅读量:5986 次
发布时间:2019-06-20

本文共 1359 字,大约阅读时间需要 4 分钟。

MVC是三个单词的首字母缩写,他们是Model(模型),View(视图)和Controller(控制)。

这个模式认为,程序不论简单或复杂,从结构上看,都可以分为三层。

  1. 最上面的一层,是面向最用用户的“视图层”(View)。他是提供给用户的操作界面,是程序的外壳。
  2. 最底下的一层,是核心的“数据层”(Model),也就是程序需要操作的数据或信息。
  3. 中间的一层,就是“控制层”(Controller),它负责根据用户从“视图层”输入的指令,选取“数据层中的数据”,然后对其进行相应操作,产生最终结果。

mvc就是把你的代码分成三块。

第一块,v 告诉代码长什么样子,或者说在页面哪部分,view就是视图,就是看的见得东西

第二块,m 你的数据有哪些操作,model就是数据,所有和数据相关的操作都放在model
第三块,c负责其他的所有事情,controller是控制器,它用来控制其他的所有代码

具体过程如图:

Model 和服务器交互,Model 将得到的数据交给 Controller,Controller 把数据填入 View,并监听 View 用户操作 View,如点击按钮,Controller 就会接受到点击事件,Controller 这时会去调用 Model,Model 会与服务器交互,得到数据后返回给 Controller,Controller 得到数据就去更新 View

模块化

MVC的前提是模块化,把某个功能放到一个js文件里,一个文件负责一个功能,就是模块化。

闭包

  1. 我们不想要全局变量(会污染环境)
  2. 所以我们使用局部变量
  3. ES5里,只有函数有局部变量
  4. 于是我们声明一个function xxx,然后立即执行这个函数xxx.call
  5. 这是xxx还是全局变量(全局函数)
  6. 所以我们不能给这个函数名字function(){}.call()
  7. 但是这样Chrome会报错,语法错误。
  8. 解决方案,加一个"!"!function(){}.call(我们不在乎这个匿名函数的返回值,所以加!取反没关系。)

模块之间的通信

首先,假设我们有两个js文件,他们分别是

第一个文件

!function(){    var person = {        name: 'frank',        age: 18    }    window.frankGrowUp = function(){        person.age += 1        return person.age    }}.call()复制代码

第二个文件,我们可以通过window的属性来访问第一个js文件里的匿名函数

var frankGrowUp = window.frankGrowUpfankGrowUp()复制代码
  1. 立即执行函数使得person无法被外部访问
  2. 闭包使得匿名函数可以操作person
  3. window.frankFrowUp保存了匿名函数的地址
  4. 任何地方都可以使用window.frankGrowUp

由此得出,任何地方都可使使用window.frankGrowUp来操作person(只能以它提供的方式来操作,如window.frankGrowUp对应的函数,只能增不能减),但不能直接访问person,

转载地址:http://spflx.baihongyu.com/

你可能感兴趣的文章
Git忽略规则和.gitignore规则不生效的解决办法
查看>>
php实现汉诺塔问题
查看>>
linux c++ sqlite3
查看>>
Eclipse自动生成作者、日期注释等功能设置
查看>>
MySQL 按时间统计
查看>>
获取上下文
查看>>
zipkin
查看>>
杜宇甫:京东JOS进化论
查看>>
618电商大促微博营销效果数据分析
查看>>
Activity的启动模式与flag详解
查看>>
CustomPageControl
查看>>
网卡启动
查看>>
Persistence.xml配置说明
查看>>
How to Use Reptile for iOS Programmer
查看>>
SSL双向认证
查看>>
go语言的time包
查看>>
sheepdog安装和使用管理
查看>>
mycncart 之 支付宝手机网页即时到帐支付方式
查看>>
[Android]ContentProvider会用到的ProjectionMap的用处
查看>>
[Android]Linux BASH脚本中cmp比较命令的应用例子
查看>>