問題タブ [grunt-contrib-requirejs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
requirejs - grunt-requirejs コンパイルを使用する場合の「そのようなファイルはありません」エラー
require.js ビルドに関するほとんどの問題は、ファイル構造と相対パス参照に関係しているため、トラブルシューティングを容易にするためにhttps://github.com/ttback/requirejs-exampleにレポを作成しました。
エラーは、うなり声を実行すると、取得されますno such file or directory requirejs-example/src/js/bundle/js/bundle/utils.js
これは baseUrl が間違っているためです。したいのですが、Gruntfileに基づいてsrc/
依存関係を見つけるため、設定できません。src/js/bundle/main.js
したがって、ベースは にありsrc/js/bundle
ます。現在の main.js は index.html で動作します。utils.js への相対パスを main.js 内から変更する.js/bundle/utils.js
と./utils.js
、アプリが壊れます。
私が持っているもので grunt-requirejs を動作させる方法はありますか?
requirejs - grunt-contrib-requirejs を使用してすべての JS を 1 つのファイルに縮小しようとしています
次のディレクトリ構造があります(関連するビットのみ):
Gruntfile.js には以下が含まれます。
app.js には以下が含まれます。
指示したときに app.js と require.js だけでなく、必要なすべての JavaScript を build/script.jsにコピーするように設定するにはどうすればよいですか(jQuery を使用しようとするとエラーが発生します)。また、モジュールを Gruntfile に追加せずに、script.js に追加するだけでモジュールを追加できるようにしたいと考えています。
javascript - requirejs オプティマイザ - アプリケーションの最適化に助けが必要
grunt-contrib-requirejs を使用して連結および縮小しようとしている大規模な JavaScript アプリケーションがあります。Aura フレームワークを使用します。bower を使用して、他のリポジトリから依存関係をメイン アプリケーションに取り込みます。
これがアプリの構造です
main.js:
現在のrequirejsタスク構成:
これにより app/main とその依存関係が連結されますが、実行しようとすると次のようなエラーが発生し
ます。アンダースコアは、含まれる多くのウィジェットの依存関係です。
r.js の例でさまざまなオプションを広範囲に試し、答えを見つけようとして多くのスタックオーバー フローの問題を読みました。
これを次の構造の 1 つの縮小ファイルに組み込む方法についてアドバイスが必要です。
更新 #2 : 正しいファイル構造
更新
上記のエラーを修正する shim を
含めunderscore
ましたが、まだ別のエラーが発生しています。
これは最小化されたファイルに含まれているため、そのファイルが見つからない理由がわかりません。
更新 #3
上記の定義は、最適化ツールによって生成されたファイルからのものです。そのモジュール の元の定義はcore/app/main.js
次のようになります。
coffeescript - RequireJSを実装しながらCoffeeScriptで開発を続ける
CoffeeScript と Grunt を使用する非常に大きな単一ページ アプリケーションに RequireJS を実装したいと考えています。モジュール (サービス、バックボーンなど) ごとに個別のファイルがあります。
RequireJS の実装は非常に簡単です。私の主な問題は、アプリケーションのサイズと CoffeeScript の空白の感度にあります。RJS を実装しながら、新しい機能を継続的に開発できる必要があります。これができない理由は、define 呼び出しですべてのファイルをラップし、ファイルを再タブ化する必要があるためです。このコードをリベースしようとすると、タブ移動が原因で大規模なマージ競合が発生します。RJS より前に新機能やバグ修正が導入されている可能性があるため、これらの問題をすべて解決する時間は誰にもありません。
私はいくつかの可能な解決策を調査しました:
開発を停止し、すべてを再タブします。ファイルがタブ化され、コードが実際に RJS で動作するまで開発が停止されるため、これは最悪です。
CommonJS パターンを使用し、RJS 最適化前の RJS CommonJS コンバーターを使用します。ハッキーなようです。
- CoffeeScript
backtick
機能を使用して、標準の JavaScript モジュール パターンで CoffeeScript クラスをラップします。次に、CoffeeScript クラスの「モジュール」ラッパーに依存関係を渡し、ファイルの RJS 呼び出し内で「モジュール」を初期化します。
編集:垂直構造に関するヒントと、関数の引数をそのように渡す方法(コンマなし)を紹介してくれてありがとう。私たちのプロジェクトは構造が非常に似ています (残念ながら現時点では grunt-contrib-coffeee が lint を実行することを除いて)、単一のファイルをコンパイルするためのカスタム ウォッチ タスクも作成しています (vs. glob パターン)。
この非常に基本的な例を考えてみましょう:
view.coffee
:
通常のプロセスは、RJS で次のようなことを行うことです。
クラス全体がどのように再タブ化されているかに注目してください。View
私がrequireを並行して実装しようとしているときに、開発者の誰かがやって来てクラスを変更した場合、Gitはこれを嫌うでしょう。
バックティックのアイデアは機能しません。グローバルな問題を回避できません。
私の最善の策は、すべてのアプリケーション機能をまとめてマージし、すべてのファイルに必要な 2 つのスペースをすべて 1 つのコミットで再タブ化するために一時停止することだと思います。ファイルの残りの部分がそのパターンに従っている限り、CoffeeScript はインデントの開始位置 (列 0 と列 2) を気にしないようです。このように、RJS をスライドインして段階的に実装し、解決できないマージの競合を防ぐことができるはずです。