【首家报道】用Meteor框架快速搭建高质量互联网应用

互联网的昨天,今天与明天

过去的互联网像是一种杂志的展示,从技术上来讲,就是html+css+少量javascript。在软件的架构上经常会有所谓的C/S和B/S模型。

可以说从Google推出Gmail邮箱后,人们发现AJAX可以使浏览器更接近客户端了。到目前为止Gmail邮箱/Google Docs/Pixlr等Web Apps已经能够与客户端竞争了。然而我们并没有看到互联网上充斥着各种各样的app,因为开发这种app的难度还是相当大的。

随着手机客户端,平板客户端的推出,人们更发现web也似乎只是一种特别的客户端而已。大家都需要访问相同的数据,呈现给用户进行交互。尤其在backbone.js这样的MVVC框架出现,人们发现可以把渲染的工作交给浏览器,而传送的不再是html而是通过REST获取数据。

总结而言,服务器给浏览器发送的内容经历一种这样的发展思路 【网站】->【网站的片段】->【数据】

Meteor是什么?

昨天上Hacker News的时候注意到了Meteor的推出。 http://meteor.com
Meteor是一个基于node.js的Webapp框架,可以实现快速搭建Webapp。有人形容meteor之于node就像rails之于ruby一样,更有人说,一直感觉express并不是node最核心的应用,当看到meteor之后才真正眼前一亮。

文档里谈到了Meteor框架下开发程序的7点思路( http://docs.meteor.com/#sevenprinciples ):

  • Data on the Wire. 在网络上传送数据,而不是HTML,让客户端决定如何渲染。
  • One Language. 在客户端和服务端使用统一的语言(javascript)
  • Database Everywhere. 在客户端和服务端都可以访问数据库
  • Latency Compensation. 在客户端用一种模拟的方式让用户感觉网站与数据库无延迟
  • Full Stack Reactivity. 从数据库到模板全部都是基于事件的实时更新
  • Embrace the Ecosystem.与现有的框架进行整合
  • Simplicity Equals Productivity.用简洁和优美的API实现简洁和优美的代码

Meteor的优势

Meteor的网站上谈到了9点优势,

  1. Pure JavaScript. 服务端和客户端都使用统一语言
    这个是node的特点

  2. Live page updates.页面直接更新
    直接写模板,当数据库更新时,页面自动更新

  3. Clean, powerful data synchronization.简洁而强大的数据同步
    写客户端代码就像它直接能够访问服务器一样

  4. Latency compensation.延迟补偿
    当用户在网页上做出一个操作时,页面直接更新,无需等服务器响应。当服务器响应与客户端不同时,再进行弥补。

  5. Hot Code Pushes. 代码热推送 不用重启服务器,更新的代码会被直接推送给用户。

  6. Sensitive code runs in a privileged environment.敏感代码被封闭运行 可以选择哪些代码是运行在服务器上,哪些代码是运行在浏览器上

  7. Fully self-contained application bundles.打包好的应用(绿色版) 一条指令就可以给网站打包,只要解压缩,马上就可以运行

  8. Interoperability.互用性 只要实现DDP协议,任何服务都可以与Meteor通信

  9. Smart Packages.智能模块 智能模块可以把代码植入到服务端或者浏览器端,而Meteor的核心非常简洁,让人们有自由选择他们喜欢的模板/测试等第三方库

我再补充2点优势,

  1. 自带类似Heroku的免费云平台 用户可以马上安装马上部署,极大地降低了学习门槛。

  2. 丰富的例子和文档 这么新的框架,却有非常好的例子很文档,纯属难得,甚至比许多成熟的nodejs模块要更系统和完整

Meteor的不足

由于Meteor是刚推出的,Hacker News和StackOverflow一些人指出它目前的不足

  1. 安全性 既然客户端能够直接访问数据库,而且数据库又是nosql的,那么安全性自然是极大的问题。一种途径还是通过REST来访问/而另一种是加入ALC的机制。

  2. GPL协议 一般这种库都采取aGPL协议,该库使用GPL协议是否会对将来的使用带来法律风险仍是问题。

  3. 还不能够渲染静态页面 这意味着SEO还会有问题,只有将静态页面和HTML5的pushstate结合到一起,才够完美。作者在FAQ已经说将来会有向下兼容的功能。

  4. 目前还不成熟 这么bleeding-edge的框架,就不要拿来做关键的应用了……

总结

Meteor翻译成中文是流星,真不知道它是不是只是像流星一样只是昙花一现,还是能够成为将来互联网开发所围绕的一颗恒星。让我们拭目以待吧。