如何在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 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() {
...
}