JavaScript 类库细节讨论

JavaScript 越来越火,其框架也越来越多。老去的如YUI,风头正劲的如JQuery。讨论了一下,前端小组决定写一个适合自己当前工作的,暂且称为类库的 JavaScript 文件。
四天前确定了一下研究方向,今天开始第一次讨论,讨论的细节如下:

类库的名字:

无论是框架还是类库,这总是自己的孩,总得有个名字。于是会议的第一项就是给自己的孩子起个名字。从三四个后选名字中选出一个,既简短,又方便使用键盘的孩子敲写(这是嘛逻辑?-_-!!!),暂定QUI。

规范:

没有规矩不成方圆,大家要合作就得统一一下编码规则,大家都遵照一个规则写的代码才方便别人阅读也便于别人维护。参照JavaScript程序编码规范,经讨论,总结出如下规范:

  • 缩进:Tab,四个空格
  • 注释:使用单行注释 在文档头部标注update日志 svn提交时加入描述信息
  • 变量及函数声明:

    1. 避开全局变量(全局变量是魔鬼),使用var声明
    2. 变量名称:使用驼峰结构——首单词小写,其余单词首字母大写其余字母小写。私有成员变量名由下划线开头
    3. 函数名称:作为类名时,首字母大写;作为方法时,与变量命名相同(驼峰结构)
    4. 函数声明时,函数名后左大括号单放一排,例如:
      个人不太赞成这种提案,因为借Aptana之类的编辑工具format后会将左大括号自动与函数名放在一排

      //不采用
      function funName(param){
      }
      //采用
      function funName(param)
      {
      }

    5. if及其他结构语句中,语句体只有一行内容时也不能省略大括号,例:

      不采用:for(var i = 0; i < 3; i++)
      m+=2;
      采用:for(var i = 0; i < 3; i++)
      {
      m+=2;
      }

    6. 函数定义时及调用时,各个参数在名称前均有一个前导空格例:

      不采用:function funName(param1,param2,param3)
      采用:function funName( param1, param2, param3)

  • 细节注意:

    1. 每条语句结束后,其末尾要加分号”;”,避免由JavaScript自动加分号的原则导致错误
    2. 尽量不要使用with结构,with本意是想让用户减少键盘输入,比如

      obj.a = obj.b;
      obj.c = obj.d;
      可以写为
      (with obj){
      a = b;
      c = d;
      }

      但在实际运行时解释器会先判断obj.b和obj.d是否存在,如果不存在的话会判断全局变量b和d是否存在,效率低下,而且容易导致意外发生。

    3. === 与 == 的用法要记牢
    4. 确定以后使用[]代替new Array(),但是是否使用{}代替new Object()待定

实施:

  • Ajax:

    1. get/post 实现,加入AjaxPoll的概念,增加可用性
    2. JsonP 跨域访问内容等,注意:返回的数据不再是单一的json
    3. Ajax请求IE缓存的问题
  • DOM操作:

    1. 增加:创建元素,可根据参数来创建DOM元素(参数应该包含元素tagName,attr,附加节点——添加在哪 等)
    2. 删除:删除DOM元素的时候要注意防止内存泄露的事情发生,把该对象的属性清理干净
    3. 修改:包括修改元素样式,改变innerHtml 为事件增加bind方法和unbind方法是必须的
    4. 查找:根据id、name、tagName最好也包括className等来查找DOM对象
  • 方法扩展:

    1. String对象:trim方法,string2json 等方法
    2. Array对象:inArray方法等,大家经常用到但是js本身没有提供或提供的并不能满足大家需求的函数
    3. Date对象:日期的加减等方法
2010年1月11日
首页 > JS&HTML > JavaScript 类库细节讨论

相关文章

评论 ( 9 )
  1. Jutoy 2010年1月11日 14:20  | #1 沙发!

    小小子的JS很强啊,我看你好多JS的文章~ :o
    沙发了!!

  2. simaopig 2010年1月12日 01:26  | #2 板凳

    @Jutoy
    学习中,想向前端方向发展。呵。

  3. Showfom 2010年1月12日 09:43  | #3

    赶紧赶紧 发展大了来帮我 哈哈 哈哈

  4. simaopig 2010年1月12日 09:44  | #4

    @Showfom
    我晕。看你回的邮件了,你的php程序我看写的不错啊,咋还这么谦虚呢。呵呵。。

  5. diyidu 2010年1月12日 12:36  | #5

    JS真是一门高深的学问啊.

  6. simaopig 2010年1月12日 12:53  | #6

    @diyidu
    网页设计也是啊。生活也是如此,各种事情都有大学问在里面,歌里不也说嘛,“一不小心就让生活弄这一头大包”,呵呵。

  7. bolo 2010年1月15日 18:32  | #7

    怎么能说YUI老去呢?只不过是门槛比较高而已,雅虎系网站用它用得火热呢

  8. alswl 2010年1月26日 01:09  | #8

    学习了,还去看了《JavaScript语言精粹》的介绍,等手头的C/S项目完了,就去学

  9. simaopig 2010年1月26日 03:41  | #9

    @alswl
    呵,那本书很棒的。呵呵。

 ;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:
容许使用的 HTML 标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
Trackbacks & Pingbacks ( 0 )