Ember cli管理自定义文件夹的依赖关系

时间:2015-04-27 05:51:14

标签: ember.js ember-cli broccolijs

我有一个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'),这成功编译。

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

1 个答案:

答案 0 :(得分:2)

这有两个部分:

  1. 我应该将文件放在哪里作为资产导入?
  2. 为什么不将它放在app - 文件夹中?
  3. 执行所需操作的方法是在根目录中创建一个名为vendor的文件夹,将文件放在其中的某个位置,然后将其导入Brocfile.js,如下所示:

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

    这是documented on 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网站有some more resources for how to use modules。如果这没有任何意义,请阅读这些内容。

    总结一下:

    1. 您可以将文件放在app中,但这会使其成为您转换后的软件包的一部分,并且您必须在内部使用export以及其他所有内容附带它。它最终会成为<appname>.js
    2. 的一部分
    3. 您可以将文件放在vendor中,然后按照上面的说明将其导入Brocfile.js。它将成为vendor.js的一部分并在您的应用代码之前加载。