9

このトピックが数回出てくるのを見てきましたが、決定的な解決策が投稿されているのを見たことはないと思います.

すべての Foo.deploy.js、Bar.deploy.js を単一の .js ファイルに結合し、それを loadAmber() 呼び出しに含めるルートを試しました。これはかなりうまく機能しているように見えますが、ダウンロード サイズの大部分は依然として Amber 内部からのものです。

私のアプリケーションでは、サイズの最悪の違反者は次のとおりです。

  • 200K - jQuery UI
  • 95K - カーネルコレクション
  • 90K - jQuery
  • 87K - カーネルオブジェクト
  • 50K - キャンバス
  • 40K - マイアプリ
  • 20K - カーネルクラス

jQuery UI のサイズについてはあまりできませんが、Amber コアのサイズと、それらを取得するために必要な HTTP 要求の数については、多くのことを行うことができます。唯一の問題は、Kernel-Objects.deploy.js などを自動的にフェッチしないように Amber に指示する方法がわからないことです。

Amber javascript 全体を単一の .js ファイルにうまくパッケージ化できた人はいますか?

  • R・タイラー・クロイ

コード: http://github.com/rtyler おしゃべり: http://twitter.com/agentdero

4

4 に答える 4

6

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>
于 2012-04-05T15:36:32.983 に答える
3

Amber 0.13 以降では、RequireJS オプティマイザーを使用して、独自のコード、Amber、およびすべての依存関係を含む 1 つの最小化された JS ファイルを作成できます。

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 からロードする必要がある唯一のファイルです。

于 2014-07-30T22:27:42.110 に答える
1

Amber バージョン 0.13 がリリースされました

アンバー バージョン 0.13 がリリースされました。

このバージョンでは、コマンド

amber init

他の多くのファイルの中に Gruntfile.js ( http://gruntjs.com/ )を作成します。

 grunt deploy

コマンド ラインで呼び出される JavaScript ファイル the.jsは、展開に必要なすべてのものを含むように変更されます。

これは、展開に必要なだけであることを意味します

  • index.html
  • the.js

ターゲットディレクトリに配置します。

the.jsJavaScript のみが含まれます。Smalltalk ソースはありません。

grunt develop

開発モードに戻ります。あなたはの短いバージョンを取得しますthe.js

ソース: https://github.com/amber-smalltalk/amber/wiki/Deploying-Amber

于 2014-10-15T09:11:21.747 に答える
1

私は呪文は今このようになっていると信じています -

./bin/amberc -m Counter st/Examples.st Onefile

...実際にカウンターをインスタンス化せずに、「カウンター」の例の単一ファイル配布を作成しています。出力ファイルは、必要な amber カーネル クラスと Counter サンプル クラスを含む "Onefile.js" になります。

ただし、Onefile.js を読み込もうとすると、Chrome の JS コンソールと MacOSX の Safari で複数の「最大コール スタック サイズを超えました」というエラーが表示されます。「展開するファイルは 1 つ」というシナリオは現実に近いと思いますが、まだ解決すべき問題がいくつかあります。

ところで、上記のコマンドに「-O」フラグを追加すると、出力ファイルは、パスが「~/compiler.jar」にあると予想される Google クロージャー コンパイラを介して渡されます。すなわち -

./bin/amberc -O -m Counter st/Examples.st Onefile

最小化された単一の JS 出力ファイルになります。これは素晴らしいことです。

于 2013-10-23T03:04:37.427 に答える