Amber Smalltalk - 创建单个.js文件以进行部署

时间:2012-03-28 16:26:58

标签: deployment smalltalk amber-smalltalk

我已经看过这个话题了几次,但我认为我没见过 确定的解决方案 帐。

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

在我的申请中,规模最大的罪犯是:

  • 200K - jQuery UI
  • 95K - Kernel-Collections
  • 90K - jQuery
  • 87K - Kernel-Objects
  • 50K - 画布
  • 40K - MyApp
  • 20K - Kernel-Classes

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

是否有人设法将他们的整个Amber javascript打包成单个.js 文件成功?

  • R上。泰勒克罗伊

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

4 个答案:

答案 0 :(得分: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 选项):< / p>

./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>

答案 1 :(得分:3)

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

To load 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加载的唯一文件

答案 2 :(得分:1)

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

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

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

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

将“-O”标志添加到上述命令中会导致输出文件通过谷歌闭包编译器传递,其路径应该在“〜/ compiler.jar”中。即 -

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

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

答案 3 :(得分:1)

Amber版本0.13发布

Amber Version 0.13已经released

在此版本中命令

amber init

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

使用

 grunt deploy
命令行上的

您的名为the.js的JavaScript文件已更改为包含部署所需的所有内容。

这意味着部署只需要

  • index.html
  • the.js

放入目标目录。

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

grunt develop

切换回开发模式。您会得到the.js

的简短版本

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