Meteor.js是建立在node.js上的一个开源平台,用于快速构建“现代化”实时Web应用。
如果你对Meteor.js非常感兴趣,可以参考Meteor Roadmap。
JavaScript
对前端库/框架进行了解外,比如jQuery或者MooTool,还需要了解JavaScript这门语言,所以在学习之前,对JavaScript进行一番了解则是必然的。
- 可以在互动教程网站Codecademy.com上学习。
- 推荐一本非常适合初学者学习的书籍:Eloquent JavaScript,作者是Marijn Haverbeke。其在线版本不仅免费,里面还提供一些交互式代码示例。
- 另外,你也可以在JavaScript.is上查看一些教程。
- 如果你已有一定的基础,你可以阅读JavaScript设计模式。
- 祝你突破成功,是时候成为Badass JavaScript。
- Mozilla Developer Network有许多很棒的JavaScript学习资源,可以当做参考。
- 在准备学习Meteor之前,请了解一些Douglas Crockford资料,这些视频对提供你的技能水平是非常有意义的。
常用的Meteor资源
掌握JavaScript的一些基础知识后,你就可以投入到Meteor的学习中了。由于Meteor.js旨在彻底简化App的开发,所以你很快就会看到成果。
- 在前往Meteor网站之前,查看这些例子,此外,Meteor的官方文档也是非常好的学习资源。
- 下一步是去Meteor-YouTube频道学习
- 非官方的Meteor FAQ覆盖了许多你意想不到的主题。
- 如果你还未准备充分,你可以使用Meteorite代替普通的Meteor。
- Atmosphere上提供200多个用于Meteorite的包。
- 如果你遇到一些特殊的问题,可以上StackOverrflow提问。
- 如果你喜欢网络聊天室,你可以加入freenode的IRC频道。
- Meteor Google Talk
编码教程
- 阅读Andres Scala写的Meteor的基础和最佳实践。
- Andrew Munsell提供了使用Meteor和Node.js编写实时Web的说明。
- Meteor Newb白皮书
- EventedMind向你展示了如何使用迷你页面来创建多页应用(去Github上查看结果)。
- Tutsplus网站上提供了一个教程,使用Meteor创建单页Web Apps。
- 为Meteor创建自定义账号UI
- 把一个Meteor应用转换成Android Phonegap应用。
- Ken使用Meteor创建了ChoosePix,并且分享给大家。
- Stephen Walther的Meteor介绍里面关于表单验证的部分非常不错。
- 就某种程度而言,你可能还想对MongoDB和如何合理地结构化数据库有些了解。但它与SQL在思考方式上存在一定的哲学差异。
代码案例
下面是我们从Github上发现的一些使用Meteor.js开发的代码示例:
- Meteor开发的APPs列表
- Telesc.pe
- Doc-share是一个文档分享网站。
测试
- Sam Hatoum编写的使用Meteor/Selenium/WebDriverJS对Web Apps进行单元测试和点对点测试。
- Sam还编写了在Meteor里进行表单提交测试。
- JavaScript在steroid上的单元测试向大家演示了如何使用grunt。
产品必读
完成代码编写工作并且对App进行测试,但如果你想让该款App能在市场中存活下来的话,那么下面提供的信息你可能会很感兴趣。
- 运行速度慢?可以看一下Stephen Pope遍写的提高Meteor.js项目性能。
- 如果你打算自己托管Meteor应用,最好对在生产环境中运行node.js服务有所了解。
- 在Meteor/Node服务前放置nginx也是个不错的主意。
- 阅读Julien Chaumond写的如何在Amazon EC2上部署Meteor应用。
书
对于初学者来说,利用业余时间多看一些书籍是个不错的选择,它们能给你提供结构化的指导和一些系统概念。
- Isaac Strack编写的Getting Started with Meteor.js JavaScript Framework。
- Jacob Clark编写的Getting started with Meteor.js,这本书目前只完成了4个章节。
- The Meteor Book将于2013年4月出版。
- 如果你对JavaScript还有所畏惧,那么使用CoffeeScript会容易很多,看看The Little Book on CoffeeScript。
相关框架
- Angular.js:whydoifollow.com上提供了许多好的学习资源。
- Backbone.js:可以在JavaScript.is进行全面的学习。
包
- 用于路由的mini-pages
在过去6个月里,我使用Meteor做了点东西(Telescope,Meteor开源的主要应用程序之一),我觉得有必要和大家分享一下我对Meteor的使用心得和感受。
首先声明:在和Meteor代码打交道的日子里,我的大部分时间都在使Telescope变更加可用,而不是去深入挖掘Meteor,所以我不敢自称是Meteor方面的专家,而之所以能很快上手,很大一部分原因是因为它是一个非常好用且高效的框架,即使在你不精通的情况下也能开发出非常出色的应用。
简单 智能
Meteor的一大特色就是可以轻松构建高品质的实时Web应用程序,相信很多程序员都是因为这一特性而熟知Meteor的。当开始使用Meteor时,会让你的生活变得很简单。
安装Meteor也非常简单,只需一行命令即可。随即便创建第一个应用程序,就连部署也都非常简单。由于Meteor提供免费的托管,因此你可以在线部署,供世界各地的人来浏览。
此外,使用Meteor编写的应用程序运行速度也非常快。例如,当你的项目引用JS或CSS文件时,这些文件将会被自动加载,而Meteor也提供了内置的用户管理,自动完成UI部件的加载。
Meteor九大特性
- 纯JavaScript
- 实时页面更新
- 干净、强大的数据同步
- 延迟补偿
- 代码热推送
- 敏感代码运行于受限环境中
- 完全独立的应用包
- 互操作
- 智能的包
实时的未来
说实话,实时框架是Meteor的最大卖点,实时Web应用程序会让人联想到多人游戏和实时在线文档编辑,但在使用Meteor时,我快速发现实时也可以编写出更加实用且非常好的应用程序,而这种实时很有可能会成为未来几年内Web应用程序的默认编写方式。
在桌面应用系统中,如果一个目录被两个窗口同时打开,那么当你在其中一个窗口删除一个文件后,你必须刷新另一个窗口,那个文件才会“消失”。因此,这就缺乏了实时性,而Meteor框架就可弥补这方面的不足。
此外,实时也影响到我们的编码风格。你无需刷新页面或使用特定的回调逻辑来使应用程序做出响应:每一个块数据都会自动监测、任何与UI元素有关的数据也会自动更新。
下面提供一个案例,一旦有人投票,就响应upvote按钮的“disable”类,模板代码(Meteor使用Handlebars):
- <div class="post">
- <a href="#" class="upvote btn {{upvotedClass}}">⬆<a />
- <h3><a href="{{url}}">{{title}}</a></h3>
- </div>
下面是与之匹配的控制器代码:
- Template.post.helpers({
- upvotedClass: function() {
- // test if user is logged in, and if their userId
- // is included in the 'upvoters' array
- var userId = Meteor.userId();
- if (userId && !_.include(this.upvoters, userId)) {
- return 'upvoteable';
- } else {
- return 'disabled'
- }
- }
- });
这段代码妙在何处呢?如果用户的userid从upvoters数组中删除(例如,实现一个“cancel upvote”操作),就会自动在UI上反应出来,无需编写额外的代码。
一切就绪了吗?
现在,你可能会随着这一行行代码思考些东西:“好,它看起来很棒,但是它真的就可以作为现实应用( real-world apps)吗?”
答案肯定是依情况而定。Meteor当然可以作为现实应用使用。Telescope和Sidebar(基于Telescope)就是非常完美的例子。
但并不是说Meteor就可以完全作为现实应用使用。Meteor没有服务端渲染功能,有些网站对加载速度要求特别高,比如电子商务网站,而有些则需要在旧的/老的设备上运行,比如过时的手机。
Meteor Book
目前,我和 Tom Coleman(Meteor开源生态系统的主要贡献者之一,创建Meteor包管理器Meteorite)正在专注于 The Meteor Book,教你如何使用Meteor编写基本的应用程序。
更多精彩内容,大家可以来到Hacker News上和我一起 探讨。(编译/张红月 责编/付江)
学习资料:
官方提供的3个示例:
- http://meteor.com/examples/leaderboard
- http://meteor.com/examples/todos
- http://meteor.com/examples/wordplay
GitHub项目页:
Meteor@StackOverflow
文档:
FAQ:
来自英文: thechangelog