摘要: 经过前三节基础理论的学习,我们在本节中开始我们的MVC实例演练之旅。在VS.NET中创建新的"ASP.NET MVC 3 Web Application"项目,并取个项目名:Miracle.Mvc.PartyInvites。为了简单起见,分别选择空模板、Razor视图引擎并取消"使用html5语义化标签"选项。项目创建完毕如下图所示:从图中可以看出,项目中包含很多MVC自动生成的文件。特别注意的是,我们注意以下三个文件夹:Models、Views和Controllers,即我们俗称的MVC。现在我们直接运行刚才的项目,看看有什么结果:浏览器会显示&quo 阅读全文
posted @ 2012-09-30 12:18 Miracle He 阅读(6138) 评论(1) 推荐(0) 编辑
摘要: 1.用匿名函数(function(){})();将脚本包裹起来,有效控制全局变量,避免冲突隐患。2.在解决JS冲突的前提下,如果需要进行多个模块(匿名函数)之间的通信,则需要采用唯一全局变量(系约定名:GLOBAL)+命名空间+属性的方式来解决,同时应该为你维护的模块添加必要的注释,以提高团队合作的效率。对于公共组件,不推荐加前缀(base.js)。对于单独由某成员负责的组件,推荐以成员缩写名添加前缀(如张三:zs_news.js)。3.CSS放在页头,JS放在页尾。即将非脚本资源文件放在head标签中,而将脚本放到body的尾部。同时,请注意限制外部脚本的数量,在发布正式环境之前,将同一页面 阅读全文
posted @ 2012-09-20 15:29 Miracle He 阅读(3564) 评论(4) 推荐(2) 编辑
摘要: 俗话说"工欲善其事,必先利其器",要真正的开发MVC网站,不光要掌握我在前两节提到的理论知识,而且还要拥有强大的武器装备。MVC视图开发是通过HtmlHelper的各种扩展方法来实现的(位于System.Web.Mvc.Html下)。主要包含以下7大类:FormExtensions、InputExtensions、LinkExtensions、SelectExtensions、TextAreaExtensions、ValidationExtensions及RenderPartialExtensions类。不仅如此,通过HtmlHelper的扩展方法还能开发更多的自定义控件( 阅读全文
posted @ 2012-05-30 17:43 Miracle He 阅读(8358) 评论(4) 推荐(4) 编辑
摘要: 在上一篇文章中,我简短的谈了一下MVC的底层运行机制,如果对MVC还不是很了解的朋友,可以作为入门的参照。接下来,我开始介绍关于URL路由的相关知识。URL路由不是MVC独有的,相反它是独立于MVC而单独存在的(在System.Web.Routing下)。因此,URL路由也能为传统的ASP.NET应用程序服务。我用一个简单的例子来解释路由,在我们的上一节的"ASP.NET MVC应用程序"中添加一个新的页面default.aspx,其后台代码如下:protected void Page_Load(object sender, EventArgs e){ var origin 阅读全文
posted @ 2012-05-28 15:49 Miracle He 阅读(11978) 评论(4) 推荐(5) 编辑
摘要: 今天,我将开启一个崭新的话题:ASP.NET MVC框架的探讨。首先,我们回顾一下ASP.NET Web Form技术与ASP.NET MVC的异同点,并展示各自在Web领域的优劣点。在讨论之前,我对这两种技术都非常热衷,我个人觉得在实际的项目开发中,两者都能让我们受益匪浅,因此是目前Web领域两大平行和流行的技术。我们都知道,在传统的ASP.NET Web Form应用程序中,Microsoft已为我们设计了较为完整、简洁的开发环境,并提供了复杂的处理引擎,开发者只需简单的拖放控件和编写对应的事件就能实现我们想要的功能。但是,正是因为这些快捷的开发模式,对于开发者而言,却很难了解程序背后HT 阅读全文
posted @ 2012-05-25 17:01 Miracle He 阅读(13782) 评论(6) 推荐(16) 编辑
摘要: 我们常说Javascript是一种面向对象的语言,那也就是说具有面向对象的一些基本特性。比如包含对象、类、属性、方法以及构造函数等基本元素,很多人在想:JS类到底是什么玩意?其实很简单,就是一个function,正所谓"简单就是美"嘛。在自定义类的同时,我们也回顾一下JS基本的类:Math,Array,Object以及String等。//定义JS类的两种方式(注意这里是大写开头)function EmailMessage() { }var EmailMessage = function() { }有类就有对象存在,同时构造函数也应运而生。常常在构造函数中使用this.**来 阅读全文
posted @ 2012-05-23 18:34 Miracle He 阅读(2129) 评论(4) 推荐(4) 编辑
摘要: 很多从事web开发的项目都离不开Javascript,我个人也在目前的公司中用到了很多,但是感觉还不是很到位,尤其是对Javascript的开发规范上。可能有些朋友要说,我实现一个简单的的功能(如两个数相加),需要遵守什么规范吗?我回答:需要。还有的会问:我的项目进度非常紧张,我有必要按照你说的规范一步一步来吗?我还是回答:需要。为什么呢?我认为与其在项目开发完毕的维护过程中,反复的调试还不如提前遵守开发规范,养成良好的编码习惯。结合我个人一直以来的职业习惯,我总结了以下几点,作为抛砖引玉。保持一致的编码风格。具体做法:(1).函数都必须拥有函数名(匿名函数除外),并以tab作为函数内容的.. 阅读全文
posted @ 2012-05-18 17:33 Miracle He 阅读(2370) 评论(1) 推荐(3) 编辑
摘要: 在上一讲我们谈到了利用工厂方法模式解决对"某个对象"的创建工作,通常这个对象是"易变的",但它们的抽象能力却相对固定(即主模块变化相对缓慢),因此我们将通过工厂的"创建"来"封装"这个变化点,使得客户端无需知道对象的具体类型。但不管是简单工厂也好,工厂方法也罢都是针对"一类"对象的创建,当面对"一系列"(我们这里可以称维度)相互依赖的的对象时,就已经力不从心了,可能工厂的数量会指数级增长,这个可能是我们目前面临的变化点,我们同样需要一种"封装机制"来隔离这 阅读全文
posted @ 2012-04-10 00:07 Miracle He 阅读(1881) 评论(6) 推荐(4) 编辑
摘要: 大家好,由于工作繁忙导致很久没有更新博客了。结合我一直以来的工作经历和项目经验,谈一下个人关于设计模式的理解。其实这个话题是非常大的,也非常深入的,可能不能一时半会能全部展现整个设计模式的精髓。因此我的建议是:首先了解每种设计模式的应用场景和基本框架,模式只有在特定的环境下才能发挥强大的作用,其次我们延伸对设计模式的应用,因此模式不能死板硬套,否则就会变成为了模式而模式,那就非常不合适的。说到这,让我想起来一句话:在合适的时间,合适的地点遇到合适的人,也许才是你一生的挚爱。对设计模式而言:在特定的应用场景,怀着特定的意图并融合以及适当扩展设计模式,也许才是项目使用设计模式的王道。在讲解Sin. 阅读全文
posted @ 2012-04-03 17:27 Miracle He 阅读(1135) 评论(0) 推荐(0) 编辑
摘要: 在上一篇文章中(Singleton设计模式)曾谈到了工厂模式,那究竟什么是工厂模式呢?它又能解决什么样的问题呢?在知晓这个问题之前,让我们先了解一个概念:对象耦合。经常在很多技术书籍上听到"松耦合,高内聚"。那什么是松耦合呢?既然有松耦合,那应该存在相对的紧耦合吧。两者之间到底有什么联系呢? 带着这些问题,我们可以展开为什么需要工厂模式的缘由。松耦合即在软件系统中,模块与模块之间在应对软件变化(主要来自需求变化)时,一些模块很容易被替换或更改,而能使其他模块保持不变。相对的,紧耦合即软件应对变化时,一些软件的改变将会使相关模块发生改变。先看看下面的两幅图: 图1——紧耦合 阅读全文
posted @ 2012-04-03 17:25 Miracle He 阅读(2740) 评论(0) 推荐(1) 编辑