[英]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.