如何构建Ember.js应用程序

Cra*_*enz 104 ember.js

很难跟上Ember JS的演变,因为它接近(并达到!)版本1.0.0.教程和文档已经过去,导致很多关于最佳实践和原始开发人员意图的混淆.

我的问题是:Ember JS的最佳实践是什么?是否有任何更新的教程或工作样本显示如何使用Ember JS?代码示例会很棒!

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

Mik*_*tti 110

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

本快速入门指南应该会在几分钟内从零到略高于零.完成后,您应该对ember.js确实有效并且希望有足够的兴趣了解更多信心.

警告:不要只是尝试本指南,然后认为ember-sucks导致"我可以在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>
Run Code Online (Sandbox Code Playgroud)

第2步 - 使用一个或多个把手模板描述您的应用程序的用户界面

默认情况下,ember将使用一个或多个handlbars模板的内容替换html页面的主体.有一天,这些模板将在由sprockets或grunt.js组装的单独.hbs文件中.现在我们将所有内容保存在一个文件中并使用脚本标记.

首先,让我们添加一个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>
Run Code Online (Sandbox Code Playgroud)

第3步 - 初始化您的ember应用程序

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

<script type='text/javascript'>
  App = Ember.Application.create({});
</script>
Run Code Online (Sandbox Code Playgroud)

这就是创建基本ember应用程序所需的全部内容,但它并不是很有趣.

第4步:添加控制器

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

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

第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>
Run Code Online (Sandbox Code Playgroud)

为了使这项工作,我们通过添加一个{{outlet}}帮助器来修改我们的应用程序模板.Ember路由器将根据用户的路线将适当的模板渲染到插座中.我们还将使用{{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>
Run Code Online (Sandbox Code Playgroud)

完成!

此处提供了此应用程序的工作示例.

您可以使用此jsFiddle作为您自己的ember应用程序的起点

下一步...

作为参考,我原来的答案:


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

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

每个组件的哪些组成部分是个人偏好,哪些组件在我的应用程序成熟时必不可少?如果您正在开发新的ember应用程序,我不建议您遵循Code Lab方法.它太过于有用了.

在Code Lab的设计中,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

  • @MikeGrassotti有没有什么方法可以编辑你的答案来显示EmberJS入门的源代码?也许一步一步指导用EmberJS创建一个"Hello World"应用程序? (2认同)
  • @MikeGrassotti应该更新[tag:Ember.js]标签wiki以包含这个问题和答案 (2认同)

Mat*_*sen 16

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

Ember公司-CLI

虽然它确实需要一些令人满意的命令行,但您可以在几秒钟内生成一个现代的Ember项目,其中包含社区推荐的最佳实践.

虽然像Mike Grassotti的回答那样艰难地设置Ember.js项目是有益的,但你不应该为生产代码这样做.特别是当我们拥有如此强大且易于使用的项目时,就像Ember-CLI向我们展示了耶胡达批准的幸福之路.


sly*_*7_7 10

@tomdale制作了30分钟的新视频:https://www.youtube.com/watch? v = Ga99hMi7wfY