57

いくつかの単純なデータを格納するためにJSONドキュメントを保持したいのですが、このドキュメントを要求し、define()呼び出しでJSONオブジェクトを使用して使用できるようにします。これはasync電話ではありません。開発用である必要がありますasyncが、コンテンツが動的であるAPIからの実際の呼び出しとは異なり、ビルド時にファイルをコンパイルしたいと思います。

4

2 に答える 2

68

これを行う最も簡単な方法は、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ブートストラップファイルで常に最適化されるようにする場合は、ファイルをincludeオプションに追加する必要があります。

これにはrequirejstext pluginを使用することもできます。これは通常、テンプレートファイルの読み込みに使用されますが、.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
});
于 2013-03-09T18:06:21.973 に答える
10

これに答えを投稿する理由は次のとおりです。

  • それは、質問をするユーザーが実際に解決策として使用したものです
  • 常にJSON.parse()を実行するため、テキストが必要な場合よりも見やすくなります。

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

require(['json!someData.json'], function(data){
  ...
})
于 2014-11-17T10:40:05.797 に答える