如何自定义 ember-cli 构建以排除源代码 concat

How to customize ember-cli build to exclude source code concat

我有一个相当大的应用程序,现在 app.js 大约 5mb,vendor js 大约 1mb+。我假设它会超过 10mb,我们的目标用户的互联网速度很慢,每个用户都有不同的权限,因此大多数组件对用户不可用。

我正在考虑从构建过程中排除一些大组件并按需加载它们。到目前为止,我喜欢这个想法 https://github.com/Cryrivers/ember-remote-component/blob/master/app/components/remote-component.js,它检查组件是否已加载,如果没有,则使用 AJAX

加载它们

类似

if(!container.hasRegistration(`component:${ componentName }`)){
    $.when(
        $.getScript(`/remote-components/${ componentName }/component.js`),
        $.getScript(`/remote-components/${ componentName }/template.js`)
    ).done(()=> {
        let container = getOwner(this);
        container.register(`component:${ componentName }`, require(`${ ENV.modulePrefix }/components/${ componentName }`).default, {singleton: false});
        this.set('isLoaded', true);
    })
}

我认为这可行。但是这里有两个问题

A: 如何从构建过程中排除一个组件,并阻止它连接但又将它们保留在 /dist/components/abc/文件夹

B: 为该组件单独编译 template.hbs 到 template.js 因为通过 AJAX 加载后编译模板将导致巨大的性能问题.

这不是 OP 正在寻找的确切解决方案,但我认为这是一个更好的长期解决方案

我认为延迟加载引擎可能是解决此问题的更好方法。 https://github.com/dgeb/ember-engines

您可以阻止大多数用户加载应用的大部分内容。

根据项目的自述文件,master 分支中提供了对延迟加载的实验性支持。