随笔分类 - Web Development
摘要:感谢老庄(@庄表伟)、耗子叔(@左耳朵耗子)、貘大(@貘吃馍香)的鞭策,使得我有勇气开始这个系列。还有感谢@玉面小飞鱼妹纸的提问,这是我的文收到的仅有的认真回复,我一定努力快点把这系列写到布局的部分回答你的问题……从现在开始我们来扮演浏览器。基本知识对我们来说HTML其实首先是一坨字符串。嗯,考虑到我们不能等下载完成再开始解析,实际上我们要面对的是"字符流"。为了把字符流解析成正确的DOM结构,我们需要做的事情分为两步:词法分析:把字符流初步解析成我们可理解的"词",学名叫token语法分析:把开始结束标签配对、属性赋值好、父子关系连接好、构成dom树词
阅读全文
摘要:一些基本概念viewport: 展现网页的媒体,比如窗口或者某个区域,它的大小是有限制的,为了不被平台术语所束缚,我们给他起名viewport,中文意思就是视口。canvas: 而我们在渲染网页的时候通常并不知道我们需要多大的空间,而且这些空间通常尺寸会超过viewport的大小,于是实际上我们需要设想一个无限大的画布来绘制我们的元素,我们把它称为canvas。box: element(元素)和node(节点)是大家很熟悉的概念,当我们做布局计算的时候,通常会把节点变成box,一个节点可能产生多个box,伪元素也会产生box。render tree: 对应于dom树,我们把box的包含关系构成
阅读全文
摘要:jQuery是业内知名的javascript框架,它的实现和设计可以说代表了javascript界最高的水平,本文试从四个方面来以jQuery为例总结库与框架设计的原则和优劣判断。解决问题首先请看一个我实现的框架,我把这个库称为四则运算。function add(a,b) { return a+b;}function mul(a,b) { return a*b;}function minus(a,b) { return a-b;}function div(a,b) { return a/b;}这个库的API简洁优美,实现的更是优雅无比,它把四则运算统一成了函数形式,使得...
阅读全文
摘要:OAuth2是基于HTTP的认证API,一般与OAuth2搭配的API也是基于HTTP的REST风格API(比如新浪微博和github),很多人一定想过是否可以直接从浏览器端调用REST API。 我最近做了一些这方面的研究,因为OAuth2中有secret key的存在,所以纯粹的客户端是不行的,但是服务端仅仅参与认证过程,由浏览器去调用REST API则是完全可行的。 于是比如你想开发一个github应用,那么服务端只需要一个没有界面的Auth服务就可以了,大部分的工作可以让浏览器端完成,这个架构可以大大减轻服务器的压力,对于不熟悉后端语言的前端工程师来说,是个不错的选择。 首先传统...
阅读全文
摘要:在Web中充斥着所谓的MVC框架,而在我看来,因为一些关键性的技术原因,MVC在Web前端开发中根本无法使用(对的,是无法,而不是不该)。 在MVC原始报告中指出: view永远不会知道用户输入,比如鼠标操作和按键。 很显然,在Web前端,你无法做到这一点,因为Web的程序中,用户的输入必须通过监听窗口、文档和元素上的事件来获得。——而这些东西常常被认为是View。 于是一些奇怪的认识诞生了,比如认为Controller应该是View操作Model的中介。 我曾经尝试设计一个编程模型让所有的事件流经Controller,但是事实上我发现这样的做法非常糟糕。——这个尝试让我从M...
阅读全文
摘要:简单介绍了CSS3中的新属性transform与transition背后的数学原理,主要涉及2D矩阵变换和贝塞尔插值
阅读全文
摘要:任何属性和内容都能以url的方式导入 比如 <p innerText="http://xxxxxx.com/content.txt%22%3E%3C/p>一个页面所有请求的资源可以被预先加载,可预测的资源在一个http请求中就获取到浏览器端style不再做为属性或者标签,而是做为一个页面描述渲染的文件导入——对不同设备,可以由服务端决定返回什么样的Style S...
阅读全文
摘要:在网上有一篇来自CSDN清清月儿的文章叫GridView72般绝技,现在可谓广为流传。72般绝技乃是少林神功,讲究循序渐进,是武林正道。然而对于一些不勤奋的人,比如我这种懒到什么时候都想拖控件的,还是不合适的。武功讲究无招胜有招,那对程序员而言就是无码胜有码。我想大部分年轻程序员都是没有女朋友的(奇怪,我为什么要提这个),因此,我想不论从哪方面讲都更喜欢无码一些。这一篇里我们来挑其中一个复杂一点的绝技练练:GridView和CheckBox结合删除表格中的多行
阅读全文
摘要:话说拖控件这种极端懒惰和对自己技术前途极其不负责任的行为受到了一些同学的热情批评。如果一个程序员的技能仅仅依靠着IDE的功能的话,一旦遇到人家不提供的功能,轮到我们自己写的时候就不知道怎么办了。怎么办?
相信之前的几篇中,大家已经对ASP.NET原生控件的强大扩展能力有了深刻印象,然而实际开发中,即使是这些如此优秀的控件,也不可能完全覆盖千变万化的用户需求。而对我而言,这种情况下我不会放弃拖控件,而是——自己写需要的控件。
阅读全文
摘要:我们有了后台大步分功能之后,该把视角放到前端了,这一篇演示了ASP.NET跟JS以及CSS的整合能力,我们可以看到,ASP.NET这方面设计还是非常完善的,尤其是标签式的结构,让前端工程师稍微了解一些ASP.NET标签可以自由地工作在ASPX页面上。通常一些用C#解决的问题,放到前端用JS来做也许更简洁。
阅读全文
摘要:这一篇讲一些细小功能的实现,多表查询、插入时间字段、还有在FormView中使用Dropdownlist
阅读全文
摘要:这一篇...... 拖了太久了 原来打算叫FormView使用技巧 后来觉得内容其实不全是FormView相关,就改成了现在这个名字。在这个ASP.NET MVC流行的时候算是一种反抗?
第一篇实在太基础,也没好意思发上首页. 这一篇讲了如何用拖控件的方式编写带上传图片的表单以及在WebForm中显示数据库里保存的图片。
阅读全文
摘要:本文介绍了Silverlight的整体架构,重点分析了render core和.NET shell的关系以及相互调用方式,应该对喜欢深入了解SL的朋友有些帮助,不太适合新手。
整体来看Silverlight由2部分构成:Core presentation framework(下面简称core部分)和 .NET Framework for Silverlight(下面简称.net部分),前者是用C++编写的SL的核心,后者则是用C#编写的编程框架。
阅读全文
摘要:一般来说大家比较熟悉的面向对象方式是基于类的面向对象,声明一个类,然后在根据类声明的描述去创建对象,通过类与类之间的继承和组合关系来复用代码。而JS的设计采用了一种完全不同的思路。
阅读全文
摘要:最近跟一些朋友讨论关于工厂模式的一些东西,觉得很有必要写篇东西把抽象工厂的应用方法写清楚。GoF在抽象工厂一章中没有花很多篇幅在如何应用抽象工厂上,希望本文理解抽象工厂能起到一点作用,能让网络上少一些诸如"工厂用来重构switch的言论",若能对各位实际开发有点启发,则非常荣幸。
阅读全文
摘要:相信大家比较熟悉使用Silverlight的User Control,在VS2008的Silverlight插件中,可以通过添加新项(Add new Item)创建一个User Control,而且Silverlight在网页中嵌入的本身就是一个User Control。
本文中讲的是如何开发Customized Control,Customized Control是与User Control完全不同的,Customized Control是继承或者间接继承System.Windows.Controls.Control的,而User Control必须继承System.Windows.Controls.Control.UserControl。Customized Control更接近于Silverlight本身提供的Button、CheckBox等Control, User Control则比较类似这些原生Control的组合体。
我希望本文能让更多朋友理解Silverlight,从应用开发层面深入到库开发和组件开发。
阅读全文
摘要:缓动可能一直是web开发中比较令人头疼的东西,其中最困难的就是缓动公式的选取,一般大家会喜欢用三角函数,但是三角函数没有参数可以控制曲线形状,所以我做了这个工具,自动生成三次函数缓动公式。
阅读全文
摘要:浏览器中内存泄露的最佳解决方案
阅读全文
摘要:在这个js框架随处乱跑的时代,你是否考虑过写一个自己的框架?下面的内容也许会有点帮助。
PrototypeJS JQuery YUI Mootools DWR DOJO Ext 这些框架并非遥不可及也不是完美无瑕。
阅读全文