9

我已经看到这个话题出现了几次,但我认为我没有看到任何明确的解决方案。

我已经尝试将我所有的 Foo.deploy.js、Bar.deploy.js 合并到一个 .js 文件中,然后将其包含在 loadAmber() 调用中。这 / 似乎 / 工作得相当好,但大部分下载大小仍然来自 Amber 内部。

在我的申请中,规模最大的违规者是:

  • 200K - jQuery UI
  • 95K - 内核集合
  • 90K - jQuery
  • 87K - 内核对象
  • 50K - 帆布
  • 40K - 我的应用
  • 20K - 内核类

我不能对 jQuery UI 的大小做太多,但我可以做很多关于 Amber 核心的大小以及获取它们所需的 HTTP 请求的数量。唯一的问题是我无法弄清楚如何告诉 Amber 不要自动获取 Kernel-Objects.deploy.js 等。

有没有人成功地将他们的整个 Amber javascript 打包成一个 .js 文件?

  • R.泰勒克罗伊

代码: http: //github.com/rtyler Chatter:http: //twitter.com/agentdero

4

4 回答 4

6

Amber 编译器可以做很多事情:

http://github.com/NicolasPetton/amber/blob/master/bin/amberc#L18-90

以下命令将编译 jQuery 和列出的包并生成 amber-deploy.js:

./bin/amberc -l js/lib/jQuery/jquery-1.6.4.min,Kernel-Objects.deploy,Kernel-Classes.deploy,Kernel-Methods.deploy,Kernel-Collections.deploy,Kernel-Exceptions.deploy,Canvas.deploy amber-deploy

请注意列出的文件名之间没有空格。

另外 - 您可以下载 Google Closure 编译器http://closure-compiler.googlecode.com/files/compiler-latest.zip并将其放在您的主目录 (~/compiler.jar) 中,然后运行(注意-O选项):

./bin/amberc -O -l js/lib/jQuery/jquery-1.6.4.min,Kernel-Objects.deploy,Kernel-Classes.deploy,Kernel-Methods.deploy,Kernel-Collections.deploy,Kernel-Exceptions.deploy,Canvas.deploy amber-deploy

然后在你的html中你可以放:

<script src='amber-deploy.js'></script>
于 2012-04-05T15:36:32.983 回答
3

从 Amber 0.13 开始,您可以使用 RequireJS 优化器创建一个最小化的 JS 文件,包括您自己的代码、Amber 和所有依赖项。

加载 Amber 0.13 alpha

(sudo) npm -g install amber-cli@~0.13.0  

关键是构建文件。过去直接进入 index.html 的所有 RequireJS 设置都在这里。例如,稍微定制化的 app.build.js:

({
    mainConfigFile: "config.js",
    paths: {
        ... skipped items there by default
        'lib/jquery-migrate': 'bower_components/jquery/jquery-migrate'
    },
    "shim": {
        'lib/jquery-migrate': [ 'jquery' ]
    },
    include: [
        'amber/requirejs/require.min',
        'amber/deploy',
        'my-namespace/MyPackage',
        'lib/jquery-migrate'
    ],
    out: "all-in-1.js"
})

现在,运行r.js -o app.build.js现在将生成一个名为 all-in-1.js 的压缩 JS 文件,这是您需要从 index.html 加载的唯一文件

于 2014-07-30T22:27:42.110 回答
1

Amber 0.13 版本发布

Amber 0.13 版已经发布

在这个版本中,命令

amber init

在许多其他文件中创建 Gruntfile.js ( http://gruntjs.com/ )。

 grunt deploy

在命令行上,您调用的 JavaScript 文件 the.js被更改为包含部署所需的所有内容。

这意味着您只需要部署

  • index.html
  • the.js

放入目标目录。

the.js仅包含 JavaScript。没有 Smalltalk 来源。

grunt develop

你切换回开发模式。你会得到一个简短的版本the.js

来源:https ://github.com/amber-smalltalk/amber/wiki/Deploying-Amber

于 2014-10-15T09:11:21.747 回答
1

我相信现在的咒语应该是这样的——

./bin/amberc -m Counter st/Examples.st Onefile

...我在没有实际实例化计数器的情况下为“计数器”示例创建单个文件分发。输出文件将是“Onefile.js”,其中包含必要的琥珀色内核类以及 Counter 示例类。

但是,当我尝试加载 Onefile.js 时,在 MacOSX 上的 Chrome 和 Safari 中的 JS 控制台中出现多个“超出最大调用堆栈大小”错误。虽然我觉得“一个文件部署”的场景接近现实,但仍有一些缺陷需要治愈。

顺便说一句,将“-O”标志添加到上述命令将导致输出文件通过 google 闭包编译器,其路径预计在“~/compiler.jar”中。IE -

./bin/amberc -O -m Counter st/Examples.st Onefile

将导致最小化的单个 JS 输出文件,这很好。

于 2013-10-23T03:04:37.427 回答