welefen的随笔

Category Archives: 前端开发

tangram最优定制版codesearch工具

IN:前端开发   标签: , , , , , ,    评论: 1

tangram是什么

tangram是百度前端开发团队开发的一款JS框架,该框架具有一下特点:

  • 可通过定制创建最适合的轻量级版本
  • 多种机制实现扩展,良好的插件支持
  • 丰富的中文文档以及案例,容易上手
  • 全浏览器跨平台兼容
  • 平滑的版本升级体验

tangram codesearch

tangram codesearch是一个tangram方法定制的工具,他可以定制你需要的tangram方法,将没使用到的方法去除,从而减少文件的大小,提升加载速度。

但在真正开发和使用这个工具的时候,你会发现这个工具很鸡肋,为什么呢?主要有下面几个原因:

  • 项目之初你可能根本不知道你要用到哪些方法,可能只能将一些最基本的方法选定,待开发过程中慢慢去重新定制。这种方式非常耗费时间。
  • 项目之初使用全部的tangram,项目完成时统计使用到哪些方法,然后将这些方法打包。首先统计需要耗费一定的时间,其次升级时都要做这个事情很麻烦。如果有哪个方法不在使用了,可能并不会删除。
由于上面2种定制方式都带来很多问题,所以一般情况下直接使用全量的tangram,不再考虑使用定制的tangram了。
有没有办法解决这个问题呢?
如果有一种工具,可以自动分析开发的代码中使用到哪些tangram方法,然后将这些方法打包,那就可以很好的解决这个问题了。 继续阅读 »
10-21
2011

pjax发布qwrap版

IN:前端开发   标签: , ,    评论: 0

之前在制作gplus主题的时候,使用到了ajax+history.pushState,并且把这个功能封装成了pjax,由于当时使用的JS框架是jquery,所以pjax是基于jquery写的。

最近决定写一个基于qwrap的pjax,之前一直没时间弄,昨天终于给弄好了。由于qwrap支持retouch,所以使用上和jquery区别不是很大,拿之前的代码稍微改改就可以了。

下载和使用方式

源代码地址:https://github.com/welefen/pjax

由于pjax里使用了ajax组件,qwrap核心库里是不包含ajax组件,所以需要将ajax打包进来。ajax组件可以使用https://github.com/welefen/qwrap/tree/master/resource/js/wagang/ajax,或者你也可以直接引用这个JS http://www.welefen.com/wp-content/themes/gplus/js/qwrap.js

由于qwrap里不支持live模式和核心包里没有动画组件,所以pjax for qwrap版本默认不支持动画,并且使用方式和jquery版本稍微有些差别,具体如下:

QW.pjax(selector, { //selector一般为a[href="^http://domain"]
    filter: function(){}, //filter函数,将不符合条件的a过滤掉
    container: '#container',
    cache: true,
    storage: true
})

其他使用方式(包括服务端判断方式)都和jquery版本的一样

10-10
2011

在线工具: js/css/html压缩

IN:前端开发   标签: , , , , ,    评论: 1

之前为了编译平台写过一个前端语言的分析、检查、压缩工具FL,实际使用中主要用它的检查和支持模版语法的HTML压缩功能。集成在编译平台里一直运行的很好。现在把剥离出来,形成一个单独的JS/css/HTML压缩工具。

javascript/css/html压缩工具地址: http://www.welefen.com/lab/compressor/index.html

目前支持的功能有:

1、使用YUI Compressor或者Google Compiler压缩javascript

2、使用YUI Compressor或者FL压缩css

3、使用FL压缩html。虽然HTML压缩是支持模版语法的,但目录没有开启。如果有人需要的话可以将这个功能开启。

继续阅读 »

10-09
2011

续: 如何减少代码上线过程中对服务的影响

IN:PHP, 前端开发   标签: , , ,    评论: 3

之前写过如何减少代码上线过程中对线上服务的影响,文中提到的方法是将所有的代码上到服务器的一个临时目录,然后一起操作cp到目标目录。这种方式虽然可以大大的减少上线过程中对线上服务的影响,可以影响时间缩短到2分钟以内。但对于0故障的服务来说,2分钟的服务故障还是非常不能接受的(比如:百度新首页)。

由于静态文件和模版是上到不同的服务器,静态文件还部署到CDN。模版是和后端代码放在一起。这样如果还是原文件名的不能彻底解决问题。

我们知道,任何的静态文件最开始都是在模版里引用了才生效,比如:在模版里有个link,或者有个外链的script。

通过分析,如果上线的时候,将静态文件先上,并且将有改动的静态文件全部重命名的话就可以彻底解决这个问题。一方面静态文件重命名后不会干扰线上正在使用的静态文件,另一方面模版还没上的时候,这部分新的静态文件将不会引用,待模版上线后就会全面切到新的静态文件模式下。

继续阅读 »

09-06
2011

音乐电台chrome插件发布2.0版本

IN:Chrome扩展, 前端开发   标签: , , , , , , , , ,    评论: 49

音乐电台是一款支持百度听、豆瓣电台、酷狗电台、虾米电台、酷我电台、乐酷电台、多米音乐、音悦电台、亦歌电台、人人电台、一首歌电台、百度音乐盒、搜狗音乐盒、Google音乐盒等14种电台的chrome插件,该插件已经放到chrome web store里,目前已经有700名安装用户。

通过收集大家的一些反馈,发现播放模式和选项不是太好用。最近对这块进行了重新的规划,周末在家将代码进行了完整的重构和升级,将版本升级到2.0。升级的功能如下:

继续阅读 »

08-16
2011

sdch: chrome支持的新HTTP传输压缩算法

IN:前端开发   标签: , , , , ,    评论: 3

概述

我们知道,为了加快网络传输,一般都使用gzip对文本进行压缩。如果你现在用最新版的chrome去访问页面,然后打开network控制面板,查看http headers,细心的你会发现在Request Headers里的Accept-Encoding不再是gzip,deflate,而是多了个sdch,变成了gzip,deflate,sdch。如图:

sdch

继续阅读 »

08-12
2011

pjax:ajax和pushState结合的js库

IN:前端开发   标签: , , , , , , , , ,    评论: 8

上篇文章讲到如何使用ajax+pushState打造无刷新改变URL的方式。虽然这种方式是将ajax、history.pushState、history.replaceStatte、window.onpopstate等几个技术点结合,但在具体使用中还是要考虑到很多情况的,如:

1、改变内容的时候也要改变title

2、不支持的浏览器如何处理

3、事件如何绑定,是否使用了delegate模式

4、ajax异常处理

5、ajax前后的自定义事件等

介于有上面等多的疑问,将ajax和pushState封装下,供后面使用还是非常有帮助的。本文就是对pjax(ajax+pushState)的一个介绍

继续阅读 »

07-26
2011

使用ajax和history.pushState无刷新改变页面URL

IN:前端开发   标签: , , , , , , , , , , ,    评论: 7

表现

如果你使用chrome或者firefox等浏览器访问本博客、github.complus.google.com等网站时,细心的你会发现页面之间的点击是通过ajax异步请求的,同时页面的URL发生了了改变。并且能够很好的支持浏览器前进和后退。

是什么有这么强大的功能呢?

HTML5里引用了新的API,history.pushState和history.replaceState,就是通过这个接口做到无刷新改变页面URL的。

继续阅读 »

07-23
2011
loading...