若干JS框架杂谈

近来利用一点时间,对十多个 JavaScript 框架进行感性的认识,谈不上知性、理性、超越理性、悟性,因为本人真的没在项目中使用过这些 JS 框架,顶多按自己的理解在源码中发掘一下上下文的意思。然而另外一点必须唠叨,对 JS 的悟性却是无止境的……多看看人家心血作品总该有益的。言归正传,究竟我想干什么呢?就是围绕一些 JS 框架的个人评价,可能不入大家法眼,请多体察。

LivePipe

LivePipe  http://livepipe.net/采用 prototype.js 作为底层库,提供一系列的基础控件如 tab、window 等。其标榜的“面向事件编程”,带来优点之一就是源码可读性强,并且易于扩展。不过作为一个基本的控件库,考虑得地方不算多,例如 setCookie() 的函数明显就“偷工减料”。p.s 这个库的图片素材很赞。

BlueShoes

BlueShoes 提供很多 JS 小物件的设计www.blueshoes.org/en/javascript/。界面上没有出彩的地方,采用经典凹凸边框。放眼源码都是一个个 funciotn,而且对象 {} 的写法都很少见。其源码尤其令人吃惊的地方底层从 Netscape Navigator 4.0 和 IE4 开始支持的(EventHandler.js)。看来,综合界面和源码遇到了前辈了。

CSSUtilities

看 CSSUtilities 源码是一个很舒服的事情(http://t.cn/a9TWZ0)。不是俺矫情,而是它附带的注释确是详尽,生怕你不懂似的(仍要加强英语:)。此乃归功于作者 James Edwards 杰出的贡献,但若说和 John 的 Sizzle.js 速度比起来怎么,俺就和你一样不知道,呵。浏览 James 优雅的主页,还有其他好东西,GoGo!

flashblockdetector

Flash 很“不幸地”成为众多广告的载体,为防止烦人的广告出现于是出现了很多的拦截 Flash 插件。但我们怎么知道浏览器有否安装这些插件呢?通过 JS 脚本可以侦查出插件,比如要介绍的这个flashblockdetector。顾名思义,它仅仅只是检测,而不是使那些拦截器失去作用。其实,如用好这个插件,用户却会遭殃的……

Spine

客户端 MVC 的框架越来越多了,Spine(maccman.github.com/spine)即是一例。Spine 与 Backbone 很像,参考了后者许多接口,一般没什么问题,Routing/Patterns 也一应俱全,还有 guid 函数。该库有自己的 OO 机制(试问哪个库没有?),为 D.C 那套再扩充。Event 方面仍是大路的事件队列。代码小而精应该可以和
BackB 比一比。

Underscore

Underscore(http://documentcloud.github.com/underscore/)可谓博众家之所长,计有 prototype 和 JohnResig、尤其 FP 大牛 OliverSteele 等。撇开 FP 特性不谈,看自己懂的且有意思的地方:类型检查,看对象是否有某方法为准,如''应有 charCodeAt
等,我自己编码时就常用 pop 测数组。自己受教育的就是,检查布尔类型,简单得令人豁然开朗,obj===true||obj===false

json-sans-eval

标准方法 JSON.parse 未普及之前,eval 仍是解析 json 字符的主要手段。但因为通过 eval,所以欠缺安全性方面的考虑,容易免恶意代码借此入侵。针对此问题于是有了规避 eval 的方法,如 json_parse.js(安全却效率低)/json2.js(快,牺牲了安全性),还有http://code.google.com/p/json-sans-eval/,应该有不少改善。

BBC glow

浏览 BBC 公司出品的 JS 框架 Glow 之源码中,发现绝非大路货(http://www.bbc.co.uk/glow/)。优点:一、对程序员友好,表现在完善的错误检查,看看 util.cookie() 就知道了;二、优良的模块组织,通过 Glow.provide 定义模块;三、整合速度著称的 Sizzle;四、详尽的文档例子;五、一些灵活的技巧,如 nArr=[0,NaN];(/…/.exec(ua)||nArr)[1]

wu.js

刚搜索下,竟没有关于 wu.js 像样的介绍。wu 和前面介绍的 underscore 那样,也是搞 FP、惰性计算为主的 js 库(http://fitzgen.github.com/wu.js/),浏览器和 node 里面皆可使用。迭代器 Iterators 是 wu 里的大头,什么惰性计算?又关迭代器神马事情?该库首页第一个例子便开明宗义解答这俩个问题,十分友好。另高阶
fn 也是重点。wu 很有个性名字上可看出。

Google Closure-pools.js

顺瓜摸藤来到 Google Closure 宝地,发现其事件库很周详,连对象池 pools.js 都有,其他的更别说了,Gog 正是艺高人胆大什么的包罗万有。瞧瞧这对象池(http://closure-library.googlecod ... vents_pools.js.html),不说什么作用光看语法,有一个特色就是某一个成员既不分配值,也不作任何运算,后面加个分号;就完了—什么意思?估计乃“签名”而已,后面代码再详细定义。

p.s关于Google Closure,笔者翻译过它对 Ext JS 比较的文章,可参考JS堂帖子

Oz.js

“短小精悍、跨浏览器、完全面向对象……"但凡js库的这些,我们都听得太多,再不就是文档、例子的考量。实际上做一个 js 库不难,js 本身也上手容易,脚本还是脚本很利于练手,有激情马上可以做,而且做出的库每个都可以说 yet anotherjsLib 云云。作为收录我把这定为一类,以 Oz 为代表http://code.google.com/p/oz-js/

Beyond.JS

BeyondJS 作为一个典型的函数式风格 js 库,早在 05 年左右面世。有朋友或许还记得 w3future 这个网站,她很早对 js FP 方面进行发掘,提到的例子就是一行 curry 搞定的。源码看起来可能有点陈旧的味道,用 eval() 也比较多,但有一个好玩的地方在于支持 rhinoh 和微软的 HTA/WSF 组件——难道要证明 FP 走遍天下 js 宿主?

Backbone.js

群友谈到,Backbone.js 做 MVC 很好http://documentcloud.github.com/backbone/,仔细瞧瞧源码,它分配 Collection 成员方法有一套,把方法名称的字符串放置一数组,然后遍历继而 apply:_[method].apply(_,[this.models].concat(_.toArray(arguments)));
虽然比较繁琐,但仍感觉作者一气呵成写出来的包括丰富的注释内容,呵呵。

mustache.js

mustache.js https://github.com/raycmorgan/Mu,作为一款健壮的模板系统,可支持包括 node 在内的 ruby、coffeescript 等众多语言。群内已有勇于尝试 mustcha 朋友,投入到一个论坛项目中,全程 js!http://www.iwillwen.com/microgroup.html。mustache
支持编译模板,这和小弟在 ExtJS 上了解的模板编译有何不同呢?哪个快?~要待好奇的我去瞄瞄。

---------------------------END---------------------------

提到的 js 框架有些已经没有官方网站了,可以在JS堂下载源码。

一边继续关注“可爱”的 JS 框架,一边继续补充吧……

时间: 2024-11-02 08:27:07

若干JS框架杂谈的相关文章

JQuery,Extjs,YUI,Prototype,Dojo 等JS框架的区别和应用场景简述_javascript技巧

所以Javascript已经成为了web开发最最基本的要求之一了. 而在现实的敏捷开发中,我们通常会选择一个JS框架来取代繁琐的Native Javascript的编写.你会发现这样会节省很多的时间,写的代码也很清晰便捷.(当然在学生时代的是有也质疑过,用框架会对原生态的 Javascript理解不深入,其实这是多虑了的.在对框架的深入的同时,对原生的js也会理解的更透彻一些.成为一个精明的开发者,两者是相依相偎的.而最好的状态就是想Qzone前端一样,完全按照自己的需求开发出一套JS,CSS框

轻量级JS框架 SaturnJS 2.0正式发布

SaturnJS是一款轻量级JS框架,具有调用灵活和内核小巧等特点. SaturnJS采用按需加载的方式加载各类JS插件,部分插件采用网上开源的JS代码,并且非常易于扩展,帮助开发者快速创建自己的JS代码库,从而提高开发效率.   2.0 完全颠覆1.0的架构方式,而是提供一个虚拟的类,并支持构造函数.继承以及多重继承等类的特性,帮助开发人员更好地使用JS来实现更为复杂的前端应用. 新增特性 配置文件:新增了rtenv.conf配置文件,可以设置各种模块的路径以及开启或关闭某些功能,用户也可以自

国人开发的比较优秀的js框架:como js

今天 @karryZhang同学提到一个新的国产的js框架como js,我就去看了一下,觉得还不错.另外我们一直在学习和使用老外写的东西,也应该放眼国内,发现并推广一些国人开发的比较优秀的项目. como js是一个比较轻的js框架,但是功能还是比较强大的,实用性比较强.它有以下特性: 对原生对象如String扩展常用函数 简约而快速的CSS选择器 支持类的声明与继承 强大的js包扩展机制,支持CSS按需加载 非侵入式切换调用,与第三方框架并存 高效.易操作的动画执行 支持主流浏览器 当然,可

页面-能弹出子画面的就是js框架有哪些?

问题描述 能弹出子画面的就是js框架有哪些? 如题 点击html页面的按钮后,能弹出子画面或者是模态页面, 或者是能实现类似效果的js框架 有哪些? 解决方案 实现模态窗口,可以参考这个:http://www.jb51.net/article/21999.htm: js框架应该都能实现模态窗口,可能是方法不同而已. 附上js相关框架介绍:http://zhidao.baidu.com/link?url=_CetoySuDMUHWxHjZqpwm7sUme0jSzlZS0GIchcwVo9CTk7

13 款惊艳的 Node.js 框架——第2部分

[编者按]本文作者为 Peter Wayner,主要介绍13款至精至简的 Node.js 框架,帮助你简化高速网站.丰富 API 以及实时应用的开发流程.本文系国内 ITOM 管理平台 OneAPM 编译呈现,以下为正文第二部分.点此查看本文的第一部分. Node.js 推出至今也有些年头了,但它就像初生的太阳,充满朝气.人们不断地探索更新更好的平台信息发布方式,于是选择也越来越多.这些努力最终催生了多款 Node.js 框架,不论是 Node.js 爱好者还是新手,都可以尽情探索,寻求新的提升

JS框架之vue.js(深入三:组件1)_javascript技巧

这个要单独写,原文是这么描述vue的组件的:组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素,Vue.js 的编译器为它添加特殊功能.在有些情况下,组件也可以是原生 HTML 元素的形式,以 is 特性扩展. 这个特性我感觉比较难理解,一步步来,看看组件到底是个什么东西? 1.举个栗子 //model层: // 通过extend方式定义一个Vue组件 var MyComponent = Vue.exten

《写给PHP开发者的Node.js学习指南》一第 2 章 简单的Node.js框架2.1 HTTP服务器

第 2 章 简单的Node.js框架 写给PHP开发者的Node.js学习指南 在之前的章节,我介绍了一个用于PHP到Node.js转换的开发环境,以及如何使用它进行转换.在本章,我们将开始使用这个开发环境并进行实际的转换. 2.1 HTTP服务器 写给PHP开发者的Node.js学习指南 在PHP中,一个PHP文件代表一个HTML页面.一个Web服务器,比如Apache,当请求一个PHP页面时,Web服务器会运行PHP.但是在Node.js里,Node.js的main文件代表了整个服务器.No

13 款惊艳的 Node.js 框架——第1部分

[编者按]本文作者为 Peter Wayner,主要介绍13款至精至简的 Node.js 框架,帮助你简化高速网站.丰富 API 以及实时应用的开发流程.本文系国内 ITOM 管理平台 OneAPM 编译呈现,以下为正文的第一部分. Node.js 推出至今也有些年头了,但它就像那初生的太阳,充满朝气.人们不断地探索更新更好的平台信息发布方式,于是选择也越来越多.这些努力最终催生了多款 Node.js 框架,不论是 Node.js 爱好者还是新手,都可以尽情探索,寻求新的提升. 在下文中,笔者将

逆向思维:如何判断一套JS框架不符合实际需求?

JS框架称得上层出不穷,几乎每周都有新的框架与广大用户见面.在今天的文章中,我们将立足于逆向思维,考虑如何断定一套JS框架不符合实际需求.作为一名JavaScript架构师.培训人员及导师,我经常面对这样一个问题--你最喜欢的框架是什么?或者哪款框架最为出色?而我给出的两个答案往往令提问者感到意外.就目前而言,我个人最偏好的框架是React JS.但如果要为企业选择一套框架,我给出的答案则是Angular 2.0. 不过大家更应该问的恐怕是"为什么要准备两个答案?"或者更进一步探究,&