Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在ember cli项目中绑定/vendor下的JavaScript文件?_Javascript_Ember.js_Ember Cli_Babeljs_Rollupjs - Fatal编程技术网

如何在ember cli项目中绑定/vendor下的JavaScript文件?

如何在ember cli项目中绑定/vendor下的JavaScript文件?,javascript,ember.js,ember-cli,babeljs,rollupjs,Javascript,Ember.js,Ember Cli,Babeljs,Rollupjs,假设我在使用最新的ember cli构建的EmberJS项目中的/vendor目录下有一个ES6库“foo”(在撰写本文时为2.4.3)。假设foo是一个包含多个文件的库,例如,bar.js,baz.js,等等,它们都会导出一些东西 我想将vendor/foo/bar.js,vendor/foo/baz.js等打包成一个分发文件,例如vendor/foo/dist/foo bundle.js,然后我可以将其导入到Ember中: app.import("vendor/foo/dist/foo-bu

假设我在使用最新的
ember cli
构建的EmberJS项目中的
/vendor
目录下有一个ES6库“foo”(在撰写本文时为2.4.3)。假设foo是一个包含多个文件的库,例如,
bar.js
baz.js
,等等,它们都会导出一些东西

我想将
vendor/foo/bar.js
vendor/foo/baz.js
等打包成一个分发文件,例如
vendor/foo/dist/foo bundle.js
,然后我可以将其导入到Ember中:

app.import("vendor/foo/dist/foo-bundle.js");
这似乎应该可以使用捆绑机和/或transpiler(如),但我不清楚我应该使用什么工具以及使用什么组合。Ember是否有一个内置工具,可以通过Ember cli实现我想要的功能(如果有,我一定是瞎子)?我应该使用外部绑定器,如,还是

总的来说,JavaScript工具周围似乎有很多噪音,这使得我很难理解我对这个问题有什么选择,以及如何正确地利用它们。如蒙协助,将不胜感激


一些可能有用的注释…

到目前为止,我已经尝试了一些方法:

我尝试导入
main.js
文件,希望EmberJS也能遍历依赖关系树,导入
import
语句中引用的任何其他文件。这只导入了
main.js
文件,没有其他依赖项

我在运行它的时候看到了一些错误,但它也使用了一些不推荐使用的方法来支持汇总

我也尝试过直接使用rollup,虽然成功率不高,但我的
bundle.js
输出常常是空的,不包括
bar.js
baz.js
中的代码,因为我只在入口点导入了它们(例如
main.js
):

我发现如果我的
main.js
包含一个从
bar
baz
调用代码的函数,我得到的不仅仅是一个空包,但是如果foo只是一个来自第三方供应商的脚本集合,没有“应用程序入口点”,除了相当于清单文件之类的东西,对于我正在寻找的东西来说,汇总似乎是一个错误的选择

再次感谢

(使用最新选项更新。)

有几个选择

  • 如果
    baz.js
    bar.js
    是您自己的模块和代码,最好将它们放在
    app/my awesome module
    文件夹中。您可以使用ES6导入在您希望使用它们的其他位置进行导入。Ember CLI将自动传输、连接和缩小它们

  • 如果您想使用第三方模块或解决方案,请查看,大多数流行的库已经转换为Ember插件,因此您可以使用
    Ember install
    安装它们

  • 在项目中使用
    ember auto import
    ,并将库作为普通ES6模块导入,如下所示:
    从“my cool模块”导入MyColModule


  • 啊,好的。因此,无论出于何种原因,如果我有多个源文件是我自己的或非分发的第三方(即bower或npm包中不可用),最好是直接将它们导入到
    /app
    下的应用程序中,或者创建一个封装它们的附加组件
    /vendor
    的意义何在?这是遗产吗?事实上,你是对的。当
    /vendor
    是最佳地点时,仍然存在一些边缘情况。如果您无法从内部的私人项目创建包(不过,如果您可以的话,这是最好的),那么供应商仍然是合法的。你的软件包是ES6模块还是ES5标准js?这个问题实际上更多的是出于学术上的好奇心,而不是现实的需要。我在试验EmberJS,试图了解所有可能的方法,以尽可能紧凑的形式将代码放入应用程序,并发现
    /vendor
    下模块化ES6库的假设情况特别令人困惑——尤其是它与
    vendor.js
    文件相关(或不相关)。据我所知,将需要传输的代码传输到
    vendors.js
    文件中(反之亦然)有点。。。很难。(我正在用Ember.js构建我的主项目,所以任何学术上的好奇都是受欢迎的。:)我使用Ember.js已经有4年多了,我真的不记得,曾经使用过那个供应商文件夹。它只是一种遗产。您的大部分外部依赖项可以添加为bower/npm/ember包。。。来自ember cli网站:
    供应商/-供应商特定的文件,如样式表、字体、外部库等。
    ,因此他们建议将其作为复杂代码的占位符。。。也许一个供应商的软件包已经被传输,缩小,等等…太棒了!谢谢,我去看看。
    main.js
    -------
    import bar from './bar.js';
    import baz from './baz.js';
    
    bar.js
    ------
    export default function bar() {
      ...
    }
    
    baz.js
    ------
    export default function baz() {
       ...
    }