2011年计划

  • 团队技能以及团队协作的培养;
  • 接触手机网页,了解各平台的差异;
  • 产品终于稳定了(希望是这样),今年是网站优化年,要能看到一些明显的效果,包括交互和性能上的;
  • 养成资料整理和积累的习惯,维护团队内部的WIKI。

以上都是工作上的事情了,个人方面,去年拖着一直没学的驾照得赶紧拿到手了。
想把小房子换成大一点的房子,爸妈以后过来,住得舒服一些。
暂时就这样吧,不能奢望太多。

————-5/22/2011 更新————-

  • 生活中的事还挺顺利,把房子给换了,驾照也顺利拿到。
  • 计划赶不上变化,工作也给换了,对于我自己来说都是意料之外,情理当中。
  • 新的工作还挺喜欢,是自己喜欢做的事情,所以激情又回来啦。
  • 今年最重要的就是如何找着自己的方向。
  • 加油!

从一道题目去了解JS里的类型转换

前段时间看了玉伯《一道大题目》,今晚又看到译飞《类型转换的乐趣》

记得当时看了玉伯的文章后就知道他在考《命名函数表达式探秘》的内容,并没有太在意,只是觉得对于浏览器或者Javascript的某些怪异现象,有一定的了解就OK,在实际的运用中,肯定是会避免出现这样的问题。

但看到译飞的文章里提到的 [] == ![] //为true 时,的确愣了一下。
最后,译飞还留下了一道思考题:

{} == !{}; //返回什么值?
[] == [] //返回什么值?

把我的兴趣给提了起来,追根究底一翻再睡觉。
[] == [] 不用讲,肯定是false,两个不同的对象。
通过译飞的分析

Step01: [] == ![] // 由于[]是对象,则 ![] 返回fasle,演变为 Step02。
Step02: [] == fasle // 由于 fasle 是 Boolean 值,则转换成数字 0,演变为 Step03。
Step03: [] == 0 // 由于 0是数字,[]是对象,[] 转换成数字 Number([]) -> 0,演变为 Step04。
Step04: 0 == 0 // 返回最终结果:true

[] == ![] //为true,同理,{}也是对象,{} == !{};应该也是true。
通过运行得到结果false。很明显,中间还有道道。

通过翻看ECMAScript得知,在译飞的Step03:

Step03: [] == 0 // 由于 0是数字,[]是对象,[] 转换成数字 Number([]) -> 0,演变为 Step04。

针对{}[]处理的结果是不一样的。

Number([]) :
Step01: [] 转换成 空字符串
Step02: Number(”) -> 0;

Number({}):
Step01: {} 转换成 ‘[object Object]‘
Step01: Number(‘[object Object]‘) -> NaN

结果:
NaN == 0 //false

具体见ECMAScript 8.6.2.6
还有其它各种类型的转换,可以仔细再看看。

最后,了解浏览器和Javascript的某些怪异现象和特性,可以在项目中避免遇到一些诡异的问题。

—————–我只是条无辜的分割线—————————-

最后的最后,很晚了,睡觉。

在Eclipse里使用ANT合并压缩JS&CSS

Aptana 是一款基于Eclipse的免费开源的软件,非常方便地编写 html, css, js, 有丰富完善的代码提示,包括大部分的 JS 框架的提示,比如 prototype/dojo/jquery/yui 等,相当方便。
由于工作开发环境是 JAVA,于是我用 Eclipse 安装了Aptana 的插件。

ANT,是 Apache 的一个开源项目,用于自动化调用程序完成项目的编译,打包,测试等。
Eclipse 内置了Ant,可以很方便地对JS, CSS进行压缩合并处理。

比如 js, css 文件都放在 web_assets 目录下,那么目录结构如下:

web_assets
    +-- ant-build  //存放ant build xml 配置文件
        +-- js.build.xml //处理 js 的配置文件
    +-- js  //最终的js文件
    +-- lib  //其它依赖的程序
    +-- src  //源文件

阅读全文 »

异步脚本加载 JS Loader

JS会阻塞其它页面资源的下载,通过对JS的异步加载可以解决这个问题,加快页面内容的呈现速度。获得更好的体验。

使用script标签加载

通过firebug查看各种资源加载状态,当test.js下载完毕后,图片才开始下载。

猛击测试页面block.html

使用JSLoader异步加载JS

当使用异步加载方式加载JS时,test.js与图片同时加载,加快了页面的呈现:

猛击测试页面js-loader

JSLoader

JSLoader.load(url, [fun1], [funN]);
参数:
url 要加载的JS的地址
fun 依赖该JS执行的函数

使用示例:

JSLoader.load('test.js', function(){
    document.getElementById('test').innerHTML = test;
});

猛击这里下载JSLoader.js

阅读全文 »

宇轩出浴照一枚

刚洗完澡的轩轩,最喜欢打电话和玩手机了,经常一个人跑到电话旁拿起听筒叽哩哇啦地说个不停。