西红柿爱番茄

Feed Rss

作者:

鉴于目前规划部署项目的静态文件管理和制定页面开发规范,整理出了一个符合项目特点的HTML5规范页面,使用了更有语义化的HTML5标签。趁热打铁,遂将本博客也更新到了HTML5,使得博客的信息内容架构使用更有语义化的标签来展示。比如下图就是博客首页的HTML DOM结构图:

条件表达式通常有两种表现形式,第一种:所有分支都是属于正常行为;第二种:条件表达式提供的答案只有一种是正常行为。其他都是不常见的情况。如果两条分支都是正常行为,就应该使用if~else的条件表达式;如果某个条件极其罕见,就应该单独检查该条件,并在该条件为真时立刻从函数中返回。 function getPayAmount(){ var result; if(isDead) result = deadAmount(); else{ if(isSeparated) result = separatedAmount(); else{ if(isRetired) result = retiredAmount(); else … 了解更多

charset的作用:告诉浏览器,对于服务器端返回来的HTML文件流用何种编码进行解码,从而进行HTML的解析操作。 有三个地方可以设置charset,而且它们的优先级是有顺序的:1、response header;2、HTML文档中的meta;3、浏览器默认的charset声明。那么它们的优先级是如何的呢? 首先要了解浏览器处理charset的策略:浏览器首先会在服务器返回的response header头中检查是否有charset声明,如果没有,就接着检查HTML head部分的meta标签,是否有声明charset,如果还没有,那么就使用浏览器默认的charset方式进行解码文档流。 在response header头中声明好了charset,那么浏览器在第一时间接收到HTML数据包的时候,就会以这个charset编码进行解码HTML文件流,这种情况下是最快的方式;如果response header头中没找到,那么浏览器会delay解析HTML文档,检查1KB以内的HTML内容是否会包含有charset声明的meta标签。如果还找不到,那么就使用浏览器默认的charset声明进行解码HTML页面,但是这时,已经delay了一些时间了。 如果处理的适当,那么这个delay时间是完全可以避免的,使得HTML页面可以尽可能快的让浏览器使用显示声明的编码进行解码文件流。那就是:在服务端设置好请求内容的charset编码;始终在页面中meta标签内声明charset,当然了,content-type也是十分有必要的。

思路:使用一个储存器,将不同“职责”的处理函数储存起来,之后通过一个统一入口,来处理储存器中的的“职责”函数,将执行有效的结果,立即返回,到此,职责处理完毕。 应用: 在对于传递不同的参数来处理不同的功能; 将功能分“职责”,结构清晰,功能分明; 使用函数的方式,来代替了函数 内部的if逻辑过于负责的判断,可以无限的扩展,最重要的是,可以在不不动原来的函数的基础上,就可以添加其他的“职责”处理函数; /**职责链模式的思维*/ //储存器 var middleware = []; function turning(){ var ret; if(arguments.length > 0){ for(var … 了解更多

《重构–改善既有代码的设计》这本书是去年买的了,利用晚上空闲时间看了大部分的内容,包括一些重构的技巧、良好代码的特点、代码可读性和提高语义化等。这本书改变了很多我之前所持有的观念,包括代码性能、模块化设计、结构样式逻辑分离等的思维。下面粗略的罗列几点目前自己从这本书中所理解到的其中一些知识: 重构本来就不是一件应该特别拨出时间做的事情,重构应该随时随地进行。 第一次做某件事情时只管去做;第二次做类似的事情会产生反感,但无论如何还是可以去做;第三次再做类似的事,你就应该重构。 ——“事不过三,三则重构。”

检测外联js是否加载完毕,这个相对来说比较简单,只需要处理onload和onreadystatechange在非IE和IE下做兼容,但是需要检测外联的CSS文件是否加载完毕,这个就有点恶心了,大致分成了三类:IE和Opera;Chrome和Safari、FF,这时候FF没有跟着大部队走了,这或许也是FF中的一个bug。 最理想的方式,无非就是统一使用onload来检测link元素是否加载完毕。但是事不与程序猿人愿~ 但是兼容办法还是有的。 在IE、Opera下,可以直接使用onload、onreadystatechange这两种方式都可以检测link元素是否加载完成,跟检测script一样的原理。 在Chrome、Safari等基于Webkit内核的浏览器下,估计就要监控document.styleSheets.length的变化了。Webkit内核的浏览器在处理document.styleSheets.length的方式是这样的,当加载完了一个link之后,length就会加1,那么这样的话,就可以使用setInterval的方式来检测length的变化了,对于同时检测多个link是否加载完成的方式也可以利用这个,看length增加了多少。《测试用例》示例如下: [javascript] var link = document.createElement("link"); var cn = document.styleSheets.length; var ti = setInterval(function() { if … 了解更多