JavaScriptソースファイルと同じディレクトリにあるJavaScriptコードにいくつかのJSONファイルを含めたいのですが。
別のJavaScriptファイルを含めたい場合は、単に使用できますrequire
。今、私はJSON を使用readFileSync
し__dirname
て取得していますが、JSONは醜い方法だと思います。
JSONファイルをロードできるようにするrequireに似たものはありますか?
JavaScriptソースファイルと同じディレクトリにあるJavaScriptコードにいくつかのJSONファイルを含めたいのですが。
別のJavaScriptファイルを含めたい場合は、単に使用できますrequire
。今、私はJSON を使用readFileSync
し__dirname
て取得していますが、JSONは醜い方法だと思います。
JSONファイルをロードできるようにするrequireに似たものはありますか?
回答:
ノードv0.5.x以降では、jsファイルを必要とするのと同じようにJSONを要求できます。
var someObject = require('./somefile.json')
ES6の場合:
import someObject from ('./somefile.json')
.json
が重要なようです
いいえ。readFile
またはreadFileSync
(後者は起動時のみ)を使用します。
または、次のような既存のライブラリを使用します
または、次のようなjsonファイルではなく、jsファイルに設定を書き込みます
module.exports = {
// json
}
__dirname
相対パスを作成するために使用します。
最も一般的な2つの
最初の方法:
let jsonData = require('./JsonFile.json')
let jsonData = require('./JsonFile')
// .jsonを省略しても機能する場合
または
import jsonData from ('./JsonFile.json')
2番目の方法:
1)同期して
const fs = require('fs')
let jsonData = JSON.parse(fs.readFileSync('JsonFile.json', 'utf-8'))
2)非同期
const fs = require('fs')
let jsonData = {}
fs.readFile('JsonFile.json', 'utf-8', (err, data) => {
if (err) throw err
jsonData = JSON.parse(data)
})
注:1)JsonFile.jsonが変更された場合、require( './ JsonFile.json')を再実行しても、新しいデータは取得されません。
2)fs.readFileまたはfs.readFileSyncは常にファイルを再度読み取り、変更を取得します
拡張子.jsonを指定せずに、JSONのrequireを使用することもできます。インポートを変更せずに、ファイル拡張子を.jsに変更できます。
同じディレクトリに./myJsonFile.jsonがあると仮定します。
const data = require('./myJsonFile')
将来的に./myJsonFile.jsonを./myJsonFile.jsに変更する場合、インポートでは何も変更しないでください。