繁体   English   中英

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

[英]Amber Smalltalk - Creating a single .js file for deployment

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

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

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

  • 200K - jQuery UI
  • 95K - 内核集合
  • 90K - jQuery
  • 87K - 内核对象
  • 50K - 画布
  • 40K - MyApp
  • 20K - 内核类

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

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

  • R.泰勒克罗伊

代码: 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和所有依赖项。

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

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

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

琥珀版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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM