我的Javascript類庫開發細節(一)

來源:互聯網
上載者:User

本文送給那些準備寫Javascript架構或已經寫了一點的強人們,

 

我準備做架構的想法是很早以前就有的。主要有以下原因:

  1. 對於小應用,我覺得 jQuery 非常好,沒必要寫和 jQuery 一樣的架構。(學習時除外)
  2. 但大部分時候,我需要的是一個有各種小功能的一個 Javascript 架構 (比如 選項卡 - 閃動效果 - 彈窗廣告 - 文字框 ctrl + enter 的事件),對於網站後台,更需要一個完整的 使用者介面架構。
  3. 我認為理想的 使用者介面架構應該:
    • 介面漂亮(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 歡迎討論

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.