阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

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:163534
用户头像

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

关注

评论

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

一致性hash的理解与实现

dongge

Spring核心原理解析

Chank

Java spring

05周作业—技术选型

dao

极客大学架构师训练营 作业 一致性Hash算法

新增的两个区块链职业到底是做什么的?

CECBC

技术人才 系统操作 需求落地 框架搭建

很多人毕业多年以后,还是改不掉学生思维

小智

职场 思维方式 高考

架构师训练营第五周作业

一剑

你可能还不知道自己无知

小天同学

读书 智能时代 信息噪声 高考

架构师训练营——第5周学习总结

jiangnanage

这份高考卷,只有程序员能得满分...

程序员生活志

程序员 高考

一口气说出 OAuth2.0 的四种授权方式

程序员小富

Java oauth2.0

作业

chenzt

架构师训练营 -- 第五周作业

stardust20

SpringBoot 中使用 Filter 的正确姿势

Java课代表

第5周结构师训练营——作业

jiangnanage

架构师训练营第五周作业

talen

分布式缓存总结

罗亮

女同事问哪吒什么是 Spring 循环依赖?我...

通天哪吒

第 5 周作业:一致性 Hash 算法

姜 某某

话题讨论|作为一名程序员,你下班之后都会做些什么?

InfoQ写作社区官方

写作平台 话题讨论 话题 热门活动

计算机中短期学习路线

zack

让Go“恐慌”的十种方法

博文视点Broadview

Go 语言

Redis-进阶篇一

多选参数

数据库 redis redis高可用 redis6.0.0 Redis项目

架构师训练营 W5 作业

Kun

极客大学架构师训练营

朱嘉明教授获2020杭州区块链国际周“特别致敬奖”

CECBC

CECBC 朱嘉明 区块链国际周 特别致敬

架构师训练营第五周作业

架构师 极客大学架构师训练营

架构师训练营第5周

大丁💸💵💴💶🚀🐟

啃碎并发(三):Java线程上下文切换

猿灯塔

Scrum Master与Project Manager的区别

Mew151

Scrum

计算机操作系统基础(十四)---线程同步之条件变量

书旅

php laravel 操作系统 进程 线程’

国内首本CTF赛事技术解析书籍,五年之约,兑现了!

华章IT

网络安全 Web CTF Reverse PWN

kafka监听mysql实时数据变更

爱java爱自己

MySQL mysql事务

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