簡體   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