2

我最近发现了 ember.js,它的复杂性和可能性引起了我的兴趣。到目前为止,我浏览了一些学习材料:

从这些,我了解到对于框架应该如何使用,我们应该如何命名视图、控制器和模型,以及如果我们遵循这些约定,我们可以节省大量的代码输入,因为Ember.js 有很多“假设”。默认情况下,Node.js 可以“开箱即用”地做到这一点。

当然,这非常方便,但只有在您真正知道幕后发生的事情时,您才不必编写。我的问题由此而来:

例如,当我们定义一个应用程序模板和一个视图时会发生什么?自动为我们做了什么?是否为我们实例化了 applicationController?或者,我们必须手动创建一个吗?其他不是 applicationViews/Controllers 的视图/控制器对呢,比如子视图(因为 applicationView 和 applicationController 在某种程度上是独一无二的,它们必须存在于任何 ember.js 应用程序中)?

如果我们只定义一堆路由但不覆盖任何路由器的默认常规行为,那么路由器(来自 1.0pre4 的 API)会自动为我们做什么

就个人而言,真正能帮助我理解这里的关键概念的是一个示例应用程序,它可以转换到另一个状态,它可以实现应用程序正常工作所需要做的一切(意思是,它不依赖于 ember 会做的任何代码否则对我们来说)。这样,我将能够看到各个部分在起作用,并在我的脑海中“重新设计”该过程,并希望能够完整地理解该过程。

如果这个问题过于复杂或模糊,请建议我如何缩小我的兴趣。

4

1 回答 1

0

开始使用 EmberJS 真的不需要太多东西。我在这里创建了一个 JSFiddle:http: //jsfiddle.net/nzXW9/,它强调了一个简单的应用程序是多么简单。我还创建了一个多余的内容App.PetsCatsController,只是为了演示当您进入pets.cats路线时它如何自动成为控制器。

您不需要applicationControllerorapplicationView即可开始使用。从pets.index路由来看,Ember 默认假设如下:PetsIndexController, PetsIndexView, PetsIndexRoute.

根据我对 EmberJS 的理解,让我们举一个简单的示例场景(我们现阶段没有 DS 模型)当我们进入 #/pets/cats 路由时:

  1. 如果可用,请查阅PetsCatsRoute有关进入此路线的说明;
  2. 由于 Ember 的控制器是单例的,所以检查我们是否已经有 a 的实例PetsCatsController,如果有,转到#5,否则转到#3;
  3. 检查是否有用户定义的PetsCatsController,是否有创建它的实例;
  4. 如果没有用户定义PetsCatsController,则实例化一个 EmberJS 生成的PetsCatsController控制器;
  5. 找到对应的PetsCatsView,如果存在,否则自动生成。

您还会从 JSFiddle 中注意到,您不一定需要关注索引路由,除非随着项目的扩展您需要这样做。

于 2013-01-28T22:15:23.533 回答