几个有趣的 JavaScript 项目
我本人仍然 “一如既往地” 关注着 JavaScript 世界的新进展,在此罗列一下最近见到的几个有趣的项目,顺便(要点就是) BLAH 几句。
Mozilla 的 Bespin 是一个以 TextMate 为目标的 Web Base IDE 项目。 (注:TextMate 号称 Mac OS 下“最伟大”的 IDE,本人才疏学浅,多番尝试始终无法装好 OSX86 ,因而至今仍然未能一试,甚憾) 有意思的是,它采用了一种与几乎所有 HTML Base Editor 截然不同的显示方案 —— 用 Canvas 来 “画” 字符,而不是 HTML 标签。他们这么做了,得到的体会与我们的直观预测不同,而是:效率高,反应速度快(即便是在显示非常大的文件的情况下)。而采用 JavaScript 作为 IDE 的开发语言,作为一个设计决策,带来的好处是:具有最广泛的群众基础,能做到最大限度 Write Once Runs Everywhere (汗一下 Java 和 Flash)。同样,以 JavaScript 作为扩展语言,也使其可扩展能力 (据说 TextMate 的核心竞争力就在于此) 达到了空前的标准。
这个项目还处于早期,离 TextMate 的目标也还相当遥远,但,以 Mozilla 的影响力,加上开源对于 Hacker 的致命诱惑,再加上以 JavaScript 作为开发语言带来的“亲民感”。不难预测,它的发展将会非常迅猛(看看满坑满谷的 Firefox 插件吧)。也许很快就会变得相当好用也说不定。
Box2DJS 则是一个 Physics Engine for JavaScript 项目。我最近在 iPhone 上玩了一款叫做 Touch Physics 的游戏,相当好玩。因而,在看到这个 Box2DJS 的时候,我十分吃惊。原来,只要有了这样的 Physics Engine 做出一个这样的游戏就会变成一个简单之极的 Wrap 工作。毫无疑问,有了这样的秘密武器,开发符合 “物理学规律” 的小游戏已经变得没有技术含量。Box2DJS 的目标运行平台同样也设定为 Canvas + JavaScript 也就是说,同样是 Browser Platform。
无独有偶,这次参加 BeiJingOpenParty 的 “有狐” 又了解到一个国内程序员 (Yahoo 的 EEEE 团队) 开发的非常有趣的项目 —— OpenResty 。OpenResty 是一个为 “以纯 JavaScript 构建的动态网站” 服务的项目。换句话说,你可以用买 “静态网页” 空间的钱,加上 OpenResty 的服务,就可以轻轻松松地做出一个 “动态网站” 来,比如作者的这个博客站点,你可以保存到本地,照样好用。
原理其实并不复杂,因为所有动态的东西 OpenResty 已经用 Restful 的接口提供给你了,只要有个寄生在静态页面之中的 JavaScript 就可以调用这些接口,得到你想要的动态效果。这和 CouchDB 的想法如出一辙,通过和开发者交流,我感觉,在实现念上,也和 CouchDB 颇有类似之处 —— OpenResty 在内部包装了一个 PostgreSQL 的关系数据库,并以 Rest 接口对外暴露,而 CouchDB 则是自己实现了一个 DB 再用 Rest 暴露出来。所不同的是 OpenResty 做得更多。实际上,他就是一个为 “在静态空间建立动态应用” 的需求而专门设计的 Rest 服务 —— 你需要用到的大部分服务,除了数据存储之外的,比如人类图片验证,权限控制等等,它已经为你准备好了。在这样的系统支持之下,你看到的整个 Web 应用,实际上只是运行在你 Browser 之中。这里的 Browser 就好比此前 PC (或者以后的手机)上的 OS,是整个应用的运行环境,换句话说,Browser 本身就已经是一个真正意义上的 Platform。
这里提到的 Browser Platform 并不是一个新名词。以 Browser 作为 Platform ,这正是我们广大的 B/S 系统开发人员们每天都在做的事情。而 “伟大的哥的米斯” —— Google 同学也正在朝着这个 “One Browser Rule All” 的目标 “不泄” 努力。这股洪流之中,只有一个微软 (此处用作形容词) 的代表 “既得利益集团” 的反对声音。看到呼之欲出的 HTML5 标准和作为 HTML5 参考实现(同时也是事实标准)的 Firefox 3.x 为我们展现出未来的这么多种可能,有幸见证这样的变革,我深感荣幸。
话说 crayon physics 比 touch physics 更好玩…
accessibility 和 security 都很重要, 不能因为 cool 就随便拿来玩啊…
哦,以TextMate为目标?倒要看看怎么实现bundles的。
还没有几个IDE能把TextMate仿的有模有样的
支持,请问这些小道消息哪地方来得居多?