1

私は Node.js で Web サーバーを作成しており、クライアント SDK を含む単一の JavaScript ファイルをクライアントに配信したいと考えています。SDK は基本的に、クライアントが使用できる多くの機能を提供するオブジェクトです。

さまざまなソースから SDK をビルドする必要があります。

  • AngularJS などのサードパーティ ライブラリ
  • .jsサーバー上の静的ファイルに保存されるカスタム コード
  • 実行時にメモリ内で動的に作成されるカスタム コード

カスタム コード (#2) を簡単にテストできるようにするため、およびこのコードをサーバー側と共有できるようにするために、CommonJS に従って記述できれば素晴らしいと思います。

私はクライアント側のために物事をまとめた経験はあまりありませんが、UglifyJS と Browserify については知っています。

いくつかのファイルを連結する (そしておそらくそれらを縮小する) だけの場合は、UglifyJS で何をすべきかを知っていました。CommonJS と互換性のあるものを提供するだけであれば、Browserify をどうすればよいかもわかっていました。私が得られないのはそれらの組み合わせであり、これに加えて需要#3 - 動的に生成されたコードです。

これは基本的に、これに Grunt を使用できないことを意味しますが、実行時にすべてを行う必要があります (なぜこのようにしたいのかについては議論しないでください)。

だから…ちょっと迷った。誰でも私のために物事を明確にするのを助けることができますか? 最終的にクライアントに送信してクライアントが使用できる単一の成果物になるように、これらすべての要素をどのように組み合わせる必要がありますか?

基本的に、クライアントが最終的に受け取るべきものは、 などの多数のグローバル オブジェクトと$angular私自身のcustomオブジェクトですが、これらはすべて 1 つのファイルをロードするだけです。

どうすればこれを行うことができますか?

PS: それが私にとって完全に問題のない純粋なインメモリ ソリューションである場合、結果をサーバー上のディスクに書き込む必要はありません (ファイル システムへの書き込みアクセスが必要ないため、さらに推奨されます)。 .

4

2 に答える 2

1

Imho webpackは、必要なすべての機能を提供します。これは browserify のようなバンドラーですが、より柔軟で拡張性があると思います。webpack は、さまざまなモジュール スタイル (CommonJS、AMD、ES6、または古い学校のグローバル) に依存せず、モジュールにプリプロセッサを適用して連鎖させることができます。これらは(CommonJS 仕様によると)ローダーと呼ばれ、コードを動的に生成するために使用できます。通常、これらは LESS を CSS に、または CSS を JavaScript に変換しますが、あらゆる動的タスクに使用できます。

global とカスタム オブジェクトを提供するに$は、 script-loaderangularを使用できます。これは、指定されたモジュールを従来どおりグローバル コンテキストで実行します。

于 2014-03-26T09:52:54.087 に答える