Deployment Amber Smalltalk-为部署创建单个.js文件

Deployment Amber Smalltalk-为部署创建单个.js文件,deployment,smalltalk,amber-smalltalk,Deployment,Smalltalk,Amber Smalltalk,这个话题我已经提过好几次了,但我想我没有看到过 最终解决方案 张贴 我尝试了将我所有的Foo.deploy.js、Bar.deploy.js组合成一个 单个.js文件,然后将其包含在loadAmber()调用中。这/似乎/ 工作得相当好,但大部分下载量仍然来自 琥珀色内部构件 在我的申请中,最严重的违规者是: 200K-jqueryui 95K-内核集合 90K-jQuery 87K-内核对象 50K-帆布 40K-MyApp 20K-内核类 对于jQueryUI的大小,我不能做太多,但是对

这个话题我已经提过好几次了,但我想我没有看到过 最终解决方案 张贴

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

在我的申请中,最严重的违规者是:

  • 200K-jqueryui
  • 95K-内核集合
  • 90K-jQuery
  • 87K-内核对象
  • 50K-帆布
  • 40K-MyApp
  • 20K-内核类
对于jQueryUI的大小,我不能做太多,但是对于 琥珀色内核的大小,以及获取它们所需的HTTP请求数。 唯一的问题是我不知道如何告诉Amber不要自动停止 获取Kernel-Objects.deploy.js等

有没有人能够将他们的整个琥珀色javascript打包成一个.js 成功存档

  • 泰勒·克罗伊

代码:
喋喋不休:

琥珀色编译器可以做很多事情:

以下命令将编译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编译器并将其放在主目录(~/compiler.jar)中,然后运行(注意-O选项):

然后在html中,您只需输入:

<script src='amber-deploy.js'></script>

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

./bin/amberc -m Counter st/Examples.st Onefile
。。。在这里,我为“计数器”示例创建了一个文件分发,而没有实际实例化计数器。输出文件将是“Onefile.js”,其中包含必需的琥珀色内核类以及反例类

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

顺便说一句,向上面的命令like添加“-O”标志将导致输出文件通过googleclosure编译器传递,其路径应在“~/compiler.jar”中。i、 e-


将生成一个最小化的JS输出文件,这很好。

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

:

关键是构建文件。所有用于直接进入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

发布的0.13琥珀色版本加载的唯一文件 琥珀色版本0.13已发布

在这个版本中,命令

amber init
在许多其他文件中创建Gruntfile.js()

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

这意味着对于部署,您只需要

  • index.html
  • the.js
放入目标目录

.js只包含JavaScript。没有闲聊来源

您可以切换回开发模式。您将获得.js的短版本


来源:

我收到一个琥珀色未定义错误。也许也需要boot.js?那么amber.js本身呢?除了您自己的代码之外,还需要加载什么?我假设这个答案对于当前的开发版本不再有效,对吗?这种方法对于版本0.12不再有效。请参阅琥珀色邮件列表。建议:将此作为琥珀色版本0.12.4的新问题发布。自2013年10月以来,其他事情发生了变化。@Hannes-是的,但根据的自述,似乎可以将每个外部依赖项分解为一个文件。HTHAmber 0.13已经发布。现在使用预定义的“grunt deploy”命令。请注意,截至2014年12月和琥珀色版本0.13,当前0票的最后一个答案是正确的。
(sudo) npm -g install amber-cli@~0.13.0  
({
    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"
})
amber init
 grunt deploy
grunt develop