0

我有一个 ember 应用程序和一个带有文件的文件夹playGame/game.js。此文件包含游戏逻辑,我想将其导入以进行资产编译。

如果这个文件在下面app/playGame/game.js并且我的 Brocfile 是这样的:

app.import('app/playGame/game.js')

这给出了错误,路径或模式app/playGame/game.js不匹配任何文件..

但是如果我把文件放在bower_components/playGame/game.js我的 Brocfile 下:

app.import('bower_components/playGame/game.js'), 这样编译成功。

这里有什么问题和解决方案?

4

1 回答 1

2

这有两个部分:

  1. 我应该将文件放在哪里以将其作为资产导入?
  2. 为什么不把它放在我的app-folder 工作?

做你想做的事情的方法是vendor在你的根目录中创建一个文件夹,将文件放在那里的某个地方,然后Brocfile.js像这样导入它:

app.import('vendor/playGame/game.js');

记录在 ember-cli.com 上,尽管有些隐藏。

您也可以将其放入bower_components,但该文件夹是用于安装的东西bower,理论上可以删除(实际上,这是针对各种问题的常见建议)。bower_components默认情况下,也不会将事物签入到版本控制中,在这种情况下您可能想要这样做。

这应该可以解决您的问题。


现在,为什么不把它放进去/app

app是一个特殊的文件夹。从文档中:

包含您的 Ember 应用程序的代码。此文件夹中的 Javascript 文件通过 ES6 模块转译器编译并连接成一个名为app.js.

这就是使您可以import从应用程序中获取内容的原因。中的文件夹app可直接在您的<appname>命名空间下使用,以及其他一些文件和文件夹(如config/environment.

例子:

import myWidget from 'my-app/widgets/my-widget';`

引用的文件是/app/widgets/my-widget.js.

ember-cli网站有更多关于如何使用模块的资源。如果这没有任何意义,请阅读那些。

总结一下:

  1. 你可以把你的文件放进去app,但这会使它成为你转译包的一部分,你必须在内部以这种方式使用它,export以及它附带的所有其他东西。它最终会成为<appname>.js
  2. 如上所述,您可以将文件放入vendor并将其导入您的文件中。Brocfile.js它将成为您的应用程序代码的一部分vendor.js并在您的应用程序代码之前加载。
于 2015-04-27T13:44:29.500 回答