Deployment Amber Smalltalk-为部署创建单个.js文件
这个话题我已经提过好几次了,但我想我没有看到过 最终解决方案 张贴 我尝试了将我所有的Foo.deploy.js、Bar.deploy.js组合成一个 单个.js文件,然后将其包含在loadAmber()调用中。这/似乎/ 工作得相当好,但大部分下载量仍然来自 琥珀色内部构件 在我的申请中,最严重的违规者是: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的大小,我不能做太多,但是对
- 200K-jqueryui
- 95K-内核集合
- 90K-jQuery
- 87K-内核对象
- 50K-帆布
- 40K-MyApp
- 20K-内核类
- 泰勒·克罗伊
代码:
喋喋不休:琥珀色编译器可以做很多事情: 以下命令将编译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
来源:我收到一个琥珀色未定义错误。也许也需要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