从用户角度,在我们使用Web应用的时候,经常会遇到这样的体验,你打开了多个浏览器窗口,当你在一个窗口退出登录的时候,发现其它窗口还停留在登录状态;或者你和另外一个人同时在线编辑一篇文章,因为未知对方的修改而彼此覆盖了编辑过的内容,这些司空见惯的现象,并不符合好的用户体验。
从开发角度,开发者在前端开发中定义了一套路由,以及数据模型,而后端开发者同样要定义一套类似的路由以及数据模型,这其中大部分工作是有重叠的。
Meteor很好的解决了这样问题,我们来一起看看Meteor的特性
使用分布式数据协议 (Distributed Data Protocol, DDP) 的协议,在传输层面采用WebSockets以及长轮询进行实时通信
绑定MongoDB做为持久层数据存储(由于DDP的友好,可以和MongoDB无缝结合)
前端、后端统一采用javascript语言
可通过编译工具,将Web app编译成原生的终端应用程序
自己的生态系统,插件可以运行在客户端、服务端
对于第一点,稍微多一些解释,最传统的Web应用开发方式(比如采用jQuery),大致是这样:
客户端发起请求>服务端接收请求,并返回响应>前端根据返回的响应进行页面渲染
以上的痛点,需要手动维护页面和数据的一致性,之后随着前端的框架技术发展(比如Angular框架),有了数据绑定概念,只需要改变数据模型,页面会自动随之改变
客户端发起请求>服务端接收请求,并返回响应>改变数据模型,前端页面随之变化
不论是引用第三方NPM或者是SASS的处理,以及生态方面,与之前的三个框架相比,Meteor都有很大优势,粗略的统计,在用Meteor框架写这个应用的时间,应该要比前面三个框架的中的任意一个更短一些。
以展示图片的程序代码为例,我们先来之前看通过Angular实现的代码,重点看红框圈起来的代码,实现了两个事件,
再进一步看这两个事件在service层面,对数据库操作的实现,
以上我们能看到,需要接收响应,并且需要数据模型维护,而且以上只是客户端的实现,仍然需要后端程序配合数据库的操作。接下来我们再看看用Meteor的实现,
数据操作层面,
我们可以看到,只关心发送数据模型的改变,而不用在意数据模型的维护「数据与模版没有绑定关系」,甚至不用关心操作的后台响应,Meteor是通过维护服务端的publish和客户端的subscribe来实现通信的同步「有过Messaging经验的同学可能很熟悉」,并且,上面的代码已经包含了后端的实现,你不用再费心维护另外一个后端的服务和代码。
再看看代码的体积,与React和Angular比较,除去框架代码以及资源文件代码,实现这个小应用,Meteor的代码量并没有大多少,而且是在包含了后端实现代码的基础上的统计「React和Angular只是前端代码统计,没有统计后端代码」。
Meteor写出来的代码要简洁清晰很多,对于full stack工程师来说,是不是很动心,特别是那些有过Node.JS和MongoDB经验的,可以轻松上手 ,Meteor中文的含义「流星」,就像名字的寓意,Meteor适用那些需要「快」的场景,我总结可以包括以下,
一些创业公司的Startup
验证可行性的Demo或者POC
配合MVP的实现
当然,Meteor做为建立在Node.JS的之上的框架,仍然有局限性,比如单线程对于多核CPU的利用等问题,不过对于微服务,你仍然可以考虑适用Meteor实现一个小功能然后部署在集群当中,从诸多角度来说,Meteor都是不错的选择。
领取专属 10元无门槛券
私享最新 技术干货