問題タブ [requirejs-text]
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.
javascript - ノックアウト テンプレートが RequireJS と Require Text を使用する IE 8 で機能しない
IE8 を使用している場合、JavaScript でツリー オブジェクトをレンダリングする際に問題があります。HTML ページに階層を記述するには、ノックアウト テンプレートを使用してツリー オブジェクトを再帰的にレンダリングする必要があります。
ノックアウト コンポーネントを使用して、requirejs と require.text を使用して最終結果をレンダリングしています。
コンポーネントは、IE8 を除くすべてのブラウザーで正常に動作しています。IE8 を使用すべきではないことはわかっていますが、これは企業のイントラネット サイトであり、現在すべてのブラウザーを簡単にアップグレードすることはできません。テンプレートを使用して単純なリストに数字のリストのみをレンダリングするようにコードを単純化しました。
test.vm.js の ViewModel は次のとおりです。
test.view.js のビューは次のとおりです。
最後に、コンポーネントを呼び出す HTML ページ:
DOM をブラウジングして確認できる主な違いは、テンプレートが他のブラウザーで完全にレンダリングされることです。
IE8では空です
テンプレート「testTemplate」をビュー ファイルの外に配置し、HTML ページに直接配置すると、コンポーネントが動作し始めます。テンプレートが空であるため、コンポーネントが機能していません。HTMLに「testTemplate」を配置することは部分的な解決策ですが、ビューファイル内に配置すると機能しない理由を見つける必要があります。
更新: シナリオを単純化しました。どうやら、コンポーネント登録の「テンプレート」パラメーターに何らかのバグがあるようです。テンプレートが script タグで囲まれている場合、コンテンツは無視され、ページに表示されません。<template>
タグを使用するように変更すると、コンポーネントはテンプレート内のデータ バインディングを解決しようとし、エラーが表示されます。テンプレート タグはバインディングでは無視されるはずですが、コンポーネントはタグを無視しません。テンプレートを textarea タグで囲み、display:none を配置することで、最後に読んだタグをテンプレートで無視するように構成して、一時的なハックを試みました。コンテンツはすべてのブラウザーでレンダリングされるようになりましたが、このソリューションは気に入りません。
html - RequireJS テキスト プラグイン: 他のドメインから HTML を読み込めません
require.js を使用して、別のドメインからいくつかの html を取得したいと考えています。CORS ポリシーではこれが簡単に許可されないことはわかっています。注:すべての JS および CSS ファイル ( require-cssプラグインを使用した css) が他のドメインから読み込まれるように、Web サーバー ( Access-Control-Allow-Origin "*"およびその他のディレクティブを使用) と require.js を構成しました。予想どおり-htmlをフェッチするだけで問題が発生します。しかし、ブラウザーのネットワーク プロトコルでは、html コンテンツも読み込まれていることがわかります。ただし、このコンテンツは require 関数に渡されません! ブラウザはコンテンツを取得しますが、require.js はそれをパラメータとして提供しません...
私の構成:
2 つの注意点:useXhr
構成はrequire.js から取得されます。テキスト プラグインはファイル名に「.js」を追加しますが、存在するかどうかに違いはありません。?
htmlTemplate パスにa を追加しました。これにより、.js
は URL に追加されず、ブラウザーは html コンテンツをロードしますhtmlTemplate
。
私に何ができる?require.js オプティマイザーを使用すると、生成されたファイルにこの問題が発生しなくなることを読みました (ただし、機能します...)。しかし、編集ごとに最適化せずに JS を開発する必要があります。
更新:解決策が1つ見つかりましたが、誰かが「正しい」解決策を提供できれば幸いです。
javascript - 未処理の拒否エラー: モジュールの読み込みタイムアウト: template-registry-entry
プラグインを作成しました。そのローカル デモが動作します。
https://github.com/shaunluttin/aurelia-open-id-connect/tree/master/src
ただし、プラグインを別のプロジェクトにインストールすると、この一連の 2 つのエラーで失敗します。これは、open-id-connect-user-block.html
view/view-model コンポーネントに関する問題です。
キャッチされていない TypeError: plugin.load は関数ではありません
未処理の拒否エラー: モジュールの読み込みタイムアウト: template-registry-entry!aurelia-open-id-connect/open-id-connect-user-block.html_unnormalized2,template-registry-entry!aurelia-open-id-connect/open -id-connect-user-block.html,text!aurelia-open-id-connect/open-id-connect-user-block.html_unnormalized3,text!aurelia-open-id-connect/open-id-connect-user -block.html http://requirejs.org/docs/errors.html#timeout
私たちが試したこと
コンポーネントをグローバル リソースとしてプラグインのconfigure
関数に追加します。
消費するアプリケーションのconfigure
関数にプラグインを追加します。
消費するアプリケーションのaurelia.json
ファイルにプラグインを追加します。
requirejs/text
プラグインを に設定しますstub:false
。
これにより、404 の新しいエラーが作成されます。
未処理の拒否エラー: src/../node_modules/aurelia-open-id-connect/dist/amd/es5/open-id-connect/open-id-connect-user-block.html HTTP ステータス: 404
私たちが読んだこと
GitHub でこの問題を確認しました:通常の Aurelia プラグインをインストールしています。
- 2016 年 7 月 3 日、Aurelia CLI は HTML テンプレートを含むプラグインをサポートしません。
- 7 月 17 日、バージョン 0.16.1 で動作するはずでした。0.18.0 を使用していますが、動作しません。
- 7 月 28 日、テキストを動的に要求する
stub:false
には、text
プラグインでの設定が必要ですaurelia.json > build.loader.plugins
。