web-dev-qa-db-ja.com

requirejsは静的JSONファイルをロードします

簡単なデータを保存するためにjsonドキュメントを保持し、このドキュメントを必要とし、define()呼び出しでjsonオブジェクトを使用して使用できるようにします。これは「非同期」呼び出しではありません。開発用のはずですが、コンテンツが動的であるAPIからの実際の非同期呼び出しとは異なり、ビルド時にファイルをコンパイルしたいと思います。

51
ThomasReggi

これを行う最も簡単な方法は、requirejs jsonプラグインを使用することです。これにより、ファイルをビルドに含めることもできます。

https://github.com/millermedeiros/requirejs-plugins
例を次に示します。

require(['json!someFile.json'], function(data){
  ...
})
// It does not actually need to be a .json extension, this will work to:
require(['json!someFile'], function(data){
  ...
})

ファイルをr.jsビルドに含めて、main/js bootstrapファイルで常に最適化されるようにする場合は、includeオプションに追加する必要があります

このためにrequire js textプラグインを使用することもできます。通常はテンプレートファイルの読み込みに使用されますが、.jsonファイルの読み込みにも使用できます。

https://github.com/requirejs/text

JSON.parseを使用して、自分のコンテンツを解析する必要があります
(含める json2.js 必要に応じて古いブラウザーのサポートを提供する)

Jsonを独自のdefine()でラップすることもできます。これにより、従来のように単に要求することができますが、実際の.jsonファイルに制限されている場合は機能しません。

もう1つのオプションは、jqueryなどを使用して、テキストファイルを自分のajax経由で要求することです。

$.get('somefile.json', function(data) {
  // do something with your data
});
62

これを回答として投稿する理由:

  • 質問をしているユーザーが実際にソリューションとして使用したものです
  • 常にJSON.parse()を実行するため、テキストを必要とするよりも見たほうがきれいです。

RequireJSにはJSONプラグインがあります。構文は単純です:

require(['json!someData.json'], function(data){
  ...
})
9
mikemaccana