MVC和三层,我的一个不成熟的看法,大家批批
2011-05-12 07:01 金色海洋(jyk) 阅读(6309) 评论(145) 编辑 收藏 举报
这里说的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="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){ //调用第三段代码,显示数据 } } }); |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
2010-05-12 钢铁是怎样炼成的?千锤百炼