[英]Amber Smalltalk - Creating a single .js file for deployment
我已经看过这个话题了几次,但我认为我没有看到任何确定的解决方案。
我已经尝试了将所有我的Foo.deploy.js,Bar.deploy.js组合成单个.js文件的路由,然后将其包含在loadAmber()调用中。 这/似乎/工作得相当好,但大部分下载大小仍然来自Amber内部。
在我的申请中,规模最大的罪犯是:
我不能对jQuery UI的大小做太多 ,但我可以做很多关于Amber核心的大小,以及获取它们所需的HTTP请求的数量。 唯一的问题是我无法弄清楚如何告诉Amber不要自动获取Kernel-Objects.deploy.js等。
有没有人设法将他们的整个Amber javascript成功打包成一个.js文件?
代码: http : //github.com/rtyler Chatter: http : //twitter.com/agentdero
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>
从Amber 0.13开始,您可以使用RequireJS优化器创建一个最小化的JS文件,包括您自己的代码,Amber和所有依赖项。
(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加载的唯一文件
我相信咒语现在应该是这样的 -
./bin/amberc -m Counter st/Examples.st Onefile
...我正在为“Counter”示例创建单个文件分发而不实际实例化计数器。 输出文件将是“Onefile.js”,其中包含必要的琥珀色内核类以及Counter示例类。
但是,当我尝试加载Onefile.js时,我在Chrome和MacOSX上的Safari中的JS控制台中出现了多个“超出最大调用堆栈大小”错误。 虽然我觉得“一个文件要部署”的情景接近现实,但仍有一些疣要愈合。
顺便说一下,将“-O”标志添加到上面的命令会导致输出文件通过谷歌闭包编译器,其路径应该在“〜/ compiler.jar”中。 即 -
./bin/amberc -O -m Counter st/Examples.st Onefile
将导致最小化的单个JS输出文件,这很好。
琥珀版0.13已经发布 。
在这个版本的命令
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.