JavaScript 框架分类

注:本文摘自司徒正美编著的《JavaScript框架设想》一书。

假如是从内部架构与理念分别,如今JavaScript框架能够分别为5类

第1种

涌现的是以定名空间为导向的类库或框架,如建立一个数组用new Array(),天生一个对象用new Object(),完整的Java作风,因而我们就能够以某一对象为根,不停为它增添对象属性或二级对象属性来构造代码,金字塔般地垒叠起来。代表作如初期的YUIEXT

第2种

涌现的是以类工场为导向的框架,如有名的Prototype,另有mootoolsBase2Ten。它们基本上除了最基本的定名空间,其他模块都是一个由类工场衍生出来的类对象。尤其是mootools 1.3,把一切范例都封装成Type范例。

第3种

就是以jQuery为代表的以挑选器为导向的框架,全部框架或库主体是一个特别类数组对象,轻易集化操纵——由于挑选器通常是一会儿挑选到N个元素节点,因而便一并处置惩罚了。jQuery包含了几样了不得的东西:“无new实例化”手艺,$(expr)就是返回一个实例,不须要显式地new出来;get first set all接见划定规矩:数据缓存体系。如许就能够复制节点的事宜了。另外,IIFE(Immediately-Invoked Function Expression)也被发掘出来。

第4种

就是以加载器串连起来的框架,它们都有复数个JavaScript文件,每一个JavaScript文件都以牢固划定规矩编写。个中最有名的莫过于AMD模块化是JavaScript走向工业化的标志。《Unix编程艺术》枚举的浩瀚“金科玉律”的第一条就是模块,内里有言——“要编写庞杂软件又不至于一蹶不振的唯一要领,就是用定义清楚的接口把多少简朴模块组合起来,如此一来,多半题目只会涌如今部分,那末另有愿望对部分举行革新或优化,而又不至于牵动满身”。很多企业内部框架都基本采用这类架构,如DojoYUIkissyqwrapmass等。

第5种

就是具有明白分层架构的MV*框架。首先是JavaScript MVC(如今叫CanJS)、backbonejsspinejs,然后更相符前端现实的MVVM框架,如knockoutemberangularavalonwinjs。在MVVM框架中,原有DOM操纵被声明式绑定庖代了,由框架自行处置惩罚,用户只需专注于营业代码。

下面是有关框架特征的结论。

  • 对基本数据范例的操纵是基本,如jQuery就供应了trimcamelCaseeachmap等要领,对Prototype.js等侵入式框架则是在原型上增添camelize等要领。

  • 范例的剖断必不可少,罕见情势是isXXX系列。

  • 挑选器、domReadyAjax是当代框架的标配。

  • DOM操纵是重中之重,节点的遍历、款式的操纵、属性操纵也属于它的领域,是不是细分就看框架的范围了。

  • brower sniff已过期,feature detect正被运用。不过特征侦测照样有局限性,假如针对于某个浏览器版本的衬着Bug、安全策略或某些Bug的修改,照样要用到浏览器嗅探。但它应当独立成一个模块或插件,移除框架的中心。

  • 如今主流的事宜体系都支撑事宜代办。

  • 数据的缓存与处置惩罚,如今浏览器也供应data-*属性举行这方面的事情,但不太好用,须要框架的进一步封装。

  • 动画引擎,除非你的框架像Prototype.js那样具有像script.aculo.us如许顶级的动画框架做后援,最好也加上。

  • 插件的易开辟和扩大性。

  • 供应诸如Deferred如许处置惩罚异步的解决方案。

  • 纵然不特地供应一个类工场,也应当存在一个名为extendmixin的要领对对象举行扩大。jQuery虽然没有类工场,但在jQuery UI中也不能不增添一个,可见其重要性。

  • 自从jQuery出来一个名为noConflict的要领,新兴的框架都带此要领,以求狭缝中生计。

  • 很多框架非常重视Cookie操纵。

    原文作者:omgdog
    原文地址: https://segmentfault.com/a/1190000000766917
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞