Ember 助手可以用作实用程序吗?

Can Ember helpers be used as utilities?

我正在查看一个使用 Ember-CLI 1.13 的旧项目的代码库,发现了一些奇怪的东西。

有很多helper不是直接在模板内部使用,而是通过导入到组件js文件中使用。一个这样的例子是

//..helpers/my-helper.js

export function func1 (param1, param2) {
   //return something;
}

export function func2 (param1, param2) {
   //return something;
}

export function func3 (param1, param2) {
   //return something;
}

export default Ember.Helper.helper(func1);
export default Ember.Helper.helper(func2);
export default Ember.Helper.helper(func3);

在组件 js 文件中,我可以看到正在导入和使用上述助手。

//../components/my-component.js
import Ember from "ember";

import { func1 } from '../helpers/my-helper';
import { func2 } from '../helpers/my-helper';
import { func3 } from '../helpers/my-helper';

我有几个问题:

  1. 在这种情况下,我们不应该创建一个实用程序而不是帮助程序吗?
  2. 在一个帮助文件中包含很多函数可以吗?
  3. 是否需要在组件文件中导入?

Shouldn't we create a utility instead of a helper in this case?

是的,但有时程序员很懒惰或时间非常有限(即使将功能移动到实用程序看起来并不像耗时的任务)

Is it ok to include many functions in a single helper file?

是的,在文件中有很多函数并导出它们很好,但据我所知,只有 default 导出可以作为助手在模板中使用。而且我 99% 确定没有默认导出会导致构建错误。

Are the imports inside the component file necessary?

如果这些导入在组件的 代码 中使用,那么它们是必需的。否则,没有。