Meteor 技术的优缺未来展望

2016-07-11  本文已影响2144人  木猫尾巴

[TOC]

说明

本文基于 Meteor 1.3.3 编写

优点

业务优点

技术优点

各种三方原生实现的ddp协议客户端

缺点

业务缺点

技术缺点

meteor自己这么做就算了,而且程序员也必须这么做,这是由javascript的实现机制决定的,这对小项目还行,但稍大一点的工程, 谁也不知道别人定义了什么全局变量,更要命的是框架自己还有很多全局变量,这些有可能是你不知道的,但也无从可查,然后就是巨大的灾难

比如框架自己带underscore库,用了全局变量’_‘, 如果有谁不知道这个是被underscore使用的,覆盖了,后果很严重,更要命的是,整个框架都是这种模式,当然所有的javascript项目都有这个问题。

在你使用之前,你必须清楚框架或你使用的第三方包中已经使用了哪些全局变量,哪些变量不能用。
如果你想使用一个变量名,如果这个变量名已经被某个包使用,你就只能换。

所以从这一点上来讲,这个尤其不适合多人协作,大型项目的开发。

在普通的nodejs工程中,你可以通过reqiure来加载一个文件,但在meteor中这个是不可用的。程序员不能去决定这个,框架完全按自己的方式去加载文件,官方提供的方法是改文件名,改成字母序,或放到一个子目录中,因为meteor是按文件名字母序和子目录优先加载。

为了省去程序 require 的步骤,做了这样一种自动加载。我觉得不可取,也很不方便,比如我在一个项目中就遇到这样一个总是,想加载 bootstrap.js 和bootstrap-switch.js ,而bootstrap.js必须在后面这个文件之前加载,但实际情况是bootstrap-switch.js加载到前面去了,结果会报错

解决方法要么把bootstrap.js重命名为a-bootstrap.js要么把bootstrap.js放到子目录

meteor里的session只能在浏览器里使用,服务端是没有session这个东西的,这个感觉很不方便,有时候需要在服务器上保存一些状态,只能保存在数据库中,每次自己去查询。

区分游客用户

在浏览器第一次访问的时候,生成 一个随机字符串,然后每次传给服务器,服务器存下来,用来区分是哪个用户

meteor应用的内存占用比一般应用是要大很多的,可能跟他实现的实时特性有关系,因为它要维护每个客户端的连接和数据状态,一是客户端订阅的数据状态发生变化,服务器会主动通知客户端这些变化,所以内存消耗高。

官方虽然提供了一些测试方案,但感觉都是轻描淡写,而且官方的解决方案还在探索中,不适合大型产品的完整测试。

meteor为了做到实时,在服务器上做了大量计算比较操作,还占用了大量内存,每个浏览器都用websockt与服务器建立了一个长连接,所以性能并不是多好,这一点在你开发的时候不容易感觉出来,但稍有点用户访问你的网站,你将会立即感觉到。

人员配置要求

展望

任何技术都不是完美的,meteor站在巨人肩膀上的,还有很大的成长空间,目前版本的meteor 非常适合全栈开发工程师,做创业小项目,绝对不要用于大型项目的开发,至少现在还不能。

未来

Meteor应用管理架构-Mantra

页面 https://kadirahq.github.io/mantra/
仓库位置 https://github.com/kadirahq/mantra

Mantra是什么

注意:

Mantra中包含

上一篇 下一篇

猜你喜欢

热点阅读