写点什么

书评与采访:《探索 Meteor》

2013 年 11 月 18 日

Tom Coleman 和 Sacha Greif 今天发布了《探索Meteor》,这是一本介绍 Meteor 的书。Meteor 是一个基于 JavaScript 的 web 框架,它的目的是简化实时 web 应用程序的开发。为展示 Meteor 的特性以及它的整个生态系统,本书以“ Microscope ”这个应用程序作为讲解的示例,这是一个类似于 Hacker News Reddit 的简单网站,但加入了实时数据的功能。在本书中,Microscope 应用从头开始一直到成为一个具有可用功能的应用程序只用了少量的代码,这为读者清晰地展示了 Meteor 框架的强大功能。

本书由核心章节与边栏章节两部分组成,核心章节将带领读者完成整个 Microscope 应用程序的创建过程,而边栏章节则解决开发 Meteor 时一些更基础的东西,包括部署、发布 / 订阅架构以及响应性。

对于刚开始尝试 Meteor,并打算按部就班地一步步学习它的框架的开发者来说,核心章节会更有用一些。尤其在读者能够按顺序阅读时能取得最好的效果。而边栏章节对于想更多地了解框架的内部机制的读者会很有吸引力,其中讲述了框架的底层实际发生了什么事?使用 Meteor 进行应用程序开发与使用其它框架有什么不同,例如 AngularJS ?这些章节对于那些哪怕对 Meteor 本身不感兴趣,但愿意了解实时编程的各种机制与所面对的挑战的读者来说也会很有用。

任何一本书都应该在开篇中说服读者:本书是值得你一读的。对《Discover Meteor》一书来说就意味着它必须回答这个问题:Meteor 凭什么吸引我?而本书在这方面做得很好,在它的开篇部分就抛出了一个引人注目的论点,它直接表明了从 Meteor 是怎样看待未来的 web 应用程序的:

  • 让我们做一个心理测验好吗。设计你在你的电脑上的两个不同的窗口中打开了一个相同的文件夹。
  • 接着单击选中其中一个窗口并删除一个文件,这个文件会从另一个窗口中消失吗?
  • 不用真的去尝试这些步骤,你也知道它会从另一个窗口消失的。当我们修改本地文件系统中的某些东西时,这些改变的结果会显示在任何地方,不需要刷新也无需回调函数,它就是这样发生了。
  • 但是,让我们考虑一下,同样的场景在 web 上会发生些什么。比方说,假设你在两个浏览器窗口中都打开了 WordPress 的网站管理页面,然后在一个窗口中新建一个主题。与桌面端不同的是,无论等待多久,只要你不刷新另一个窗口,它就不会反映出这个变化。
  • 多年以来,我们已经接受了一个观念,你与某个网站的通信就是来自于简短的、各自独立的请求而实现的。
  • 但 Meteor 是一波新的框架与技术中的一员,它们将对这一现状发起挑战,让 web 变得实时并且能够响应。

为了更好的了解 Meteor 与它的社区,InfoQ与《Discover Meteor》的作者 Sacha Greif 和 Tom Coleman 进行了一次对话。

你们是怎样接触到 Meteor**** 的,它的哪方面令你们感到兴奋呢?

Sacha我首次接触 Meteor 还是在开发 Telescope 项目的前身的时候。当时我想创建一个类似于“Hacker News for designers”的应用,因此我尝试去寻找开源的社交新闻应用。由于最终也没有找到什么好的选择,我决定让人帮忙一起打造一个自己的版本,然后就与一位 Node.js 开发者一起展开了工作。

当时,我从一个私下里熟悉我的团队的朋友那边听到了 Meteor 这名字,并且也告诉了我的开发者。我们决定进行一下尝试,因此就从之前的 Node.js 切换到了 Meteor 上。但在一星期之后,那位开发者的工作开始忙了起来,并退出了该项目。我也不想再去花时间去找能与我一起工作的人了,因此我决定自食其力,自己来开发这个应用。既然我在 Node.js 和 Meteor 上都没有经验,那我想我还是继续使用 Meteor 好了。

随后我发现在 Telescope 项目中使用 Meteor 开发是一件很有意思的事,当这个应用能够运行之后,我决定将我的工作成果全部开源,期望还会有志趣相投的朋友能够帮助我继续完成这个项目。实际上,这也就是我认识 Tom 的缘由。

Tom在我最初听说 Meteor 之前,我已经对尝试一些服务端的 JavaScript 框架很感兴趣了。在做了越来越多的前端代码之后(我也渐渐不那么恨 JavaScript 了),我开始认识到:无论是对有经验的开发人员来说(他们更注重代码重用与可维护性),还是对初学者来说,在服务端使用 JavaScript 都能带来极大的好处。对于那些编程经验有限的人们来说,能够降低他们进入 web 应用程序开发的门槛,这让我感到非常兴奋。

在一开始时我并没有特别考虑实时性方面的问题,但当我读过了 Meteor 的核心特性列表之后,我意识到使用 Meteor 会让实时功能变得多么简单,web 应用的未来又会变得多么棒!因此我抓住了一个机会,在一个小项目的开发中使用了 Meteor,之后又加入了那个尚不成熟的社区。

Sacha 找到我的时候,我正好有些空闲的时间,他请我帮助他一起完善 Telescope 这个项目。我觉得这个项目看起来很棒,而且能够为开源做点事情也很吸引我,既能够为社区做些贡献也能够巩固我的知识,何乐而不为呢?那段经历真的很棒,并且也催生了之后的一系列事情。

本书中是使用 Meteorite 来安装 Meteor的各种构件(package**)的。究竟 Meteorite是什么,它和 Meteor这个产品又是什么关系呢?这是来自社区的产物还是某家新公司的官方产品呢?**

TomMeteor 包含了一个智能的构件系统,它能够让你以一种重用性非常好的方式使用各种服务端与客户端代码,以及其它外部资源。不过,直到几周之前还没有一种方便的方式让你编写自己的构件,也没有某种内置的机制能够让你以一种开源的方式共享你的构件(而且至今也没有)。

因此 Mike Bannister 和我共同将那些原先必须经历的复杂步骤进行了提炼,将第三方构件整合到一个基于 Meteor 的脚本包装器里(我们称之为 Meteorite ),随后为了方便大家提交自己的构件又创建了一个构件库,我们称之为 Atmosphere

Meteorite 从定义上来说是一个临时性的项目,因为 Meteor 的核心开发者已经计划将它的功能最终整合到 Meteor 核心项目里。不过从目前来看,Meteorite 能够让这些开发者专注于其它优先级更高的事情上,因为它目前已经“足够好”了。

Atmosphere 的过渡计划已经确定好了,我认为它还会继续以某种形式存在,直到 Meteor 的开发者们最终接手它火上。我相信他们会尽最大的努力让这一过渡尽量平滑。

Meteor社区的情况看上去是怎样的呢?是不是主要参与者都是 JavaScript程序员,还是说也有其它社区(例如 Java、.NET、Python)的成员参与其中呢?

Sacha我认为 Meteor 社区是非常具有多样性的。当然那里有许多 JavaScript 程序员,不过不了解 JavaScript 基本上是不可能进行 web 开发的。我想即使对那些使用 Rails、Django 或其它 web 框架的开发者来说,Meteor 框架也是非常友好的。

Tom我想大多数 web 开发者的背景都是 X + JavaScript 程序员,这里的 X 可以代表各种技术。而且只专注于 JavaScript 这一种技术的人相信也不会很多。当然,像 Meteor 这样的框架正在改变这一现状,我相信这会带来更多的好处。

总的来说我认为 Meteor 社区非常棒,人们也很乐于互相帮助。最棒的是我们看着它一天天成长,有越来越多的和谐音符,并且人们总是在帮助别人。

Meteor似乎与 MongoDB是紧密耦合的,有没有可能让 Meteor**** 工作于其它数据库系统之上呢,这种可行性又有多少呢?

Sacha:目前为止还没有对其它数据库的官方支持,但有些社区成员已经在制作这些构件了,而 Meteor 团队也在产品路线图中指出了将改善数据库支持的功能(包括 MySQL、Redis 等等)。

在书中有关部署的一章中,你提到在 Heroku环境中只能在一个单独的 dynamo(一个单独的进程)中运行。是否其它部署方式也是如此呢,还是说这是 Heroku**** 独有的限制呢?

Tom为了让 Meteor 的实时特性能够正常运行,每个用户必须在整个会话期都与同一个 web 服务器保持连接。有许多通用的做法能够实现这一点(它叫做“sticky sessions”),但 Heroku 平台对这些方法都不支持。

不过如果你在服务器上有更多的掌控权限的话,搭建起来就很容易了。比方说,有一份说明详细地指出了在 AWS 上完成这一点的流程。

在目前,这种做法有一个负面因素——在 web 服务器之间的数据传输有延迟(因此如果你我分别连接到两个不同的 web 服务器,那么我如果要观察到你对数据的改动,可能会有最多 10 秒钟的延迟),不过核心开发团队正在努力地克服这一问题,在 Meteor 1.0 版本发布时就会解决了。

除了你自己的 Telescope应用,你还注意到其它使用 Meteor的应用程序吗?

Sacha:你可以在 madewith.meteor.com 网站上看到一张列表,上面列举了许多 Meteor 应用和一些小实验。除此之外,还有许多大型的 Meteor 应用存在,包括 FriendTrumps (一个 Facebook 游戏)、 Gander (一个 email 应用)、 ShareWith911 (一个紧急联系人应用)、 PiJS (一个帮助你将代码发布至 RaspberryPi 的应用)以及其它许多。

《Discover Meteor》一书不仅是一份指南,它也是帮助你理解在 Meteor 的底层发生了哪些“魔法”的知识之源,对于任何开始使用 Meteor 的程序员来说,它都是一份很好的资源。

关于作者

Tom Coleman Percolate Studio 的一员,这是一个 web 开发的在线商店,专注于质量和用户体验。他也是 Meteorite Atmosphere 构件库的共同创始人之一,并且为其它许多 Meteor 相关的开源项目(例如 Router )默默地做着贡献。

Sacha Greif曾在 Hipmunk RubyMotion 这样的创业公司中做过产品设计与 web 设计。他是 Telescope Sidebar (一个基于 Telescope 的应用)的开发者,同时也是 Folyo 的创始人。

查看英文原文: Book Review and Interview: Discover Meteor

2013 年 11 月 18 日 09:072262
用户头像

发布了 428 篇内容, 共 148.4 次阅读, 收获喜欢 20 次。

关注

评论

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

Java 并发编程:volatile能否保证数据的同步

码农架构

Java Java并发

【变与不变】架构中的边界划定

soolaugust

编程 架构 设计

芯片破壁者(二十二):政府与半导体间的“美国往事”

脑极体

阿里技术官面鹅厂,被高并发问蒙,含泪整理全网最全线程并发文档

周老师

Java 编程 程序员 架构 面试

工业区块链正在改变什么?

CECBC区块链专委会

环保

技术选型背后的国家利益:区块链自主化道路的交锋

CECBC区块链专委会

科技

校园恋爱新技能:智慧琴房恋爱助攻手册

IoT云工坊

物联网 API sdk 智慧琴房 智慧校园

Superset 助力企业级大数据 Ad-hoc 查询

麻婆豆腐没麻婆

数据分析 Apache Superset BI数美

A Guide for Accidental Project Managers

Geek_ed0696

pmp project manager role of PMP PMP Certification greycampus

架构师训练营第 1 期第 13 周作业

好吃不贵

极客大学架构师训练营

ROS 机器人操作系统进阶实战

Geek_3cc3ec

Python 人工智能 学习 ROS

云智一体:攀登2021智能经济新山峰

脑极体

ES6中的Promise和Generator详解

程序那些事

新特性 ES6 Promise 程序那些事 Generator

【智简联接,万物互联】华为云·云享专家董昕:Serverless和微服务下, IoT的变革蓄势待发

华为云开发者社区

Serverless 物联网 IoT

QoS简介

网络技术平台

全球最火的程序员学习路线!2020年GitHub上那些优秀Android开源库总结,吊打面试官系列!

欢喜学安卓

android 程序员 面试 移动开发

程序员什么时候就该辞职了?

Java架构师迁哥

图解Janusgraph系列-图数据底层序列化源码分析(Data Serialize)

洋仔聊编程

janusgraph 图数据库

官方活动 | 日更挑战(初阶)——七日更,挑战百元京东E卡!

InfoQ写作平台官方

活动专区 七日更 日更挑战

又真香了!到底是怎样的JAVA面试文档,拿到这么多offer

Crud的程序员

程序员 架构 java面试

图解Janusgraph系列-并发安全:锁机制(本地锁+分布式锁)分析

洋仔聊编程

janusgraph 图数据库

程序员如何解决中年危机?我的阿里春招之路分享,顺利通过阿里Android岗面试

欢喜学安卓

android 程序员 面试 移动开发

闭嘴,别再问什么是锁了

程序员老猫

乐观锁 悲观锁 分布式锁 java锁 公平锁

Techo | 大数据专场报名盛启!12月20日欢迎莅临!

小小的一朵云

大数据 数据仓库 大数据架构

游戏服务器多钱一个月呢?

德胜网络-阳

完美!凭借这份阿里大佬分享的4170页Java高手真经笔记!offer拿到手软

马士兵老师

Java 程序员 编程语言 电子书 架构资料

甲方日常 70

句子

工作 随笔杂谈 日常

synchronized 是王的后宫总管,线程是王妃

Java架构师迁哥

架构师训练营第 1 期第 13 周学习总结

好吃不贵

极客大学架构师训练营

网易区块链打造可信数字身份认证应用新场景,赋能科技峰会

CECBC区块链专委会

数字身份

升级redhat6的yum源替换为centos源

Bruce Xiong

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

书评与采访:《探索 Meteor》-InfoQ