为什么Aurelia的alpha版本加载缓慢?

时间:2015-02-01 02:58:10

标签: aurelia

我写了一个最小的测试页来试用Aurelia。

http://www.andrewgolightly.com/

GitHub:https://github.com/magician11/ag-landingpage

我的上一次测试表明,用135次请求加载页面需要55秒。

似乎我需要首先捆绑jspm_packages目录,以便立即下载543KB ..而不是碎片。

所以我给出了这个例子:http://aurelia.io/get-started.html

如何捆绑包裹?从https://github.com/jspm/jspm-cli/wiki/Production-Workflows

我不清楚

然后我在index.html文件中更新了什么?我仍然需要包含jspm_packages文件夹,因为我在头部引用它,对吗?

<link rel="stylesheet" href="jspm_packages/github/twbs/bootstrap@3.3.2/css/bootstrap.min.css">
<link rel="stylesheet" href="jspm_packages/npm/font-awesome@4.3.0/css/font-awesome.min.css">

感谢。

更新

该团队正致力于捆绑..

来自Rob Eisenberg:“我们尚未完成捆绑支持。我们正在努力。”

3 个答案:

答案 0 :(得分:14)

这个问题早在非常发布,但我们现在有一个适用于jspm和system.js加载程序的策略用于捆绑。需要注意的是,由于请求数量很多(并且您可能没有启用gzip),资源加载需要一段时间才会导致框架速度变慢)

我已经从我关于这个主题的博文中复制了这个 - http://patrickwalters.net/my-best-practices-for-aurelia-bundling-and-minification/

要求

  1. 了解使用jspm bundle命令让我们的模块加载器system.js知道加载包

  2. 理解这只涵盖JavaScript文件(暂时)

  3. 创建新捆绑包

    1. 打开终端并导航至skeleton-navigation文件夹。
    2. 在文本编辑器中打开config.js
    3. 运行此命令 -

      jspm bundle '*' + aurelia-skeleton-navigation/* + aurelia-bootstrapper + aurelia-http-client + aurelia-dependency-injection + aurelia-router dist/app-bundle.js --inject --minify
      
    4. 击穿

      // Create a bundle
      jspm bundle 
          // Bundle all of these paths
          // from my config.js 
          '*' +
          aurelia-skeleton-navigation/* +
          aurelia-bootstrapper +
          aurelia-http-client + 
          aurelia-dependency-injection + 
          aurelia-router
          // Create the bundle here
          // with this name
          dist/app-bundle.js
          // These modifiers tell the bundle
          // to both minify and then inject
          // the bundle
          --inject
          --minify
      

      关于捆绑的附加说明

      1. 如果您正在投放生产,可能需要查看config.js中的baseUrl设置
      2. 要单独解包和提供文件,请使用jspm unbundle
      3. 由于我们使用了--inject修饰符系统。我们应该选择我们的捆绑包并在不更改index.html中的脚本路径的情况下提供它。
      4. 您可以使用捆绑区域中的+ {filename}
      5. 添加更多文件

答案 1 :(得分:9)

2016年更新

可以使用npm install --save-dev aurelia-bundler通过npm安装捆绑aurelia应用程序的官方工具包。

安装完成后,您可以设置gulp任务来处理bundle / unbundle进程。任务的基本示例如下所示:

<强>建立/任务/ bundle.js

var gulp = require('gulp');
var bundler = require('aurelia-bundler');

var config = {
  bundles: {
    'dist/app-build': {
      includes: [
        '**/*.js'
      ],
      options: {
        minify: true
      }
    }
  }
};
gulp.task('bundle', ['build', 'unbundle'], function() {
  return bundler.bundle(config);
});
gulp.task('unbundle', function() {
  return bundler.unbundle(config);
});

我在这里写了一篇更深入的文章:http://www.foursails.co/blog/aurelia-bundling/

官方文档可在此处找到:https://github.com/aurelia/bundler

答案 2 :(得分:4)

有一个GitHub存储库,其中包含Aurelia AMD目标构建的r.js捆绑策略,以及在Visual Studio中使用TypeScript使用捆绑包的示例项目(包括aurelia.d.ts TypeScript类型定义文件)

使用此策略可以大大减少加载时间,因为它将加载一个文件而不是多个文件。