阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

Meteor:网络应用开发的瑞士军刀

  • 2015-11-25
  • 本文字数:3208 字

    阅读完需:约 11 分钟

自从 Node.js 撼动整个 Web 开发领域以来,JavaScript Web 全栈开发框架层出不穷,但是随着时间流逝,人们也逐渐意识到 Node.js 并不适合所有场景,一体化的开发框架也不一定适合 JavaScript, 众多 JS Web 框架纷纷沉寂,但唯有 Meteor 以其韧性坚持下来并脱颖而出,成为 JavaScript Web 开发框架的代表。

2011 年组建的 Meteor 毕 业于 YCombinator 训练营,成员来自 Google 等巨头企业。迄今为止,Meteor 开发团队已经拿到了多轮投资,包括早期 Andressen Horowitz 领投的 1000 万美元,以及在推出 Galaxy 前夕的融资 2000 万美元。Meteor 于 2014 年十月发布 1.0 版本,2015 年的八 月份,Meteor 超过 Rails,Github Star 数接近 3 万,成为 GitHub 最受欢迎的网络应用开发框架。

作为一个开源框架,Meteor 有着产品级的实时性和跨平台特性,提供多种功能且易用性极佳。InfoQ 一直关注 Meteor 的发展情况,并进行了跟踪报 道。近日 Meteor 发布了 Galaxy 应用托管服务,标志着 Meteor 正式进入商业运营的阶段。本文将回顾 Meteor 的发展,并分析 Meteor 的 优缺点,以及 Meteor 的未来。InfoQ 记者还就相关问题请教了 Vue.js 作者、Meteor 的开发者之一尤雨溪。

Meteor 的发展

Meteor 早期版本以实时框架为卖点,外界对它的关注大约从 0.4 版本开始,这个版本将其 Node.js 依赖从 0.6 更新到 0.8 版本,而 Node.js 也正是从 0.8 版本开始渐渐普及。下面列出 Meteor 的主要版本更新:

  • 2012 年 9 月发布 0.4 版本,添加智能邮件发送包,更新 Node.js 从 0.6 到 0.8 版本。
  • 2013 年 0.5.x 版本,从 0.5 版本开始,Meteor 做了相当大的变动,目标将基于 Metero 的应用扩展到百万用户级别。0.5.3 版增 加了对环境变量的支持,支持更多可配置的开发环境。0.5.7 版在性能和伸缩性上做了不少改进。0.5.8 班包含客户端数据库更新,增加对 AppCache 支持,改进了底层的 Deps 工具,支持 CoffeeScript。
  • 0.6 版本包含一个全新的系统用于分发 Meteor 和更新应用,同时增加应用专有的包以及直接支持 NPM 模块。
  • 0.7 版本实现一个新的数据库驱动器,使用 MongoDB 数据库复制日志来更高效的监控查询。
  • 0.8 版本用 Blaze 模板引擎替代 2012 年引入的 Spark 引擎,Spark 被称为 jQuery 的声明式版本,不过显然它并未代表未来的趋势。
  • 0.9 版本开始丰富整个生态系统,0.9.0 版本发布了官方的 Meteor packaging 系统,包括 Isobuild 构建系统和 Meteor Package Server。0.9.2 版本首次支持使用 PhoneGap 构建 iOS 和 Android 移动应用。
  • 1.0 版本与 2014 年 10 月发布,作为一个里程碑版本并不包含重大更新,但更新了文档,优化了用户体验。
  • 1.1 版本终于开始支持 Windows 操作系统,同时还支持 MongoDB 3.0 版本。
  • 1.2 版本开始支持 ES6、AngularJS 和 React,前段时间还发布了 Angular Meteor 1.2.0 版,这是为 Angular 定制的版本。
  • 另外前段时间还发布了 Galaxy,这是为 Meteor 应用提供托管的官方服务。

从上面的更新我们可以看到 Meteor 不止是在打造一个框架,也是在构建一个从研发到部署、从 Web 到移动的、JavaScript 全栈开发的生态链,这是开发者选择 Meteor 的原因之一。

Why Meteor

从 发展趋势来看,Meteor 的出现并不是偶然。在 Web 开发中,一体化的框架非常多,如 Rails 就是其中的杰出代表,以其快速开发的能力受到人们青睐。 Node.js 横空出世以来,最主流的 Web 框架是 Express,但是它只能算微框架,要想开发出一个功能完整的应用还需要大量的配置和很多的功能插 件。市面上并没有主流的 Node.js 一体化框架,Meteor 瞄准了这个缺口,也获得了市场的承认和开发者的喜爱。

从开发者的众多反馈来看,选择 Meteor 的原因不外乎下面几点:社区活跃、学习难度低、大量原生功能和优秀的生态系统,以及其主要的卖点:实时性框架。

  • 社区活跃:Meteor 无论在 GitHub、StackOverflow 还是 Twitter 等社交媒体上,用户活跃度都超过其他开发框架一个数量级,活跃的社区代表开发者正在进行频繁的交流和讨论,有助于问题的解决和框架的推广传播。
  • 学习难度低:如上文所说,Meteor 是前后端甚至数据库都可统一开发的 JavaScript 框架,开发者无需掌握多种不同工具即可完成网络应用的构建。Meteor 在设计之初就考虑了简明的理念,在官方教程的帮助下,开发者一个小时之内就能学会基本开发。
  • 大量原生功能:支持多重数据库、视图、地址分配、安全、性能工具、测试、移动等功能,涵盖整个网络应用开发周期
  • 优秀生态系统:迄今为止,Meteor 在线代码库中包含超过五千个第三方组件,而且数目仍然在迅速增长。

另外,Meteor 从最开始的一个重要卖点就是实时框架,而现在实时性在 Web 应用甚至移动应用中用到的地方越来越多,证明 Meteor 选择这个方向也是对的。

Why Not Meteor

当然,Meteor 并不是没有缺点,比如近期推出的 Galaxy 就遭到了诟病,Meteor 本身是为了降低开发门槛,快速开发,适用于中小团队和创业者,但是 Galaxy 最低每月 500 美元的价格与这个定位并不匹配,在发布之后受到开发者的非议。

除了这个之外,Meteor 缺乏大型成功案例,没有经过实践的洗礼,也让开发者怀疑它是否足够成熟可用。在这篇 Meteor 在生产环境的实践的文章里,作者提到了他使用 Meteor 的痛点,那就是部署在非官方平台的体验并不好,另外,某些关键功能插件并不好用,亟待加强和优化。

而 让人不选择 Meteor 的根本原因,还与趋势相关。Node.js 包管理器 NPM 十分好用,并且迅速流行开来,对于 Node.js 开发者来说,依赖 NPM 来进行模块化的开发非常方便,而 Express 框架是很多 Node.js 开发者入门必学,因此它所倡导的模块化 + 高度可配置的理念也就默认被人们所接受。 在这篇文章里 作者就希望人们使用更多库而不是框架来开发Node.js Web 应用。当然,不管趋势如何变化,我们可以肯定的是,至少很长一段时间内,类似于Meteor 这样的一体化框架还会有它的市场。尤雨溪表示:“是否使 用框架是按实际情况考虑的。全栈式框架的价值在于对于没有特殊要求的应用,能够在极短的时间内开发出可用的产品。去框架化对于技术人员来说是很浪漫的事 情,但当你拿了融资,需要在几个月内产品上线的情况下,未必有那么充裕的时间去自己整合各种组件,实现一些框架已经实现了的功能。”

Meteor 的未来

从目前的表现来看,Meteor 正在稳步发展,但是,它所处的环境,无论是 Node.js,还是 JavaScript 社区,都正在剧烈变化当中,谁也不能预测未来 Meteor 到底能否成功。

在 笔者看来,Meteor 的未来是否成功,在很大程度上将取决于移动端,目前 Meteor 通过 PhoneGap 来支持移动应用打包,但是,相比于目前移动 Web 的发展,它已经有些落后于潮流,React Native 才是人们的新宠,InfoQ 记者向尤雨溪询问 Meteor 是否有计划支持 React Native,他表示 React Native 的运行环境和打包方式都和现在集成 Cordova 的方式区别很大,因此目前还没有具体的计划,不过未来肯定会去尝试。希望 Meteor 在这方 面更激进一些,像 1.2 版本支持 ES6、Angular 和 React,就十分受到开发者的欢迎。

另外,Galaxy 的发布,也让人担心,Meteor 的重心是否转向提供服务,框架的功能创新是否会放慢速度。尤雨溪则表示无需担心,因为只有保持框架本身的竞争力才能为 Galaxy 吸引到客户,所以肯定不会对框架本身松懈的。

至 于近一段时间 Meteor 的开发计划,尤雨溪介绍道,他们已经在计划对 Meteor 本身进行一些大的改动来解决一些社区公认的问题,比如 Meteor 自身 的模块系统一直受人诟病,他们在 1.3 会加入对 ES6 module 的支持。另外还会加强对于 NPM 的原生支持,让 Meteor 应用可以更简单地调用 NPM 上的资源。

JavaScript 社区一直充满活力,每天各种各样的框架层出不穷,但是真正成功商业化的不多,我们也衷心希望 Meteor 能为 JavaScript 框架探索出一条成功的道 路。对开发者来说,Meteor 作为一款功能全面、简单好用的一体化框架,在开发 Node.js Web 应用的时候,是一个不错的选择。

2015-11-25 02:163531
用户头像

发布了 164 篇内容, 共 103.3 次阅读, 收获喜欢 391 次。

关注

评论

发布
暂无评论
发现更多内容

三面字节跳动被虐得“体无完肤”,为什么spring能最好地改变Android

android 程序员 移动开发

不学了,不学了,不学Android了,当上项目经理才知道

android 程序员 移动开发

不要再焦虑了:BATJ大牛给程序员的价值百万的职业规划(18-35岁(1)

android 程序员 移动开发

专科毕业三年,从外包公司到今日头条offer,我想把面试心得分享给你

android 程序员 移动开发

一篇文章教你搞清楚——Kotlin-进阶---不变型,android开发框架mvp

android 程序员 移动开发

三月唯一一篇凉经奉上(Android 岗),成功跳槽阿里

android 程序员 移动开发

三次失力美团Android 开发岗后,时隔一年终于成功拿下offer

android 程序员 移动开发

三年 Android 开发的技术人生,浅谈自身面试的感悟,华为架构师深入讲解Android开发

android 程序员 移动开发

百万大数据 5 期 - BSM -02 课作业

Clarke

不要再焦虑了:BATJ大牛给程序员的价值百万的职业规划(18-35岁

android 程序员 移动开发

三年开发经验,从小厂离职后,我凭什么拿到了阿里,作为一个Android开发者

android 程序员 移动开发

不愧是鹅厂,连面试算法题都是这样恐怖至极,已顺利OC,附赠课程+题库

android 程序员 移动开发

不明白四大组件底层的通信机制是怎样的?写给Android应用工程师的Binder原理剖析!

android 程序员 移动开发

中奖了!中奖了!,android组件化通信

android 程序员 移动开发

一起来玩Weex,kotlin操作符重载

android 程序员 移动开发

实用函数式 Java (PFJ)简介

码语者

Java

三年Android开发却只有一年工作经验,是怎么收到offer的?

android 程序员 移动开发

三面阿里被挂,内推历经5面终获offer,我总结出了这些Android常用面试题和常见问题

android 程序员 移动开发

不愧是阿里技术官,Android-Framework的精髓全写在这本“限量笔记(1)

android 程序员 移动开发

不懂源码、NDK,架构设计,2021最新Android笔经

android 程序员 移动开发

一键登录了解一下?,揭秘

android 程序员 移动开发

三年备战阿里面试功亏一篑,失败是成功他妈,最终拼下美团Android开发

android 程序员 移动开发

三年磨一剑,这一次的金三银四打算离职的我准备好了,androidrom开发前景

android 程序员 移动开发

一篇文章教你读懂UI绘制流程我的Android重构之旅:框架篇

android 程序员 移动开发

一道腾讯面试官指点:组件之间的跳转和组件通信原理机制

android 程序员 移动开发

为了KPI,对APK进行极限优化!,2021年Android春招面试经历

android 程序员 移动开发

一线大厂大型APP性能优化系列-自定义启动器(三),整理出Android逆向系列学习进阶视频

android 程序员 移动开发

不妨借一步说话,你想知道的关于设计模式的种种,移动智能终端的发展趋势

android 程序员 移动开发

专科毕业,Android不好找工作的同学,你的问题在这里,android源码设计模式解析与实战

android 程序员 移动开发

一键调用,Get Android 实现视频连麦直播的核心原理,kotlin常用高阶函数

android 程序员 移动开发

不愧是阿里技术官,Android-Framework的精髓全写在这本“限量笔记

android 程序员 移动开发

Meteor:网络应用开发的瑞士军刀_Web框架_徐川_InfoQ精选文章