MVC和三层,我的一个不成熟的看法,大家批批
时间:2022-04-28
本文章向大家介绍MVC和三层,我的一个不成熟的看法,大家批批,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
这里说的MVC指的是设计模式里的MVC不是asp.net mvc。
既然MVC是一种设计模式,那么他就应该在任何地方都可以使用。比如三层。
有人说MVC里的V相当于三层里的UI,M相当于三层里的DAL + BLL。这么理解也不错,因为设计模式可以应用在任何地方,这么理解是完全可以的。但是我有另一种理解,大家看看对不对。
我觉得在UI层里面也可以使用MVC设计模式。请注意仅仅只在UI层里。还是用一个实例来说明吧,我不擅长讲原理。
假设我们要显示博客园的首页,再缩小一下范围,我们要实现首页的里博文列表。美工做出来的html是这样的(代码一),那么这个是不是V呢?
下一步,我们要把数据库里的数据填充上。我们再来定义一个json(代码二),那么这个是不是M?准确的说是M的一部分。
然后我们要把html和数据合在一起,我们可以写一段js(代码三)来实现。那么这段js是什么呢?这个我也有一些犹豫,不知道是属于M还是应该属于C。暂且先放在这里。
这些东西如何配合工作呢?我们再写一段js(代码四)。
这个可以说是C,没有什么问题吧。页面加载后触发,加载V,加载M,调用代码三,把html和数据合在一起。
那么我上面说的这些是不是应用了MVC设计模式呢?这个我还真不敢确定。如果你说,这些都是三层里的UI,那么我同意。不过如果你说这些都是MVC里的V,那么我就不同意了。呵呵。
刚刚学习jQuery,js的底子也比较烂,所以代码比较惨不忍赌了,希望能够把我的意思表达出来,大家多多包涵。
代码一:
<div class="post_item">
<div class="digg">
<div class="diggit">
<span class="diggnum" id="digg_count_{id}">{顶的数量}</span>
</div>
<div class="clear"></div>
<div id="digg_tip_{id}" class="digg_tip"></div>
</div>
<div class="post_item_body">
<h3><a class="titlelnk" href="{随笔url}" target="_blank">{标题}</a></h3>
<p class="post_item_summary">
<a href="{作者url}" target="_blank"><img align="left" class="pfs" src="{作者头像}" alt=""/></a>
{随笔简介}</p>
<div class="post_item_foot">
<a href="{作者url}" class="lightblue">{作者昵称}</a>
发布于 {发表时间}
<span class="article_comment"><a href="{随笔url}#commentform" title="最新评论时间:{最新评论时间}" class="gray">
评论(<span id="feedback_count_2042255">{评论数}</span>)</a></span>
<span class="article_view"><a href="{随笔url}" class="gray">
阅读(<span id="viewcount_2042255">{阅读次数}</span>)</a></span></div>
</div>
<div class="clear"></div>
</div>
代码二:
var bolg = {
["标题":"";"随笔URL":"";其他省略……],
["标题":"";"随笔URL":"";其他省略……]
}
代码三:
var 模板 = "";//就是上面那段html
var div = replace(模板,"{标题}",bolg[0].标题);
//也可以用其他的方法实现,目前我只会替换。当然还要写个循环,这里就省略了。
代码四:
$(document).ready(function(){
$.ajax({
type: "GET",
url: "blog.ashx",//获取数据
success: function(msg){
//调用第三段代码,显示数据
}
}
});
ps:
刚刚看到了 Leepy 写的 谈谈对于企业级系统架构的理解 很是佩服,不知道我这里说的,是不是他说的UI逻辑。
- PowerDesigner15连接Oracle失败的解决办法
- 地图校正方法心得
- 工作流参考模型点评
- 按图索骥:SQL中数据倾斜问题的处理思路与方法
- [方法“Boolean Contains(System.Guid)”不支持转换为 SQL]的解决办法
- DataBind的一些试验
- 继承HibernateDaoSupport时遇到的问题 使用注解为HibernateDaoSupport注入sessionFa
- 常用代码
- 小程序的新功能你知道吗
- Mapxtreme之活活气死
- 仿淘宝的交易到计时JS
- 继小程序之后“小游戏”也来了,微信为此再次开启神秘入口
- (Head First 设计模式)学习笔记(3) --装饰者模式(StarBuzz咖啡店实例)
- 我的Js代码-按钮按下时判断是否选择了最后一行,给出提示
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- wget常用参数
- 初窥Go轻量级框架beego
- SEO丨PHP外链跳转防止权重转移
- 初识NodeJS服务端开发之NodeJS+Express+MySQL
- 端口检测 | 命令行整理篇
- 专栏 | 监督&强化学习模型在金融市场的应用
- RAID磁盘阵列-Redundant Arrays of Independent Disks
- 第一次编写bat脚本
- shell脚本加密 | shc
- Ubuntu搭建WebStorm开发NodeJS环境
- 教程 | 预测电影偏好?如何利用自编码器实现协同过滤方法
- web性能测压工具 | siege
- 资源 | 从VGG到ResNet,你想要的MXNet预训练模型轻松学
- JDK的安装与配置 | Linux&Windows
- 爬虫 | 继Helloworld程序 『scrapy & redis』