zoukankan      html  css  js  c++  java
  • 我的Javascript类库开发细节(一)

    本文送给那些准备写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 欢迎讨论

  • 相关阅读:
    [leetcode] Combinations
    Binary Tree Level Order Traversal I II
    [leetcode] Remove Duplicates from Sorted Array I II
    [leetcode] Permutations II
    [leetcode] Permutations
    如何在线程间进行事件通知?
    如何实现迭代对象和迭代器对象?
    如何判断字符串a是否以字符串 b开头或者结尾?
    如何实现用户的历史记录功能(最多n条)?
    如何让字典保持有序?
  • 原文地址:https://www.cnblogs.com/xuld/p/1938699.html
Copyright © 2011-2022 走看看