随着Ember JS接近(并达到!)1.0.0版本,跟上它的演变一直是困难的。教程和文档已经来了又去了,导致很多人对最佳实践和原始开发者的意图感到困惑。
我的问题就是:Ember JS的最佳实践是什么?是否有更新的教程或工作示例展示Ember JS的预期使用方式?如果有代码示例会很好!
感谢所有人,特别是Ember JS开发人员!
随着Ember JS接近(并达到!)1.0.0版本,跟上它的演变一直是困难的。教程和文档已经来了又去了,导致很多人对最佳实践和原始开发者的意图感到困惑。
我的问题就是:Ember JS的最佳实践是什么?是否有更新的教程或工作示例展示Ember JS的预期使用方式?如果有代码示例会很好!
感谢所有人,特别是Ember JS开发人员!
这个快速入门指南可以在几分钟内让你从零到略微超过零。完成后,您应该会对ember.js实际工作感到相当自信,并且希望能够更加深入地了解。
警告:不要仅仅尝试本指南,然后认为ember很糟糕,因为“我可以用jQuery或Fortran编写更好的快速入门指南”或其他任何原因。我并不想让你转向ember或任何其他东西,这个指南只不过是一个hello-world。
这个jsFiddle包含了本答案中的所有代码。
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>
默认情况下,Ember会使用一个或多个Handlebars模板的内容替换您的html页面的body。有一天这些模板将在由Sprockets或maybe grunt.js组装的单独的.hbs文件中。现在,我们将保持所有内容在一个文件中,并使用脚本标签。
首先,让我们添加一个名为application
的模板:
<script type="text/x-handlebars" data-template-name="application"></script>
只需添加另一个带有App = Ember.Application.create({});
的脚本块,以加载ember.js并初始化您的应用程序。
<script type='text/javascript'>
App = Ember.Application.create({});
</script>
这就是创建一个基本的Ember应用程序所需的全部,但并不是非常有趣。
Ember 在控制器上下文中评估每个 handlebars 模板。因此,application
模板具有匹配的 ApplicationController
。如果您没有定义,则 Ember 会自动创建它,但在这里让我们定制它以添加一个 message 属性。
<script type='text/javascript'>
App.ApplicationController = Ember.Controller.extend({
message: 'This is the application template'
});
</script>
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路由器将根据用户的路由将适当的模板呈现到插座中。我们还将使用 {{linkTo}}
助手添加导航链接。 <script type="text/x-handlebars" data-template-name="application"></script>
<script type="text/x-handlebars" data-template-name="list"></script>
<script type="text/x-handlebars" data-template-name="index"></script>
这个应用的工作示例可以在此处找到。
您可以使用此 jsFiddle作为自己的Ember应用程序的起点
供参考,我的原始回答:
我的问题是针对任何Ember.js专家,当然还有相关的教程作者:我应该什么时候使用一个教程的设计模式,什么时候使用另一个教程的设计模式?
这两个教程代表了它们编写时的最佳实践。肯定可以从每个教程中学到东西,但它们都很遗憾地注定会过时,因为Ember.js正在快速发展。其中Trek的教程更加当前。
这两个教程中的哪些组件是个人喜好,哪些组件将在我的应用程序成熟时证明是必不可少的? 如果您正在开发新的Ember应用程序,我不建议遵循Code Lab的方法。它已经过时,无法使用。
在CodeLab的设计中,Ember似乎更接近于存在于应用程序中(即使它是他的自定义JS的100%),而Trek的应用程序似乎更多地居于Ember内部。
你的评论很正确。CodeLab正在利用核心的Ember组件,并从全局范围访问它们。当它编写时(9个月前),这是相当普遍的,但今天编写Ember应用程序的最佳实践要比Trek所做的更接近。
话虽如此,甚至Trek的教程也变得过时了。现在框架本身生成了需要使用的组件ApplicationView
和ApplicationController
。
迄今为止最当前的资源是发布在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
有一个重要的项目,新手和老手Ember.js开发人员都应该利用:
虽然需要一定的命令行操作经验,但你可以在几秒钟内生成一个现代的Ember项目,并采用社区推荐的最佳实践。
虽然像Mike Grassotti所说的那样艰难地设置Ember.js项目是有益的,但你不应该为生产代码这样做。特别是当我们有如此强大且易于使用的项目Ember-CLI
来展示Yehuda批准的happy path时。
同时,请参考Tuts+ Premium的免费教程《Let's Learn Ember》。这是他们的免费课程
系列,所以是免费的。
正如Tuts团队所称,这门课程分为14个易于跟进的章节。
希望这能帮到您。
祝好!
我已经开始制作一系列视频,从Ember之前开始,逐步向使用Ember解决现实世界中的严重问题发展。
如果您有兴趣看到这些视频(如果有兴趣,我很乐意将其公开),您应该转到我发布的帖子并点“赞”(或在此处发表评论):
我非常热衷于帮助社区繁荣发展,同时也希望帮助人们轻松学习如何构建标准的网站。
我刚刚创建了一个入门套件,如果你想使用最新的EmberJS和Ember-Data,以及Emblem模板引擎。所有内容都包含在Middleman中,所以你可以使用CoffeeScript进行开发。所有内容都在我的GitHub上:http://goo.gl/a7kz6y
我更喜欢使用木炭侍从(Charcoal Yeoman)的方法。它可以为你提供很多开箱即用的功能,包括:
还有更多功能。
而且它非常容易设置,只需运行yo charcoal
创建一个应用程序,然后运行yo charcoal:module myModule
添加新模块。