互联网的昨天,今天与明天
过去的互联网像是一种杂志的展示,从技术上来讲,就是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点优势,
-
Pure JavaScript. 服务端和客户端都使用统一语言
这个是node的特点 -
Live page updates.页面直接更新
直接写模板,当数据库更新时,页面自动更新 -
Clean, powerful data synchronization.简洁而强大的数据同步
写客户端代码就像它直接能够访问服务器一样 -
Latency compensation.延迟补偿
当用户在网页上做出一个操作时,页面直接更新,无需等服务器响应。当服务器响应与客户端不同时,再进行弥补。 -
Hot Code Pushes. 代码热推送 不用重启服务器,更新的代码会被直接推送给用户。
-
Sensitive code runs in a privileged environment.敏感代码被封闭运行 可以选择哪些代码是运行在服务器上,哪些代码是运行在浏览器上
-
Fully self-contained application bundles.打包好的应用(绿色版) 一条指令就可以给网站打包,只要解压缩,马上就可以运行
-
Interoperability.互用性 只要实现DDP协议,任何服务都可以与Meteor通信
-
Smart Packages.智能模块 智能模块可以把代码植入到服务端或者浏览器端,而Meteor的核心非常简洁,让人们有自由选择他们喜欢的模板/测试等第三方库
我再补充2点优势,
-
自带类似Heroku的免费云平台 用户可以马上安装马上部署,极大地降低了学习门槛。
-
丰富的例子和文档 这么新的框架,却有非常好的例子很文档,纯属难得,甚至比许多成熟的nodejs模块要更系统和完整
Meteor的不足
由于Meteor是刚推出的,Hacker News和StackOverflow一些人指出它目前的不足
-
安全性 既然客户端能够直接访问数据库,而且数据库又是nosql的,那么安全性自然是极大的问题。一种途径还是通过REST来访问/而另一种是加入ALC的机制。
-
GPL协议 一般这种库都采取aGPL协议,该库使用GPL协议是否会对将来的使用带来法律风险仍是问题。
-
还不能够渲染静态页面 这意味着SEO还会有问题,只有将静态页面和HTML5的pushstate结合到一起,才够完美。作者在FAQ已经说将来会有向下兼容的功能。
-
目前还不成熟 这么bleeding-edge的框架,就不要拿来做关键的应用了……
总结
Meteor翻译成中文是流星,真不知道它是不是只是像流星一样只是昙花一现,还是能够成为将来互联网开发所围绕的一颗恒星。让我们拭目以待吧。