不会拿来主义的程序员不是好程序员

之前虽然我一直以自己写为主,很少用别人现成的API,但是我也深知,仅仅只是依赖于自己的手工劳动这样虽然在很大程度上保证了代码量的精简和高速,但是在大批量的编程和大项目上是无法胜任的,好的程序员必须要快速的能够把别人现成的可以用的东西拿过来用,而不是拘泥于自己去写。

于是这次在写这个局内部的管理程序的时候,我更多的想到是API,首先确定要玩的是JQuery这个大名鼎鼎的Javascript API,于是找来了它的中文参考手册(这里),研究了一下发现,这个家伙确实提供了很多简化的写法,虽然并不是非常的困难,但是如果用在编程上,确实减少了很多的代码书写量。

然后为了实现类似Google的Serach Suggest功能,使用了Jquery Autocomplete(这里)。这个家伙相当的强大,可以非常轻易的实现单词自动补完甚至可以实现拼音首字母的快速检索。这里有详细的手册。

其次用到了TipsWindow,一个基于Jquery的浮动层API,提供了相当强的设置和功能。

同时,在研究它的代码的时候,我发觉,它和我之前看Google 的Gmail一样,采用了一张大的背景图,把所有的背景和图标都集中了在里面……这个难道有什么蹊跷么?我最初怀疑是可以便于客户端缓冲,但是考虑一下明显不可能,因为客户端载入一张小图片当然比载入一张大图片要大,那为什么都采用这样的设置,而使用CSS的图片分割功能呢?

求助于Google终于知道,这样的最大的好处就是可以减少HTTP服务器的Request量,因为HTTP在高并发的时候对Request的数量相当的敏感,这就和我们拷贝小文件数量越多越慢一样,如果全部压缩成RAR一次性拷贝可能只需要几秒,但是分开来的几千甚至几万个小文件甚至可以用上几十分钟才能拷贝完。

另外不得不记一笔,之前曾经解决过同样的问题但是因为没有记录最后自己也忘了怎么解决的了。

很简单的JavaScript的字符串查找替换为问题,很简单的使用replace方法就可以了,但是关键是那个用来匹配的正则表达式对象,那个并不是字符串,如果是字符串的话匹配一定不成功,在类型中它准确的类型应该是Function,而并不是String。

这样就导致了一个问题,在匹配的字符串不断的改变的情况下你无法简单的用字符串连接的生成一个Function啊!

结果最后还是自己发现了最初这个函数在讲解的时候就有举例过它的用法,那个正则表达式模式可以使用new RegExp来定义,方法是:

re = new RegExp(i,"g");

这里的i的值事先用字符串连接生成好(不需要/),后面跟的是模式修正符。

这东西其实在做Share站的时候我就已经写过了,但是现在又忘得一干二净……

评论

此博客中的热门博文

远程记录OpenWRT日志

用OpenWRT打造自动翻墙路由器(详解篇)

Python中为什么要用is None来代替== None?