Dynamic Static

Jaron的博客 - 关于代码及其他

Fork me on GitHub

近半年工作小结

进入新公司有近半年时间了,期间作为开发主力参与了几个项目,真的学到不少东西,现在做个小小回顾。



Linux/Mac OS

时间回退到三四年前,我可以说是一个Windows的忠实使用者与拥护者。但随着逐步接触Web开发及各类开源软件,特别是看到近两年前端工具、JavaScript框架的发展壮大以及Nodejs的流行,我越来越觉得基于linux/unix的开发机才是最适合我的。我的理由:1.各种开源软件首选开发平台大都是linux;2.各种新兴前端工具如bower, grunt等都是基于Nodejs的,而Nodejs在linux下开发相对更方便(注:Nodejs早期其实也只有linux版本)。

jQuery JSONP请求的错误处理

jQuery的ajax方法封装的非常好,使用它你可以非常轻松的编写异步请求代码,但如果你是用它来做JSONP跨域请求,那你可要注意了,此处有坑!

以下是常见的jqeury jsonp请求的代码:

1
2
3
4
5
6
7
8
9
10
11
12
$.ajax({
  url: 'https://api.github.com/users/jarontai/repos',
  type: 'GET',
  dataType: 'jsonp', // dataType为jsonp
  success: function(data) {
      $('.result').text(JSON.stringify(data));
  },
  error: function(jqXHR, textStatus) {
      $('.result').text('error');
      alert('JSONP error!');
  }
});

以上方法看似安全可行,但如果你把url参数改成某个不存在的地址,你会惊奇的发现:虽然浏览器终端报出错误(404或其他网络错误),但你的error回调却没有被执行!?

管理多个ajax请求(jQuery)

在web应用的开发中,我们可能会碰到需要发起多个ajax请求的情况。

以下应该是最常见的写法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// Get html
$.get('/test', function(html) {

  // Get json data
  $.getJSON('/api/test.json', function(json) {

    // Get the JS
    $.getScript('/assets/test.js', function() {

       // display result
       $('.result').text(json.result);

       // Add html to page
       $('body').append(html);

    });

  });

});

以上方法虽然可行,但是如果请求很多,就会产生不易维护的多层嵌套代码,而且请求是一个完了才执行下一个,效率不高。

用iFrame Resizer解决iframe高度自适应问题

最近工作中需要对一个旧项目进行改造,不得已使用了让人头疼的iframe,碰到的最大问题是没有好的方法使其高度自适应。Google一番之后,发现iframe-resizer能够比较好的解决这个问题,而且还支持跨域访问(使用postMessage)。

在使用它之前,必须明确iframe resizer要求IE8+(firefox,chrome等自然没有问题),如果你需要支持旧版本IE,请关掉本页然后再去google。其次,iframe resizer提供了原生JS与jQuery插件两种调用方式,

使用cnpm镜像服务

因为node/npm的服务器是在国外,而我大天朝的网络又是如此‘给力‘,所以在使用npm install安装依赖的过程中,经常会卡住;我不得不频繁的使用Ctrl+C中止下载,然后再尝试n次才能搞定。在google良久并尝试诸多方法之后,发现使用cnpm应该是应对此问题的最佳方案(当然能用VPN最好)。

Hello World

这是我博客(基于github与octopress)的第一篇文章。

摘抄部分Octopress指令: