5 Meteor Misconceptions

由于某些原因,关于Meteor一直都有着各种各样的误解.或许是因为Meteor刚正式推出的时候, 缺失很多重要的功能.而很多不知道的是,这些缺陷在后来早就被修复了.

为了给Meteor正名,下面列举的是5个最常见的误解.

误解#1:”Meteor的数据不安全”

在Meteor的第一个Demo推出之时, 数据安全和用户权限这些东西是没有的.任何客户端的用户都能够访问,修改数据库的数据然后发送返回到服务端.

但这第一个版本只是作为一个提示告诉大家Meteor来了, 并不意味着它可以被用来打造一个真实的应用产品. 打那之后, 现在的Meteor已经有了一个内置的身份认证包(authentication package).

造成误解的另一个原因是, 许多新手为了更容易地快速上手常常在创建Meteor应用的时候, 遵循默认的把所有的数据发布给客户端.

正如Meteor的开发者之一 Avital OliverStackOverflow上的回答那样

当你使用Meteor的命令行工具创建一个应用的时候, 默认的会包含有两个packages:AUTOPUBLISHINSECURE. 这两个packages能使得每个客户端都拥有所有的服务器数据库读写权限效果.这是非常好的原型工具(目的只为了开发),但通常这不适合用于应用的生产环境.当你需要发布到生产环境的时候,请去掉这两个packages

类似地,也因为Meteor可以共享服务端和客户端的代码,但实际上,这并不意味着所有的代码都可用于客户端.

所有放在server/目录下的东西都是只能在服务端执行使用的, 同时Meteor也让你可以定义服务端安全方法,这些方法可以在客户端调用.

误解#2:”Meteor对SEO不友好”

与传统的网页应用不一样,Meteor不会在服务端搭建HTML页面.取而代之, 服务端只发送数据, 然后在客户端决定如何渲染之(这就是Meteor的”data on the wire”原则)

这种做法的缺点就是, 当JavaScript被禁用的话, 你的网站几乎跟一个空白页面无异.

你或许会觉得这会迷惑搜索引擎.但幸运地是, Meteor有解决的方案,那就是使用Spiderable Package.

这个package使用的是PhantomJS 在服务端预渲染后提供给网络爬虫.实际上网络爬虫得到的网页跟你看到的是一样的.

误解#3:”Meteor不支持第三方packages”

有很多的讨论是关于Meteor所用的不是Node的标准包管理–NPM. 而事实上, Meteor压根就没有不允许使用第三方程序包.

And it’s true that the vanilla install of Meteor does not come with a package manager. 但庆幸的是, 本书的合著者之一Tom Coleman, 同时也是Meteor包管理器Meteorite和packages资源库Atmosphere的开发者.

尽管当下Meteorite 和 Atmosphere还不是Meteor的官方部分, 但它们已经得到广泛的使用并将会在未来被合并到Meteor的核心部分.事实上,这方面的工作已经在Meteor的核心代码的engine分支中开展,预期会被很快解决.

误解#4:”Meteor是完全封闭的(walled garden)”

一个密切相关的异议是,Meteor可以支持第三方packages,但这些第三方packages却严格地限制于流星的生态系统.

为什么有成千上万的Node packages 在那还要使用自定义的package呢?这又是否与开源精神相悖呢?

首先,需要意识到一点很重要的就是, 在Meteor中可以任意的使用node packages.尽管在当下这么做可能还会有一些棱角使得接口不那么顺利,但这种情况在engine分支添加Node support 并发布后将得到很大改善.

其次,Meteor不仅仅是Node.js的一个框架, 更是一种全新的网站应用开发方式和构想.

换句话说,想知道为什么Meteor不使用NPM无异于问为什么它不能使用Ruby Gems. 有很多人建议所有的JavaScript代码应该都用NPM来管理, 但这么做的话会有一些细节上的问题, 正如核心开发者解释说.

误解#5:”Meteor只适用于原型”

“Meteor非常适用于小规模快速原型的项目,但它不适合用于大规模的应用.”

在某种程度上, 这很难争个谁对谁错.毕竟Meteor的主页的版本号还是以0开头.

但事实是Meteor还没准备到一个黄金时间,比起内在的局限性,在如此青涩的时期(不到一岁)Meteor还有许多需要做的.

再说, 即使是现在, 有时牺牲一点稳定性来做交换得到Meteor带来的轻松且快速的开发还是值得的.如果你希望看到一些具体的Meteor案例,我可以推荐看看Telescope吗?

So,我坚信,在Meteor这样快速发展之下,今天的技术原型将会是明天thousand-user 的应用.

总结

现在,即使我们正在写这本关于Meteor的书, 但我们首先依旧会承认一点, 如同其他的技术那样,Meteor同样也有着自己的缺陷.

But I do believe Meteor has enough potential to make it worth evaluating it on its own merits. 所以如果你犹豫不决是否使用Meteor, 希望我的建议能说服你你选择它.

原文来自 Sacha Greif 5 Meteor Misconceptions