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 欢迎讨论

  • 相关阅读:
    PAT 甲级 1126 Eulerian Path (25 分)
    PAT 甲级 1126 Eulerian Path (25 分)
    PAT 甲级 1125 Chain the Ropes (25 分)
    PAT 甲级 1125 Chain the Ropes (25 分)
    PAT 甲级 1124 Raffle for Weibo Followers (20 分)
    PAT 甲级 1124 Raffle for Weibo Followers (20 分)
    PAT 甲级 1131 Subway Map (30 分)
    PAT 甲级 1131 Subway Map (30 分)
    AcWing 906. 区间分组 区间贪心
    AcWing 907. 区间覆盖 区间贪心
  • 原文地址:https://www.cnblogs.com/xuld/p/1938699.html
Copyright © 2011-2022 走看看