代码改变世界

随笔分类 -  Web

写个 JavaScript 异步调用框架 (Part 2 - 用例设计)

2009-05-07 01:12 by Cat Chen, 4052 阅读, 收藏, 编辑
摘要: 在上一篇文章里说到,我们要设计一个异步调用框架,最好能够统一同步异步调用的接口,同时具体调用顺序与实现方式无关。那么我们现在就来设计这样一个框架的用例。传递回调我们首先要考虑的一个问题是,如何传递回调入口。在最传统的XHR调用当中,回调函数会被作为最后一个参数传递给异步函数:function asyncOperation(argument, callback)在参数相当多的时候,我们可以把参数放到... 阅读全文

写个 JavaScript 异步调用框架 (Part 1 - 问题 & 场景)

2009-05-06 00:18 by Cat Chen, 5336 阅读, 收藏, 编辑
摘要: 问题在Ajax应用中,调用XMLHttpRequest是很常见的情况。特别是以客户端为中心的Ajax应用,各种需要从服务器端获取数据的操作都通过XHR异步调用完成。然而在单线程的JavaScript编程中,XHR异步调用的代码风格实在是与一般的JavaScript代码格格不入。额外参数考虑一个除法函数,如果它是纯客户端的同步函数,那么签名会是这样的:function divide(operand1... 阅读全文

十分钟内学会:避免用户刷新导致重复POST提交

2009-04-03 11:56 by Cat Chen, 4789 阅读, 收藏, 编辑
摘要: Question在Web应用中,采用POST提交信息是非常常见的,然而如果目标页面打开得太慢,用户就可能会刷新页面,这时候之前已经提交过的信息就会被重复提交。即使用户成功打开了POST提交目标页,之后他通过链接导航到别处了,再退回到POST提交目标页时仍可能会重复提交页面(例如因为浏览器缓存已失效)。而且,只要碰到重复POST提交的场景,浏览器就会问用户是否确认重做此操作,用户并不一定能正确理解重... 阅读全文

ASP.NET AJAX 4.0 Preview 3 (Part 2 - ASP.NET AJAX Template)

2009-03-14 10:43 by Cat Chen, 4747 阅读, 收藏, 编辑
摘要: 在上一篇文章里,我们说到了如何使用ADO.NET Data Service Client Library能够轻松访问到存在服务器端的数据,然而将数据展现出来仍需要人手拼接HTML这点就实在是让人难以接受,所以我们现在就来看看如何利用ASP.NET AJAX Template解决这个问题。文章中所用到的示例代码,可以在这里下载:ASP.NET AJAX 4.0 Preview 3 Demo,然后参考... 阅读全文

ASP.NET AJAX 4.0 Preview 3 (Part 1 - ADO.NET Data Service Client Library)

2009-03-11 00:18 by Cat Chen, 4160 阅读, 收藏, 编辑
摘要: 自从Microsoft与jQuery合作以来,ASP.NET AJAX与jQuery就被定位为两个互补的AJAX库。既然jQuery已经实现了如此多轻量级的AJAX特性,自然ASP.NET AJAX会继续专注于富客户端所需的一些重量级特性。 在ASP.NET AJAX 4.0 Preview 3里面,开发人员能够接触到的两个重要的新特性就是ADO.NET Data Service Client L... 阅读全文

《Introducing Microsoft Silverlight 2》书评

2008-11-23 21:54 by Cat Chen, 2677 阅读, 收藏, 编辑
摘要: 和上次的《Microsoft SQL Server 2005: 数据库基础由入门到精通》书评一样,同样是MVP的书评活动。 这本书适合什么人看?适合好像我这样的,对Silverlight 2感兴趣但是又不知道从何入手的人。整本书非常完整地覆盖到Silverlight每一个技术细节,当然这是Microsoft Press的习惯做法了。如果你想用Silverlight 2来做点什么,却发现开发过程中困... 阅读全文

以服务器端为中心的 ASP.NET AJAX 模式 (Part 2 - Control)

2008-10-30 00:50 by Cat Chen, 4853 阅读, 收藏, 编辑
摘要: 在上一篇文章当中,也就是《以服务器端为中心的 ASP.NET AJAX 模式 (Part 1 - Behavior)》,我们探讨了较为易用的Behavior模式。之所以说它较为易用,是因为它不涉及和原有Page处理流程的交互,即使访问网络也是访问独立的Web Service(包括Page上的[WebMethod]),因此和Page处理流程的设计绝对是正交的。但有时候我们需要的就是与Page处理流程... 阅读全文

以服务器端为中心的 ASP.NET AJAX 模式 (Part 1 - Behavior)

2008-10-26 20:33 by Cat Chen, 4733 阅读, 收藏, 编辑
摘要: 早在ASP.NET AJAX从CTP转向Beta再转向RTM时,看着客户端的Control被逐步放弃,与此同时ASP.NET AJAX Control Toolkit越来越多地使用Behavior,我就想深入说说ASP.NET AJAX的模式。不过由于我比较懒,所以这个话题只在《理想的 ASP.NET AJAX (Part 2 - Server Centric)》中一笔带过,没有深入讨论。今天看到... 阅读全文

如何动态加载 JavaScript 与 CSS

2008-09-02 23:01 by Cat Chen, 10240 阅读, 收藏, 编辑
摘要: Omar AL Zabir这位MVP总是喜欢搞些稀奇古怪同时又很实用的小东西,并且还十分值得参考。最近他就做了一个叫做ensure的小工具用于动态加载JavaScript、CSS与HTML,而且IE、Firefox、Opera、Safari都支持了,那么我们就来看看ensure是如何做到动态加载JavaScript与CSS的。在介绍ensure内部的实现之前,让我们先来看看其功能:ensure({... 阅读全文

救救 Web Developers ,拒绝 IE6 !

2008-04-06 16:41 by Cat Chen, 6434 阅读, 收藏, 编辑
摘要: 这是最近的一场于web developers相关的campaign,官方站点是SaveTheDevelopes.org。在上面你可以下载一段脚本和对应的图片,放到你自己的网站上,然后只要有用户使用IE6访问你的网站,他就会看到一个小小的提示框,建议他升级到IE7或选用其它非IE浏览器。当然,你也可以直接引用SaveTheDevelopers.org上面的脚本文件,但大家都知道潜在的风险,因此最好不... 阅读全文

讲座资源:Silverlight 2.0

2008-03-31 12:17 by Cat Chen, 3344 阅读, 收藏, 编辑
摘要: 这是2008年3月30日微软广州.NET俱乐部活动上Silverlight 2.0这一部分讲座的资源,包括了pptx以及演示网站(演示网站中的SilverlightDemoHost项目需要部署为http://localhost/SilverlightDemo/)。在这次的讲座上,讲的主要是Silverlight 2.0的新特性,而上次Silverlight 1.0所讲过的内容没有再次重复。不过在问... 阅读全文

深入理解 ASP.NET 动态控件 (Part 6 - 模板控件)

2008-03-26 00:39 by Cat Chen, 7746 阅读, 收藏, 编辑
摘要: 在之前的文章中,我极力推荐大家使用Repeater和MultiView这类TemplateControl,为什么呢?因为只有这样做,才算是符合MVP或MVC模式。(到底是MVP还是MVC,这视乎你选用什么呈现引擎了。)虽然我们要动态创建控件,但实际上这部分控件仍然属于View的部分,我们应该尽量采用ASPX的声明性名义来描述这些控件,避免用C#代码来创建控件、设置属性并添加为子控件。就拿最简单的例... 阅读全文

深入理解 ASP.NET 动态控件 (Part 5 - 编译实验)

2008-03-24 12:04 by Cat Chen, 6886 阅读, 收藏, 编辑
摘要: 这次的文章是一个小小的动手实验,你需要准备好Visual Studio 2005或者Visual Studio 2008,以及最新版本的Reflector。通过这次的实验,你将对ASPX与C#代码如何合并编译为一个dll代码有所理解。在实验开始之前,首先来一个小问题:如果不允许你使用ASPX,要你完全使用C#代码写一个具备复杂控件树的页面你会怎么写?把声明控件的代码都放在Page_Load里面吗?... 阅读全文

使用 .NET 实现 Ajax 长连接 (Part 2 - Mutex Wait & Signal)

2008-03-08 17:21 by Cat Chen, 9018 阅读, 收藏, 编辑
摘要: 在上一次的文章中,我们说到了如何设计一个ASP.NET Web Service来处理长连接请求。很多人对此就提出了问题,如何hold住请求让它30秒不断开了?这其实很简单,只需要Sleep()一下就可以了:Thread.Sleep(30 * 1000);然而问题是,我们不是要等30秒然后看看是否有事件需要返回,而是在这30秒内随时有事件随时返回。因此,我们需要一套机制来在等待的过程中检查是否有事件... 阅读全文

使用 .NET 实现 Ajax 长连接 (Part 1 - Comet Web Service)

2008-02-26 17:49 by Cat Chen, 15047 阅读, 收藏, 编辑
摘要: Ajax的长连接,或者有些人所说的Comet,就是指以XMLHttpRequest的方式连接服务器,连接后服务器并非即时写入相应并返回。服务器会保持连接并等待一个需要通知客户端的事件,该事件发生后马上将数据写入响应,这时候客户端就以相当“实时”的方式接收到事件通知。具体的通信模型,请参考这篇文章:《Comet:基于 HTTP 长连接的“服务器推”技术... 阅读全文

编写 iPhone Friendly 的 Web 应用程序 (Part 6 - iUI)

2008-01-07 21:01 by Cat Chen, 4686 阅读, 收藏, 编辑
摘要: iUI是一个针对iPhone Safari的Web开发框架,由Joe Hewitt开发。这位Joe Hewitt曾经参与过Firefox的开发,包括其中的DOM Inspector以及Firebug,后来到了Facebook,为Facebook开发了iPhone专用版本,对iPhone Web开发社区算是作出了巨大贡献。样式我们继续说iUI这个框架。这个框架所做的事情,就是提供iPhone Fri... 阅读全文

编写 iPhone Friendly 的 Web 应用程序 (Part 5 - 交互入门)

2007-12-29 13:41 by Cat Chen, 3771 阅读, 收藏, 编辑
摘要: 我们已经研究过XHTML和CSS了,现在开始看看最后一部分,也就是JavaScript,以及它所提供的交互能力。无AJAX交互第一种我们要看的交互,是完全不使用JavaScript,这其中一个例子就是GMail。GMail的iPhone版其实就是由普通的GMail移动版修改过来的,界面上更贴近桌面版GMail了,然而交互性并没有怎么提高,每一个点击都对应一次刷新,没有任何AJAX可言。事实上,不用... 阅读全文

编写 iPhone Friendly 的 Web 应用程序 (Part 4 - CSS)

2007-12-27 14:54 by Cat Chen, 3725 阅读, 收藏, 编辑
摘要: 说到编写CSS,大家的第一反应肯定是——有没有选择性CSS。有!我们可以设计一个CSS,使得只有iPhone上的Safari会采用它,其他浏览器都会无视它,这样我们就可能可以复用现有的XHTML页面代码,仅仅为它们引入新的CSS就能够适用于iPhone,无须重新编写页面。这个选择性CSS链接语句如下:<link media="only screen and (max-device-width... 阅读全文

编写 iPhone Friendly 的 Web 应用程序 (Part 3 - XHTML)

2007-12-27 13:11 by Cat Chen, 3502 阅读, 收藏, 编辑
摘要: 在接下来的两篇文章中,我们将探讨iPhone上的Safari所支持的XHTML与CSS,之后才进入JavaScript的讨论。作为一款现代化的浏览器,Safari当然是基于标准的,那就让我们看看Safari支持哪些标准吧: HTML 4.01 XHTML 1.0 CSS 2.1 以及部分 CSS 3 JavaScript (ES3) DOM (Level 2) AJAX (XMLHtt... 阅读全文

编写 iPhone Friendly 的 Web 应用程序 (Part 2 - Viewport)

2007-12-26 17:48 by Cat Chen, 4375 阅读, 收藏, 编辑
摘要: 在了解到iPhone的一些常见布局法后,我们就可以开始着手编写一个真正能在iPhone上跑的页面了。小声说一句,之前我说要布局讨论完了,要进入交互逻辑开发,后来细心一想发现不行,有些东西不讲的话将会对布局带来问题,绕过去的话并不怎么优雅,因此继续讲布局。首先要说的就是viewport,也就是可视区域。对于桌面浏览器,我们都很清楚viewport是什么,就是出去了所有工具栏、状态栏、滚动条等等之后用... 阅读全文