Meteor 技术的优缺未来展望

[TOC]

说明

本文基于 Meteor 1.3.3 编写

优点

业务优点

  • 使用H5 Nodejs 和mongodb 能适应 LBS CMS IM(一部分功能),本身就是用于解决大数据问题的,用户瓶颈,目前测试出是
    一个用户5MB 内存,1W用户一个服务 (64G 云服务器)
    能直接生成客户端,包括 Android IOS,也可以直接嵌入微信

技术优点

  • 搭建环境非常简单,可以轻松建立开发环境,文档还算齐全。
  • 前后端语言统一,前后端完全整合,后端与前端完全可以共享代码,比如,定义在一个文件中的常量,函数,在后端可以调用,你要是喜欢,在浏览器上也可以调用。最大限度地共享代码。减少工作量。
  • 可以快速迭代,缩短开发周期和成本。
  • 代码以同步方式运行,尽量避免回调(其实回调这东西,你要是习惯了,真觉得没啥,有很多库可以使做好这个事,可能有些人从其他语言转到nodejs刚开始不太习惯)。
  • 浏览器里模拟了一个mini Mongo,你可以直接在客户端查询数据,感觉就像在服务器上查询一样。
  • 反应式编程,很多地方你只要更新数据了,更新数据之后的其他操作,不需要程序员做。比如刷新视图。
  • 采用DDP协议,以后可以扩展到其他语言,实事上已经有社区版本的,但官方只有js。

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

缺点

业务缺点

  • 生成的客户端为Web型,用户体验差,某些功能需要原生开发支持

  • 浏览器用户第一次加载慢,内容很多,加载完成后为SPA(单页面应用),响应差 30ms左右,手机浏览器响应差 100ms~200ms

技术缺点

  • 现有人员,需要学习 Javascript H5 mongodb less 等等
  • 框架基本都使用全局变量

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放到子目录

  • Session问题

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

区分游客用户

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

  • 内存问题

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

  • 没有完整的测试解决方案

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

  • 性能问题

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

人员配置要求

  • 每个人必须接触 git/github

  • 必须一个真全栈,对测试人员要求高

  • 测试要求用例管理, Python/Javascript

  • 组员内,懂 js H5 mongodb

展望

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

未来

Meteor应用管理架构-Mantra

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

Mantra是什么

  • 规范Meteor开发流程
  • 让开发过程变得可以控制

注意:

  • Mantra本身不是一个应用框架,所以不会提供网络啊,构建等内容,它仍然依赖Meteor
  • Mantra本身没有模板,需要使用者自己去定制
  • Mantra本身不提供代码生成器,所以你的团队仍然需要IDE和某些插件的帮助

Mantra中包含

  • 有一个基于React的UI组件层
  • 有一个在app中定义业务逻辑的地方,称为actions
  • Mantra本身不提供状态管理,但是它允许你使用一系列的状态管理工具,包括Meteor/Tracker,Redux,Rx.js响应式,Promises等
  • 通过创建容器(containers)来使状态(states)和动作(actions)集成到UI组件中去
  • 允许你进行依赖注入
  • 帮助你单元测试UI,动作和容器集成
  • 目录结构、文件命名和其他的规范
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,524评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,869评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,813评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,210评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,085评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,117评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,533评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,219评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,487评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,582评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,362评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,218评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,589评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,899评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,176评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,503评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,707评论 2 335

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,497评论 18 139
  • Meteor是一个基于Nodejs+Websocket+MongoDB的Web应用程序开发平台。Metror的七个...
    IT小C阅读 5,539评论 2 9
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,062评论 25 707
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,705评论 1 92
  • 感觉自己很局限,如果有一天自己的电脑坏了茫茫人海都找不到计算机系的肖奈帮我一键搞定,以后出去买房子碰到陷阱条约也不...
    Alicia_sso阅读 180评论 0 0