meteor详细介绍



全栈工程师介绍从LAMP到MEAN再到Meteor


我们现在已经从最开始的静态页面,到LAMP架构,一直到Single Page Application,Ajax,然后到MEAN架构;那么,我们马上就要讲到我们的Meteor了。


它叫做一个全新的时代从这里开始。


为什么这样说呢?meteor已经不能叫在某一个基础上发展起来的架构。其实它把很多最新的技术融在一起。我这儿画了一幅图。


0.png


这个meteor毫无疑问是JavaScript了,这个meteor实在node之上的一个算是框架的东西。它的不同之处是,它的每个浏览器里面都有自己的框架。这个跟以前就不一样了。现在浏览器自己跑了一个数据库,叫做Mini Mongo。


1.png


实际上就是一个用mongoDB,用JavaScript写的一个缩小型的数据库,它跑在浏览器里边,在浏览器内存里面。
然后呢!这个数据通过一个叫做DDP的协议,跑在这个socket IO之上。形成了一个实时的双向同步的功能。什么意思呢?就是通过订阅和发布机制,我在浏览器里面的数据库获得了在服务器端大数据库的一部分数据,我页面中需要显示的数据。送过来的数据呢!然后由前端的js文件在这个前端页面的数据库当中取得数据直接就往屏幕上渲染。注意,这个跟刚才的ajax不一样:ajax是由前端的js去问服务器端要数据,数据给我,我再渲染。现在是js不去server要,而是我自己的数据库里边去取数据,去显示;好处就是非???。我们没有必要每个数据都去服务器拿。那么写呢?比如我这里有一个edit需要修改。


2.png


以前的ajax做法,我只要该什么东西,只要到server端,告诉server我这儿改成什么样,server决定我这怎么处理。现在不是了,meteor不用这样,我们可以就在自己的数据库里面改。然后后面的过程就是这个浏览器端的数据库自己完成的了,它通过这个DDP协议跟server的数据库进行同步,当然是要经过安全认证的,由server决定你可不可以写。如果允许的话,就会把数据库同步过来。这个数据库也会与其它的浏览器有DDP连接。


3.png


然后,由于meteor是End to end reactive的。使得你在数据库中修改的数据可以立刻反映到页面中的单元。什么意思?如果我这个页面当中是计数器。


4.png


我把这个计数器和我们数据库中的某一个字段关联起来。这个字段的某一个值就是我的计数器。然后呢!当这个数据库的数据被自己或者其它的数据库修改了以后,这个改动送到server端的主数据库,主数据库再送到DDP送到我这个数据库;改动了以后,这个会自动提现到我的页面上。


你不需要写个程序专门来说,如果改动了怎么办,如果没改怎么办。这就是端到端的reactive。另外一个需要指出的是meteor服务器对client客户端的响应是没有发送html回来的,渲染全部是在前端完成的。server端发给前端的全部是js文件。然后这段js文件拿到之后,由它负责和服务器建立DDP连接。跟数据库建立订阅,然后再负责渲染所有的页面。也就是说,在这里面,几乎所有的逻辑由js在用户的前端来完成。


那么server在建立完连接之后,它的任务就极为的轻了,就是维护这个DDP连接,然后是负责处理这些所有的DDP请求。然后负责跟数据库更新,再告诉浏览器该做如何如何的修改。所以服务器与浏览器之间形成了一个双向的链路。


5.png


这个链路是实时的。在没有socket.io之前,http协议是无状态的,也就是说只能从浏览器向服务器请求。来一个,服务器处理完了,回一个,然后这个连接就断掉了。这个时候,服务器也就无法主动响应浏览器了。只能等下一次又有个请求过来,这个时候服务器才会有机会,告诉浏览数据的变化。

所以在这种情况下,有可能需要你刷新一下页面才能得到新数据,不刷新页面总是保持不变。就是在静态页面,LAMP架构,PHP架构,还有ajax同样的一个情况。因为这个是http的请求。
现在,在这个meteor里面是不同的了。因为我们用了socket.io 这个东西。实时双向通讯。


也就是说,在浏览器和服务器之间,时刻保持一个始终连接的这么一个socket,这个socket一旦连接起来了以后,这个meteor启动了以后,我任何的数据,server只要觉得有更新,就可以实时的通知给client端,client端就会启动reactive更新。这是在以前没有办法做到的。
还有最后一个Hybrid Mobil APP。加上这个就组成了一个全新的时代。


6.png


当你在用meteor做APP的时候,它不仅仅只是在web上跑的APP,它可以直接编译成为一个跑在手机上的Hybrid App,不是native APP,不完全是原生的。但也不是跑在浏览器里面的那种。这种app也可以去应用商店下载,看起来就完全是一个原生的应用程序,但是它里面的这个内容是用meteor JavaScript来写的?;痪浠八?,就是你编一次软件就可以同时跑在web,IOS,android这三个平台,以后还有更多的平台。写一次就跑在三个平台上。


而且跑在这个平台上的APP,因为它本身是Hybrid,它的内核还是html,js的,所以它仍然可以保持跟server的实时通讯。这个通讯不仅仅是通讯数据库,还包括代码的推送,我们把这个词叫做Hot code push(热代码推送)。也就是当你发布了一个IOS的软件,发布出去以后,发现了有bug,那么就可以修改bug,然后上传到服务器。在以前的没有meteor的情况下,你的改动没法让用户直接拿到,你必须把你的代码编译了以后,把你的应用程序送给应用商店。然后用户更新就需要下载,安装之后才能用到修改了bug之后的APP。

但是,meteor用不着,你的这个APP;用户下载了一次以后,以后的所有升级更新都是通过这个Hot code Push来推送更新的,也就是说这个代码更新以后,服务器会自动更新到用户的手机的程序里边。用户当时就能得到更新,不需要重启,不需要关机,甚至根本就不知道这个已经得到了升级。所以它的bug可以立刻得到fix。



【本文由麦子学院独家原创,转载请注明出处并保留原文链接】

logo
? 2012-2016 葡京国际首页 www.ybxiongdi.com
蜀ICP备13014270号-4 Version 5.0.0 release20160127

秋招大聚惠,豪华礼包你领了吗?

客服热线 400-862-8862

回到顶部