如何构build一个Ember.js应用程序

Ember JS的版本1.0.0已经接近(并且已经达到)了,这是很难跟上的。 教程和文档已经过去,导致了有关最佳实践和原始开发人员意图的许多混淆。

我的问题正是:Ember JS的最佳实践是什么? 是否有任何更新的教程或工作示例显示如何使用Ember JS? 代码示例将是伟大的!

感谢大家,尤其是Ember JS开发者!

有一个重要的项目,新老Ember.js开发人员应该利用:

Ember公司-CLI

尽pipe命令行需要一定的舒适度,但您可以在几秒钟内生成一个具有社区推荐最佳实践的现代Ember项目。

在Mike Grassotti的回答中,设置一个Ember.js项目是一件很困难的事情,但是你不应该这样做。 尤其是当我们有像Ember-CLI这样强大而易用的项目向我们展示了耶胡达批准的快乐之路 。

Mike Grassotti的最低可行Ember.js快速入门指南

这个快速入门指南应该在几分钟内让你从零到略多于零 。 完成之后,您应该对ember.js确实有用,并且希望能够有足够的兴趣了解更多信息。

警告:不要只是尝试这个指南,然后认为呃吸吮导致“我可以写在jQuery或Fortran更好的快速入门指南”或任何其他。 我不是试图把你卖给烬宝或者任何东西,这本指南不过是一个“你好”的世界。

第0步 – 检查jsFiddle

这jsFiddle有这个答案的所有代码

第1步 – 包含ember.js和其他所需的库

Ember.js需要jQuery和Handlebars。 确保这些库在ember.js之前加载:

 <script type='text/javascript' src='http://code.jquery.com/jquery-1.9.1.js'></script> <script type='text/javascript' src="http://cdnjs.cloudflare.com/ajax/libs/handlebars.js/1.0.0-rc.3/handlebars.js"></script> <script type='text/javascript' src="http://cdnjs.cloudflare.com/ajax/libs/ember.js/1.0.0-rc.1/ember.js"></script> 

第2步 – 使用一个或多个句柄模板来描述您的应用程序的用户界面

默认情况下,使用一个或多个模板的内容来replace你的html页面。 有一天,这些模板将被分割成单独的.hbs文件,由链轮或grunt.js组装起来。 现在我们将把所有东西放在一个文件中,并使用脚本标签。

首先,我们添加一个application模板:

 <script type="text/x-handlebars" data-template-name="application"> <div class="container"> <h1>Ember.js is easy?<small> Minimum Viable Ember.js QuickStart Guide</small></h1> <p>{{message}}</p> </div> </script> 

第3步 – 初始化您的烬宝应用程序

只需添加另一个脚本块App = Ember.Application.create({}); 加载ember.js并初始化你的应用程序。

 <script type='text/javascript'> App = Ember.Application.create({}); </script> 

这就是所有你需要创build一个基本的烬应用程序,但它不是很有趣。

第4步:添加一个控制器

Ember评估控制器上下文中的每个把手模板。 所以application模板有一个匹配的ApplicationController 。 如果你没有定义一个,Ember将自动创build,但是在这里我们定制它来添加一个消息属性。

 <script type='text/javascript'> App.ApplicationController = Ember.Controller.extend({ message: 'This is the application template' }); </script> 

第5步:定义路线+更多的控制器和模板

Ember路由器可以很容易地将模板/控制器结合到应用程序中。

 <script type='text/javascript'> App.Router.map(function() { this.route("index", { path: "/" }); this.route("list", { path: "/list" }); }); App.IndexController = Ember.Controller.extend({ message: 'Hello! See how index.hbs is evaluated in the context of IndexController' }); App.ListRoute = Ember.Route.extend({ setupController: function(controller) { controller.set('content', ['angular.js', 'backbone.js', 'ember.js']); } }); </script> 

为了使这个工作,我们通过添加一个{{outlet}}帮手来修改我们的应用程序模板。 Ember路由器将根据用户的路线将适当的模板渲染到sockets中。 我们还将使用{{linkTo}}助手添加导航链接。

  <script type="text/x-handlebars" data-template-name="application"> <div class="container"> <h1>Ember.js is easy?<small> Minimum Viable Ember.js QuickStart Guide</small></h1> <p>{{message}}</p> <div class="row"> {{#linkTo index class="span3 btn btn-large btn-block"}}Home{{/linkTo}} {{#linkTo list class="span3 btn btn-large btn-block"}}List{{/linkTo}} </div> {{outlet}} </div> </script> <script type="text/x-handlebars" data-template-name="list"> <h3 class="demo-panel-title">This is the list template</h3> <ul> {{#each item in content}} <li>{{item}}</li> {{/each}} </ul> </script> <script type="text/x-handlebars" data-template-name="index"> <h3 class="demo-panel-title">This is the index template</h3> <p>{{message}}</p> </script> 

完成!

这个应用程序的工作示例可以在这里find 。

你可以使用这个jsFiddle作为你自己的应用程序的起点

下一步…

  • 阅读灰烬指南
  • 也许购买Peepcode屏幕录像
  • 在Stack Overflow或在IRer IRC上提问

作为参考,我的原始答案是:


我的问题是任何Ember.js专家,当然还有各自的教程作者:我应该什么时候使用一个教程的devise模式,什么时候使用另一个教程?

这两个教程代表了编写时的最佳实践。 可以确定的是,每个人都可以学到一些东西,因为ember.js的移动速度非常快,所以都注定会过时。 在这两者中,Trek's更为stream行。

每个组件的个人喜好,哪些组件将被certificate是必不可less的,因为我的应用程序成熟? 如果你正在开发一个新的应用程序,我不build议遵循Code Lab的方法。 有用的东西太过时了。

在Code Lab的devise中,Ember似乎更接近现有的应用程序(即使它是自定义JS的100%),而Trek的应用程序似乎更适合于Ember。

你的评论是砰的一声。 CodeLab正在利用核心的支持组件并从全球范围访问它们。 写完之后(9个月前)这是相当普遍的,但是现在编写应用程序应用程序的最佳做法更接近Trek正在做的事情。

也就是说,即使Trek的教程已经过时了。 现在需要ApplicationViewApplicationController组件现在由框架本身生成。

到目前为止,最新的资源是http://emberjs.com/guides/上发布的指南; – 它们是在过去几周内从头开始编写的,反映了最新的(预发布)版本的ember。

我还会在这里查看trek的wip项目: https : //github.com/trek/ember-todos-with-build-tools-tests-and-other-modern-conveniences

编辑

@ sly7_7:我也给了另一个例子,使用ember-data https://github.com/dgeb/ember_data_example

有@ 30分钟由@tomdale新鲜的截屏: https : //www.youtube.com/watch? v = Ga99hMi7wfY

我强烈推荐使用Yeoman及其伴随的烬发生器。 开箱即可获得开发,testing和准备应用程序所需的全部工具。 作为额外的好处,您可以将视图模板分成多个文件,并以智能目录结构开始,这将有助于创build可维护的代码库。

我已经写了一个关于在5分钟内启动并运行的教程。 只需安装node.js并在此处继续

火焰灰烬 – Peepcode screencast值得一看。

还要通过这个免费的教程题为“ 让我们学习Ember从Tuts + Premium”。 它的免费,因为它的free courses系列。 这个课程,正如Tuts家伙所说的那样,分成十四个简单的章节。

我希望这有帮助。

问候,

我更喜欢木炭yeoman方法。 它为您提供了大量的东西,包括:

  • 一个很好的文件夹架构使用“模块”的方法。
  • 中性
  • 现场重新加载
  • 缩小
  • 丑化
  • jshint

和更多。

它的超级简单的设置,只需运行yo charcoal创build一个应用程序然后yo charcoal:module myModule添加一个新的模块。

更多信息在这里: https : //github.com/thomasboyt/charcoal

我刚刚创build了一个入门工具包,如果你想使用带有Ember-Data的最新的EmberJS和Emblem模板引擎。 所有包裹在Middleman中,所以你可以使用CoffeeScript进行开发。 我的GitHub上的所有内容: http : //goo.gl/a7kz6y

虽然Ember.js上过时的火焰对于第一次看到灰烬的人来说仍然是一个很好的教程。

我已经开始制作一系列从Ember之前开始的video,并且正在使用Ember,以便在真实世界中使用严重的使用情况。

如果你有兴趣看到这一天的光芒(如果有兴趣,我很乐意最终把它公开),你一定要去我发表的post,打“喜欢”(或只是在这里评论,我猜):

http://discuss.emberjs.com/t/making-ember-easier-to-approach-aka-crazy-screencasts-videos-that-will-stick-in-your-mind-for-learning-ember/5284

我非常热衷于帮助社区蓬勃发展,同时也帮助人们学习如何以简单的方式build立标准的网站。