1

我目前正在使用 Ember App Kit 和 Coffeescript 学习 Ember。

为了让 ES6 Resolver 正常工作,需要在 coffeescript 中使用一些特定的转义。

本质上要定义一个对象,我必须将它包装在一个变量中。

NewObject = Ember.Object.extend({
  //....code...
});

`export default NewObject`

但是,如何定义诸如索引控制器之类的东西(例如在嵌套目录中)?

通常我认为你只是命名文件index.js....但是在coffeescript中如果我需要将它包装在一个变量中,那个变量也应该被称为索引吗?

我对 ember 和 coffeescript 还是很陌生。

4

1 回答 1

1

假设您不是在谈论路由/控制器,是的,您可以以这种方式命名它。

使用 Ember CLI 构建的应用程序不是使用 AMD (Require.js) 或 CommonJS (Browserify) 模块,而是通过 ES6 模块转译器使用 ES6 模块。这意味着您可以使用来自未来 JavaScript 版本的语法来构建您的应用程序,但输出现在可以被现有 JavaScript 库使用的 AMD 模块。

如果您以前构建过 Ember.js 应用程序,您可能习惯于将所有内容填充到全局命名空间中,遵循命名约定,以便应用程序可以自动解析其依赖项:App.FooRoute 会知道默认呈现 App.FooView。使用自定义解析器,Ember CLI 应用程序具有类似的功能,但使用 ES6 模块而不是全局命名空间。

例如,app/routes/index.js 中的这个路由定义:

var IndexRoute = Ember.Route.extend({    
  model: function() {
   return ['red', 'yellow', 'blue'];    
  }  
});
export default IndexRoute; 

将产生一个名为路由/索引的模块。使用解析器,当 Ember 查找索引路由时,它会找到这个模块并使用它导出的对象。

您也可以直接导出,即无需声明变量:

export default Ember.Route.extend({    
  model: function() {
    return ['red', 'yellow', 'blue'];    
  }  
});
于 2014-06-18T04:26:13.093 回答