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