ホームページ  >  記事  >  ウェブフロントエンド  >  nodejs が ECMAScript モジュールに json ファイルをロードする方法の簡単な分析

nodejs が ECMAScript モジュールに json ファイルをロードする方法の簡単な分析

青灯夜游
青灯夜游転載
2021-12-07 18:49:042452ブラウズ

ECMAScript モジュールnodejson ファイルの読み込み方法》次の記事では、nodejs が ECMAScript モジュールに json ファイルを読み込む方法を紹介します。

nodejs が ECMAScript モジュールに json ファイルをロードする方法の簡単な分析

この記事を読むと、次のことがわかります:

1、nodejs json ファイルを読み込んで解析する方法

2. fs モジュールで json ファイルを読み取る方法

##3. import.meta.url について学ぶ

##3. 新しい URL()

について学ぶ4.load-json-file ライブラリを学習します。

ご存知のとおり、
CommonJS モジュール

json ファイルをロードする場合は、 # を渡すだけです。 ##require ()関数を直接ロードして、json オブジェクトを取得できます。 ただし、json ファイルを ECMAScript モジュール

に直接ロードすると、次のようなエラーが報告されます。エラーは次のとおりです:

##まず、nodejs が ECMAScript モジュールに json ファイルをロードする方法の簡単な分析ESM

モードを有効にします。実際、公式ドキュメント (http://nodejs.cn/api/esm.html#introduction) にも次の説明があります。

#Node.js はデフォルトで使用されます。JavaScript コードは CommonJS モジュールとして扱われます。作成者は、.mjs

ファイル拡張子、

package.json "type" フィールド、または --input-type フラグを介して Node に通知できます。 .js は JavaScript コードを ECMAScript モジュール として扱います。では、ECMAScript モジュール

json
ファイルを読み込むにはどうすればよいでしょうか?実際、解決策は 2 つあります。

現在、json ファイルがあるとします。 test.json

ファイルの内容は次のとおりです。

{
    "name": "project"
}
次に、test.json

:

index.js に導入します。 1. fs を通じて json ファイルを読み取ります。

ファイル システム

import { readFile } from "fs/promises"; // 以promise的方式引入 readFile API

const json = JSON.parse(
    await readFile(new URL('./test.json', import.meta.url))
)

console.log('[json1]:', json); // 输出: { "name": "project" }
説明: await

:

ECMAScript のトップレベル

await

提案 によると、 await キーワード モジュール内のトップレベル (非同期関数の外部) で使用できます;import.meta.url:nodejs

Returnsモジュールのローカル

file:/ /プロトコルの絶対パス。例: file://home/user/main.js (別のファイルがある場合) testモジュール内の .js を選択し、 test.js のパスは new URL('test.js', import.meta.url); 新しい URL: 生成 file:

プロトコルのオブジェクト (ほとんどの

fs モジュール関数の場合、path または filename パラメータは file: として使用できます (プロトコルのオブジェクトが渡されます)。 2. nodejs 組み込み module

モジュール

import { createRequire } from "module";

const require = createRequire(import.meta.url);
const json = require('./test.json');

console.log('[json2]:', json); // 输出: { "name": "project" }
createRequire メソッドによる実装 このメソッドは、以下に基づいています。 on nodejs によって提供される createRequire

メソッドが実装されます。

3. 24 行のソース コードを含むサードパーティ ライブラリ

load-json-file

nodejs が ECMAScript モジュールに json ファイルをロードする方法の簡単な分析

load-json -file npm Web サイトで偶然発見しましたが、ソース コードは次のように 24 行だけです:
import {readFileSync, promises as fs} from 'node:fs';

const {readFile} = fs;

const parse = (buffer, {beforeParse, reviver} = {}) => {

	// Unlike `buffer.toString()` and `fs.readFile(path, 'utf8')`, `TextDecoder`` will remove BOM.
        // 这里对buffer进行转义,没有用`buffer.toString()`和`fs.readFile(path, 'utf8')`,是因为`new TextDecoder().decode(buffer)`这种方式可以删除字节顺序标记(BOM)
        
        // 解码 buffer 并返回字符串
	let data = new TextDecoder().decode(buffer);
        
        // 在parse解析之前对字符串进行处理
	if (typeof beforeParse === 'function') {
		data = beforeParse(data);
	}

	return JSON.parse(data, reviver);
};

// 导出异步方法
export async function loadJsonFile(filePath, options) {
        // 如果未指定编码,则返回原始缓冲区。
	const buffer = await readFile(filePath);
	return parse(buffer, options);
}

// 导出同步方法
export function loadJsonFileSync(filePath, options) {
        // 如果未指定编码,则返回原始缓冲区。
	const buffer = readFileSync(filePath);
	return parse(buffer, options);
}

load-json-file ソース コード 全体としては、比較的シンプルですが、できることはたくさんあります。知識ポイントを深く掘り下げることを学びます。

ノード関連の知識の詳細については、

nodejs チュートリアル を参照してください。 !

以上がnodejs が ECMAScript モジュールに json ファイルをロードする方法の簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjuejin.cnで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。