博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

我的Javascript类库开发细节(一)

Posted on 2011-01-18 22:23  xuld  阅读(724)  评论(3编辑  收藏  举报

本文送给那些准备写Javascript框架或已经写了一点的强人们,

 

我准备做框架的想法是很早以前就有的。主要有以下原因:

  1. 对于小应用,我觉得 jQuery 非常好,没必要写和 jQuery 一样的框架。(学习时除外)
  2. 但大部分时候,我需要的是一个有各种小功能的一个 Javascript 框架 (比如 选项卡 - 闪动效果 - 弹窗广告 - 文本框 ctrl + enter 的事件),对于网站后台,更需要一个完整的 UI 框架。
  3. 我认为理想的 UI 框架应该:
    • 界面漂亮(Ext dwzjs 两个框架的界面是我满意的)
    • 面向对象(Ext 是我满意的)(即 比如创建一个 Panel 面板,使用: new Panel().show() 形式)
    • 简单灵活(jQueryUi YUI 是我满意的)   (即 比如我需要一个文本框,那就只要引进文本框,而且是很方便找到一个功能对应什么资源)
    • 免费(Ext 不算免费)(至少 LGPL 协议吧)
    • 速度高,代码小(这个是必须的,所有框架都尽量实现此目标)
  4. 要想同时满足以上条件,于是,我便做了一个艰难的决定,进入Javascript框架开发领域。

一开始我花了一些时间开始写代码,但写了才知道

       框架不是你想做,想做就能做。 

 

 

于是我便停下来, 开始读 jQuery Mootools 和 Ext 源码

在这些源码都已大致搞定后,开始设计框架 ---- 设计很重要。

我发现很多人写框架都是在模仿已有框架的设计,而不是自己去设计。故很多声称写框架的人其实只是山寨框架。

比如我发现有个国内框架的结构和 jQuery 差不多,但内部一些函数名完全是作者自己习惯 ---- 甚至有很多英语的语法问题。

也有人写框架就是靠自己的能力去完成 jQuery 的功能: 如果你不是为了学习,那就是为了浪费青春。

 

我对框架的设计是:  使用面向对象思想,将所有函数功能分类。比如和数组有关的一个函数: makeArray ,作为 Array 类的成员: Array.create(["aaa","bbb"]);  创建一个数组。 

 

对于一个面向对象的Javascript框架,必须解决以下问题:

模块机制 - 你必须提供一个机制,管理全部的js文件。而且模块互相引用的问题也必须解决。

类的创建和继承 - 这是基本的,注意支持引用成员 - 现网上流行的那个创建类的代码是不支持成员是引用对象的。

基本的库函数 - 不必太多,这个主要给自己用,自己不要的不要加太多。

      永远不要添加 Object.prototype   尽量不要添加  Function.prototype

DOM 操作 - 记得兼容 ,比如 万一 $ 被使用

    Dom 操作一般人是写不出完美的, 必须学习成熟框架,或直接使用成熟的框架。

Ready 文档载入运行 - 这是必须的, 这个建议学习 jQuery 。

 

具体解决方法见下文

 

目前我想我的底层框架已经完成,然后就是实现功能。具体实现很多的细节,也在下文说明。

 

大部分人应该没想过怎么做就开做了,于是问题很多,自己也觉得代码乱。这时候要重新理代码,不可继续写。

 

 

 

本人 QQ 744257564    擅长前端  XULD 欢迎讨论