构建meteor应用程序
当我第一次了解Meteor Javascript框架时,我看到有人写道:“ Meteor代表Node.js,Rails代表Ruby”,我认为这是一个很好的比较。 几年前,Rails是Web上的热门新事物 ,它在开发过程中散布了一些有用的“魔术”,使Web上的编程更加平易近人和令人愉悦。 在最近涌现的无数新框架中,没有任何一个能让我感觉到Rails像Meteor一样做的事情-您应该认真考虑将其用于未来项目的框架。 原因如下。
1.默认情况下,您的应用程序是实时的。
最近,像Twitter和Facebook这样的公司一直在朝着实时网络发展。 不可避免的是,用户会比预期的更快,期望Web应用程序立即运行。 我想象已经有用户在更改设置和注销之类的简单任务需要单独加载页面时感到畏缩。
问题是,创建实时Web应用程序很棘手。 或者至少是这样。 流星已经内置了实时功能。 更新数据库后,模板中的数据也会更新。 当用户单击按钮或提交表单时,操作将立即发生。 在绝大多数情况下,这甚至不需要任何额外的努力。 您可以像往常一样构建Web应用程序,并且开箱即用,它恰好是实时的。
不久前,流星的人们发布了一个演示这些实时功能的截屏视频 ,这非常值得一看,但是有一系列生产应用程序在展现流星差异方面做得更好:
这些也只是一个小样本。
2.您可以只使用一种语言进行开发。
成为Web开发人员的令人沮丧的部分之一是需要戴上各种帽子。 您需要考虑前端,后端和数据库,然后还有另外一百万个细节会挤出您的智力极限。 Meteor通过缩小需要考虑的范围来简化此过程,使您仅使用Javascript即可构建和管理前端,后端和数据库。
例如,这就是我们在Meteor中创建“集合”(相当于SQL表)的方式:
BlogPosts = new Meteor.collection('posts');
因此,我们可以使用熟悉的语法创建集合,也可以使用熟悉的语法操作集合。 这是我们插入数据的方式:
BlogPosts.insert({
title: 'Hello World',
content: 'This is the content.',
published: true
});
用一种语言编写整个应用程序还有另一个好处。 一行代码可以在客户端和服务器上运行,并且可以在两种环境中执行不同的操作 。 这就是为什么这样重要:
当创建集合的语句在服务器上运行时,它可以预测地创建一个集合。 但是,当同一条语句在客户端上运行时(默认情况下将执行此操作),它将在用户的浏览器中创建一个纯本地集合。 然后,用户直接与本地集合进行交互,这就是为什么他们的屏幕上的数据可以即时更改,而本地和服务器端集合在后台无缝同步的原因。
这不需要任何特殊处理。 您编写了一行代码,除了能够在整个开发周期中使用熟悉的语法外,还提供了一系列功能。
3.使用智能软件包可以节省大量时间。
假设您要在Meteor项目中创建一个用户帐户系统。 您将如何处理? 如果您首先想到的是“嗯,我将为用户的数据创建一个集合”,那么您已经在想得太辛苦了。
在Meteor中,这是我们创建帐户系统的方式:
meteor add accounts-password
我们在终端中运行此命令,Meteor将其内置的“智能软件包”之一添加到项目中。 这个特定的程序包创建一个帐户系统,该系统需要电子邮件(或用户名)和密码。 但是,如果我们想让用户注册其Twitter帐户怎么办? 然后我们可以写:
meteor add accounts-twitter
或者,使用他们的Google帐户:
meteor add accounts-google
或者,Facebook:
meteor add accounts-facebook
我们甚至可以运行所有这些命令,以便我们的用户可以选择他们想要的注册方式。
Meteor还提供了一个accounts-ui
程序包,该程序包创建此帐户系统的前端,并且只需要一个其他命令即可:
meteor add accounts-ui
有了我们的帐户系统,我们就可以执行在处理Web应用程序时合理需要做的一切,例如检查当前用户是否通过我们的模板之一登录:
{{#if currentUser}}
You're logged in.
{{else}}
You're not logged in.
{{/if}}
或浏览和操作Meteor.users
集合,这是Meteor创建的用于存储用户数据的集合。
不过,智能套餐不仅适用于帐户。 已经有许多可用的方法,而且大概还在进行中,它们都使您可以做一些很酷的事情,包括:
- 用CoffeeScript编写应用程序。
- 自动将LESS文件编译为CSS。
- 集成D3.js和Bootstrap之类的附加功能。
但是,如果智能软件包无法满足您的需求,那么日益庞大的第三方软件包库可能会让您满意。
没有什么比活跃和充满活力的社区吸引我更多的新框架或新技术了。 我认为,如果社区活跃,那么:
- 会有很多详细的文档。
- 我会花更少的时间来熟悉基础知识。
- 这项技术不会在不久的将来陷入僵局。
幸运的是,流星的社区已经是其最大的财富之一。 人们对框架的热爱产生了很多有用的资源,包括:
- Crater ,一个类似Reddit的网站,用于跟踪流星世界中正在发生的事情。
- Evented Mind ,这是一个视频培训网站,面向中级开发人员,他们希望深入了解Meteor的工作原理。
- Kadira ,一个性能跟踪应用程序,易于使用,并且有合理的免费入门计划。
流星的YouTube官方频道提供了流星聚会的一系列演讲,并且有很多博客可以作为提示和教程供您参考:
- 流星提示 (好的,这是我的)
- 流星30天
- 探索流星
- 流星黑客
- 温柔节点
但是,如果您仍然对可用资源不满意,Stephan Hochhaus会保留大量的流星资源清单,每个人都有一些东西。
5.针对开发人员的幸福进行了优化。
几乎每个框架都将自己作为一种更好,更有趣的工作方式。 不过,我很欣赏Meteor对细节的关注,以实现其为开发人员带来幸福的优化承诺。
以下面的代码为例:
{{> myCoolTemplate}}
Hello world.
这是Meteor应用程序的基本界面, body
标签之间包含模板。 (对于模板,Meteor使用空格键-一种由Handlebars启发的语法。)
但请注意:
- 我们尚未包含
html
标签。 - 我们尚未包含任何CSS文件。
- 我们尚未包含任何Javascript文件。
…那是因为流星为我们照顾了它们,所以我们不需要做这些事情。 这是世界上最重要的功能吗? 不。 但这表明流星有兴趣让每个开发人员的生活在每一步都变得更加轻松。
其他令人愉快的细节包括:
- 内置的LiveReload功能,因此您不必手动刷新浏览器。
- 随心所欲地自由构建项目。 有可以遵循的标准,但没有严格的规则或约定。
- 流星的绝对模块化,允许您混合搭配不同的组件,以防流星的某一部分不符合您的喜好。
因此,尽管Meteor在设计上可以让您的生活更轻松地拥有“魔术”和惯例,但您仍然可以根据个人喜好进行选择。 这是两全其美。
6.对初学者来说很友好。
我对Meteor感到惊讶的是,我能够这么快地开始构建实际上很酷的东西。 我听说人们称该框架为“简单”,但通常其他人对该词的定义与我自己的定义不同。 在这种情况下,他们是对的:
流星是初学者最容易学习的框架之一。
它仍在编程中,您需要熟悉Javascript的语法(变量,循环,条件,JSON等),但是您无需成为Javascript忍者就可以开始。 您甚至不需要制作Web应用程序的先前经验(对于希望增强技能的前端开发人员而言,这是一个不错的选择)。 您可能不会立即掌握所有概念,但这不会阻止您享受事物的实际方面。
至于为什么Meteor非常适合初学者,主要是出于与我一般推荐Meteor相同的原因:
- 您只需要知道一种语言。
- 有大量的社区资源。
- 它针对开发人员的幸福进行了优化。
因此,即使您在学习Meteor时偶然遇到了一点驼峰,也只需将其稍微推开一点,我想您会发现这些驼峰很少而且相差很远。
7.它领先于技术曲线。
就像我之前说的,网络正在成为一个实时环境,但是这种转变不会仅仅基于预算大的大公司的行动而发生。 随着工具的可用,这种转变将发生,这些工具使小型团队和个体开发人员可以快速,轻松地制作实时应用程序。 Meteor是此工具的第一批浪潮之一,其“多合一”方法肯定会使其在未来几年中发挥重要作用。
流星的人们说了他们的长期任务 ,说白了,他们的任务是巨大的:
…为云应用程序构建一个新平台,该平台将与以前的平台(如Unix,HTTP和关系数据库)一样普及。
他们能做到吗? 当然,没有人可以绝对确定地说,但是他们拥有资金 ,社区和对开发人员和最终用户而言至关重要的平衡。 因此,至少,它们在正确的轨道上(这是我很高兴能随车行驶的轨道)。
结论
撰写这些文字时,Meteor的版本仍为0.8.2,但发行版本又大又快,并且一系列令人印象深刻的Meteor内置应用程序已投入使用并在网络上使用。 您的具体情况将决定某个特定的框架是否适合您和您的创作,但是每个开发人员都应归功于自己至少与Meteor玩一两天。 很长一段时间以来,我在网络编程上都没有这么开心,很可能您会感觉到相同的方式。
翻译自: https://www.sitepoint.com/7-reasons-develop-next-web-app-meteor/
构建meteor应用程序