i'm Chao

Front-end Development / iOS Development

构建大型jQuery应用

原文:http://addyosmani.com/blog/large-scale-jquery/

1.依赖管理

目前常用的script loader主要有两个,RequireJS (by James Burke) 与LabJS (by Kyle Simpson)。有些人会认为这其中一个会比另一个要好,但事实上他们各自有各自的特点。以我的经验来讲,RequireJS的特性之一是提供结构化模块的支持,而LabJS更适合不需要额外特性或者需要轻量级库的时候。

如果你想知道更多关于如何选择 RequireJS、LabJS,请看这里:http://msdn.microsoft.com/en-us/scriptjunkie/ff943568。如果这两个还不能满足你的需求,你还可以看看下面的内容。

解决方案:

RequireJS – 如果你期望你的代码更加模块化,我强烈推荐它。它会试图限制模块对全局命名空间的影响,并使得依赖更加明确。同时它还提供一个优化工具,帮助你合并压缩脚本 - http://requirejs.org/docs/jquery.html

LabJS – 如果你需要按照一定的顺序高效的加载脚本,或者你正在寻找比RequireJS更轻量级的框架,或者你对模块化依赖管理根本不感兴趣,那么你不妨试试LabJS。 – http://www.labjs.com (Alex Sexton 还在LabJS的基础上开发了条件化的loader,YepNope JS - http://www.yepnopejs.com)

StealJS – 又一个非常棒的依赖管理工具。Steal是 JavaScriptMVC框架的一部分,不过你可以单独使用它。它也提供了合并、压缩、清理等功能。 – http://jupiterjs.com/news/stealjs-script-manager

JSL Script Loader – 提供了加载、防重复加载、缓存等功能。但是它的用户也许没有LabJS、RequireJS那么多 –  http://www.andresvidal.com/jsl

Bootstrap – 它的功能很少,但足以完成任务。如在你在寻找一个最小的没有任何多余功能的解决方案,那么也许它是最合适的。 – https://bitbucket.org/scott_koon/bootstrap

2.MVC&管理大型jQuery应用

软件工程中的设计模式、架构模式可以让你创建可重用的,结构化的,更具组织性的代码。我认为在开发中使用设计模式是必要的,尤其当你需要确保团队编写的代码的风格和结构是一致的时候。

清理浮动的整理

清理浮动是前端工程师每天都会用到的技术,目前清理浮动的技术形形色色,另很多新手眼花缭乱。所以我就结合了几篇文章,做了一些整理。

一、为什么要清理浮动?

这里我不做细讲,请新手参考《CSS Mastery》中有关浮动的章节。

简单的讲,当我们把一个框向左浮动起来时,它就会脱离文档流,并且向左移动,直到它左边缘碰到其父框的左边缘。当我们把框浮动起来后,会出现各种问题,比如下一个非浮动元素环绕着浮动框。这时候为了正确排版,我们需要把浮动清理。

二、如何清理浮动?

1、采用div标签clear的方式

html
1
2
 <div class="clear"></div>
  
css
1
2
3
4
5
6
7
8
9
10
  div.clear {
      clear:both;
      height:0;
      line-height:0;
      margin:0;
      padding:0;
      border:0;
      overflow:hidden;
  }
  

优点:代码量极少,复用性极高。

缺点:完全不能完美的适应语义化,不利于改版以及需求变更。

建议:初学者使用,可以让你快速的解决浮动问题。

2、采用br标签clear的方式

Yubikey不再记忆密码

我的密码管理历史

相信的大家一定有很多帐号。上网这么多年下来,东注册一个帐号,西注册一个帐号。时间长了,觉得老用一套帐号不安全。于是换了一套又一套,久而久之密码堆积了一堆,连自己也搞不清哪个对应哪个了。

就在两年前,我找到了keepass这个软件。它很好的帮我把所有密码管理起来,而且还是跨平台的,我只要记住主密码(master key)就可以取得所有帐号密码。不过我经常要在不同的系统、电脑使用同一个密码库,keepass没有我想要的同步功能。

后来找到了Dropbox这个强大的同步工具,帮keepass弥补了这个缺点。尽管同步问题解决了,可是keepass还是有个致命的弱点–操作效率太低。每登录一个网站,先要找到这个帐号记录,再复制粘贴帐号,然后还要复制粘贴密码。来来回回折腾太麻烦了,如果keepass能和浏览器结合,自动帮我填入帐号密码就好了。就像浏览器在带的密码管理器一样,不过浏览器自带的不安全,也不方便,不能同步,而且重装系统帐号就丢失了。

后来我发现了Lastpass这个强大的工具,它是浏览器的扩展,支持ie、firefox、chrome,而且跨平台,甚至在iPhone、黑莓、Android上都有客户端。Lastpass是把我的帐号密码存在云端的。每当我在一个网站登录的时候,它会检测这个站点的帐号是否记录过,如果没有,它会提示我记录。当我确定记录帐号后,下次再访问这个站点的时候,lastpass会自动帮我填入帐号密码,我只要按登录即可。

入手yubikey

yubikey是我在春节前买了,大约1周就到了。25$一个,买了两个,一个是帮同学带的,运费20$。因为一直在复习GRE,没时间写文章。接下来让我们来看看yubikey真面目吧。(不知道yubikey?参见Yubikey不再记忆密码

首先是拿到手的国际邮件:

yubico发来的EMS

用笨办法实现电驴和迅雷直接的互导

之前在用电驴下一部比较老的片子,结果挂到95%最后发现已经没人共享了,这很是让人郁闷。然后我拿迅雷离线下载下同样的文件,结果发现迅雷居然下好了,我估计这文件一直存在迅雷的服务器上。如果这时候我用迅雷下载,当然可以下完,但我又不想让那个95%的电驴白下,怎么办呢?

曾经我有一个同学号称下载杀手(什么download breaker,完全盗版imagine breaker嘛)。flashget、迅雷、bitcomet、emule之类的文件他都可以实现互导,不能直接导的,还可以通过修改文件来导入。不过我没这么厉害,我只会把店里的文件后缀改成迅雷的后缀,然后让迅雷导入。这方法以前可行,可是现在好像不行了,不知道为什么。

后来我突发奇想。虽然他们两的文件格式一样,可是他们都遵循ed2k协议。于是我想到了通过ed2k互导。我抱着试一试的心态,把电驴和迅雷都连上同一台ed2k服务器,结果迅雷发现了我的电驴,然后以2m/s的速度下好了95%。最后我用迅雷离线下载把文件下好了,稍微等了一会,电驴也下好了。出于对别人分享的尊敬,我继续把电驴开着给他人分享。

这种方法果然可行,不过有一定成功率。有一次,我的迅雷怎么也连不上自己的电驴。可能是因为下载的人还是比较多的,有干扰。为了解决这个问题,我找到了利器,edonkey server。对,就是在本地搭建私人的电驴服务器,导完后,再关掉。可惜的是edonkey的网站已经关掉了,找不到正宗的官方下载地址。没办法,只能从国内某些下载站下载了。下下来后,发现这个软件很小,而且不需要安装,直接运行即可,非常方便。

用法也很简单。首先启动ed2k服务器,然后在迅雷和电驴里面加入本地地址,我用的是localhost。然后让迅雷电驴都连上去,接着就开始飞快导入咯。很简单吧?

附上ed2k服务器软件(共享一个月):

Linux版:https://dl.dropbox.com/u/1284503/ed2k/ed2kserver.gz

Windows版:https://dl.dropbox.com/u/1284503/ed2k/ed2kserver.zip

最后提醒大家:

下完后一定要分享!!