位置: 编程技术 - 正文

理解javascript中的MVC模式(简述javascript)

编辑:rootadmin

推荐整理分享理解javascript中的MVC模式(简述javascript),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:javascript的理解,javascript的理解,js怎么理解,javascript的理解,javascript深入理解,javascript的理解,javascript中的函数如何理解,javascript中的函数如何理解,内容如对您有帮助,希望把文章链接给更多的朋友!

MVC模式是软件工程中一种软件架构模式,一般把软件模式分为三部分,模型(Model)+视图(View)+控制器(Controller);

模型:模型用于封装与应用程序的业务逻辑相关的数据以及对数据处理的方法。模型有对数据直接访问的权利。模型不依赖 “视图” 和 “控制器”, 也就是说 模型它不关心页面如何显示及如何被操作.

视图:视图层最主要的是监听模型层上的数据改变,并且实时的更新html页面。当然也包括一些事件的注册或者ajax请求操作(发布事件),都是放在视图层来完成。

控制器:控制器接收用户的操作,最主要是订阅视图层的事件,然后调用模型或视图去完成用户的操作;比如:当页面上触发一个事件,控制器不输出任何东西及对页面做任何处理; 它只是接收请求并决定调用模型中的那个方法去处理请求, 然后再确定调用那个视图中的方法来显示返回的数据。

下面我们来实现一个简单的下拉框控件,我们可以对它进行增删操作;如下图所示:

代码如下:

HTML代码如下:

理解javascript中的MVC模式(简述javascript)

页面初始化代码如下:

代码分析如下:

先分析下我们是要实现什么样的功能,基本功能有:

一个下拉框,通过用户输入的操作来实现用户增加一项及用户选中一项后删除一项的功能;当然也添加了用户切换到那一项的事件;

比如我们现在来增加一条数据的时候,在视图层上添加监听事件,如下代码:

然后调用观察者类Event中的方法notify(发布一个事件) that.addButtonClicked.notify();大家都知道,观察者模式又叫发布-订阅模式,让多个观察者对象同时监听某一个主题对象,当某一个主题对象发生改变的时候,所有依赖它的对象都会得到通知;因此在控制层(Controller)我们可以使用如下代码对发布者进行监听操作:

之后调用自身的方法addItem();代码如下:

调用模型层(model)的方法addItem();把一条数据插入到select框里面去;model(模型层)的addItem()方法代码如下:

如上代码 增加一项后,通过 this.itemAdd 发布一个消息,然后在视图层(View)上通过如下代码来监听这个消息;代码如下:

最后监听到模型上(Model)的数据发生改变后,及时调用自身的方法rebuildList()去更新页面上的数据;

模型层(Model)最主要做业务数据封装操作。视图层(View)主要发布事件操作及监听模型层上的数据,如果模型层上有数据改变的时候,及时更新页面操作,最后显示给页面上来,控制层(Controller)主要监听视图层(View)的事件,调用模型层(Model)的方法来更新模型上的数据,模型层数据更新后,会发布一条消息出去,最后视图层(View)通过监听模型层(Model)的数据变化,来更新页面的显示; 如上是MVC的基本流程。MVC的优点: 1. 耦合性低:视图层和业务层分离了,如果页面上显示改变的话,直接在视图层更改即可,不用动模型层和控制层上的代码;也就是视图层 与 模型层和控制层已经分离了;所以很容易改变应用层的数据层和业务规则。 2. 可维护性:分离视图层和业务逻辑层也使得WEB应用更易于维护和修改。MVC的缺点: 个人觉得适合于大型项目,对于中小型项目并不适合,因为要实现一个简单的增删改操作,只需要一点点JS代码,但是MVC模式代码量明显增加了。对于学习成本也就提高了,当然如果使用一些封装好的MVC库或者框架就好了。

标签: 简述javascript

本文链接地址:https://www.jiuchutong.com/biancheng/382745.html 转载请保留说明!

上一篇:探讨JavaScript语句的执行过程(javascript语言入门教程)

下一篇:很不错的两款Bootstrap Icon图标选择组件

  • 背书行为有效的是指什么
  • 研发设备可以一次性扣除吗
  • 作废的增值税普通发票还可以重新开吗?
  • 自查补税申报表
  • 残疾人保障金零申报怎么填写
  • 税款差0.01是怎么用会计分录处理
  • 贸易公司发票怎么平衡
  • 个人咨询服务费合同
  • 员工对公司造成损失的,可以起诉吗
  • 外币账户的银行信息在哪查询
  • 公司车辆过户给公司
  • 子公司具有独立的法律地位吗
  • 居间合同怎么签才算有效
  • 打官司收案是什么意思
  • 专用发票验旧后还领不到发票
  • 商业承兑汇票是谁签发的
  • 结算会计和核算会计哪个更好
  • 事业单位福利费计提标准
  • 买车的发票可以抵扣吗?
  • 收到汽车报废补贴怎么做账?
  • virtualbox打不开虚拟机
  • 鸿蒙大文件夹怎么设置透明度
  • 设计师用windows什么版本
  • 债权债务重组公司
  • deepin怎么退出命令行
  • Uncaught TypeError: XXX is not a function问题解决方法
  • PHP:xml_set_notation_decl_handler()的用法_XML解析器函数
  • 工资及社保外包服务
  • kb4579311安装失败
  • 对于接受捐赠的固定资产,其成本应当依次按照
  • 冲减其他应收款需要领导审批吗
  • 赔偿款支出会计处理
  • 最高频率内存条是多少
  • 费尔南迪纳岛气候类型
  • PHP基于什么语言
  • php怎么写数据库
  • php字符串的三种定义方式
  • uni-app编译
  • php递归函数桃子一天吃一半
  • 微信php开发包
  • cms和php的关系
  • 帝国cms真的很好用
  • SqlServer2014安装选择版本
  • 企业资本包括
  • 报销货物运输费需要什么凭证
  • 公司开一般户需要多久
  • mssql备份数据库
  • 民办非企业收到政府拨款分录
  • 房租已付未收到发票
  • 公司 股东 变更
  • 研发费用账务处理完整版
  • 增值税起征点有多少
  • 调整以前年度销项税额的分录
  • 应付账款周转次数计算
  • 企业收到返利怎么做账
  • 行政拨付工会经费可以用于职工福利发放吗
  • 机票退票手续费多少
  • 固定资产的残值率是什么意思
  • 营业执照代办需要什么手续
  • 税收会计记账方法
  • sqlserver获取年月日
  • linux 命令帮助
  • mac怎么修改图片格式jpg
  • win8搜索不到文件
  • win10系统怎么找到桌面
  • linux防病毒措施
  • linux怎么挂载文件夹
  • perl数组元素个数
  • css怎么画图
  • 自动重启服务脚本
  • linux shell 技巧
  • android反编译软件
  • python怎么读取中文txt文本
  • python中的魔法函数
  • 国家税务局湖南省电子税务局app下载
  • 南京税务登记查询官网
  • 贵州省微企补助政策
  • 广东省职称证书编号查询系统
  • 金华市税务
  • 晋江电视
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设