成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網
最全最豐富的資訊網站

淺析ECMAScript模塊中nodejs如何加載json文件

ECMAScript模塊中node如何加載json文件》下面本篇文章就來給大家介紹一下nodejs在ECMAScript 模塊中加載json文件的方法,希望對大家有所幫助!

淺析ECMAScript模塊中nodejs如何加載json文件

看完這篇文章,你將學到:

1、nodejs 如何加載、解析json文件

2、fs 模塊如何讀取json文件

3、學到import.meta.url

3、學到new URL()

4、學到load-json-file庫

眾所周知,如果是在CommonJS模塊中加載json文件,只需通過require()函數直接加載即可,即能得到json對象。

但是在ECMAScript模塊中直接加載json文件,會報錯,報錯如下:

淺析ECMAScript模塊中nodejs如何加載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文件呢?其實是有兩種方案的:

假設現在有一個json文件:test.json

文件內容如下:

{     "name": "project" }

接下來,在index.js中引入test.json:

一、 通過 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.urlnodejs中返回模塊在本地的file://協議的絕對路徑,例如:file://home/user/main.js, 如果模塊中還有另外一個文件test.js,那么test.js的路徑就是new URL('test.js', import.meta.url)

new URL: 生成file: 協議的對象(對于大多數 fs 模塊函數,pathfilename 參數可以作為使用 file: 協議的對象傳入)。

二、 通過nodejs內置module模塊的createRequire方法實現

import { createRequire } from "module";  const require = createRequire(import.meta.url); const json = require('./test.json');  console.log('[json2]:', json); // 輸出: { "name": "project" }

這種方法是根據nodejs提供的createRequire方法實現。

淺析ECMAScript模塊中nodejs如何加載json文件

三、 24行源碼的第三方庫 load-json-file

load-json-file 是我在npm網站無意間發現的,源碼只有僅僅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 源碼 整體而言相對比較簡單,但是也有很多可以學習深挖的學習的知識點。

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
AV无码AV在线A∨天堂毛片| CHINESE东北嫖妓女HD| 在线观看4480私人影视| 一二三四视频社区在线播放中国| 专干熟肥老妇人视频在线看| XOXOXO性ⅩYY欧美人与人| 成人欧美一区二区三区视频 | 色欲狠狠躁天天躁无码中文字幕 | 欧美少妇XXXXX| 日系女生裸妆素颜| 无码专区国产精品视频| 亚洲人成网站999久久久综合| 中文字幕人妻被公上司喝醉在线| 巴西女人与禽2O2O性论交| 国产高颜值大学生情侣酒店| 精产国品一二三产区区别在哪儿| 久久月本道色综合久久| 人妻三级日本香港三级极97 | 国产精品久久久久久久久鸭无码| 娇妻宾馆被三根粗大的夹击| 两个领导在车里吃我奶| 日本MACBOOKPRO高清| 无遮挡粉嫩小泬久久久久久久动漫 | 亚洲欧美乱综合图片区小说区| 性欧美牲交在线视频| 成熟交BGMBGMBGM日本| 国产又色又爽又刺激视频| 黎朔缠着腰不让他退出微博| 人与畜禽CORPORATION| 小受叫床高潮娇喘嗯啊MP3| 永久免费AV网站| 错位关系C1V1一块五花肉| 国内精品伊人久久久久影院对白| 美女裸体18禁免费网站| 色播久久人人爽人人爽人人片AV| 亚洲国模337P人艺体艺术| CHINA中国人CHINESE| 国产女人乱人伦精品一区二区| 久久亚洲SM情趣捆绑调教| 日韩精品无码一区二区三区视频| 亚洲AV无码专区亚洲AV紧身裤 | 热爆料-热门吃瓜-黑料不打烊 | 少女たちよ在线观看动漫4集免费| 亚洲精品夜夜夜妓女网| JAPANESE失禁潮喷| 欧美性VIDEOS高清精品| 无码H片在线观看网站| 在线观看大片免费播放器| 儿子耕了母亲荒废的田| 久久久精品人妻一区亚美研究所| 日韩乱妇乱女熟妇熟女AV| 亚洲色大成网站WWW| 厨房征服丰满熟妇少妇人妻| 精品综合久久久久久97| 色哟哟最新在线观看入口| 一本一道人人妻人人妻| 国产SM重口调教在线观看| 麻豆E奶女教师国产精品| 偷拍东北熟女BBWW| 97久久久久人妻精品区一| 国产亚洲精久久久久久无码蜜桃| 欧美日韩亚洲中文字幕一区二区三 | 日产精品一线二线三线芒| 亚洲性色AV片在线观看网址| 粉嫩av观看成人网站| 久久夜色精品国产亚洲AV| 无码色偷偷亚洲国内自拍| A区B区C区D区乱码| 久久精晶国产99久久6| 婷婷97狠狠成人免费视频| 97久久国产亚洲精品超碰热| 激情综合婷婷丁香五月俺来也| 日日狠狠久久偷偷四色综合免费| 伊人久久大香线焦AV综合影院| 国产精品99久久精品| 欧美日韩精品一区二区在线视频| 亚洲GAY片在线GV网站| 丰满爆乳一区二区三区| 男人扒开女人下部添高潮的视频| 亚洲国产精品久久久久秋霞1| 丰满的女房东6剧情| 女口述第一次放进去的感受| 亚洲精品无码AV中文字幕电影网| 高h乱好爽要尿了潮喷了| 男人扒开女人的腿做爽爽视频 | 粉嫩粉嫩一区性色AV片| 男男腐啪GⅤ小受无套进入 | 无码人妻斩一区二区三区| 宝贝对着镜子CAO好不好| 久青草国产97香蕉在线影院| 欧美成人精品A∨在线观看| 亚洲精品国产情侣AV在线| 国产精品V无码A片在线看| 人人爽人人爽人人片AV东京热| 与子敌伦刺激对白播放| 经典日韩成人网站在线观看| 无码天堂亚洲国产AV麻豆| 大象成品W灬源码1| 欧美人与禽Z0ZO牲伦交| 在线永久免费观看黄网站| 久久66热人妻偷产精品9| 亚洲AV成人一区二区三区在线观| 国产办公室秘书无码精品99| 日本AⅤ精品一区二区三区日 | 少妇BBW搡BBBB搡BBBB| 锕锕锕锕锕锕好多水APP网站| 免费观看添你到高潮视频| 亚洲性高清SUV| 精品人妻潮喷久久久又裸又黄| 午夜精品久久久久久99热| 国产成人一区二区三区| 色偷偷偷久久伊人大杳蕉| 超碰CAOPORON入口| 人妻无码久久精品| MM1313亚洲精品无码久久| 女人不怕粗短就怕蘑菇头什么意| 在线观看成人片韩剧| 久青草国产97香蕉在线视频| 一本色道久久88加勒比—综合| 久久精品国产99国产精品导航| 亚洲精品TY久久久久久久久久| 国内精品久久久久久久久电影网 | 日本久久久久久久久精品| JIZZJIZZJIZZ亚洲热| 欧美午夜精品一区二区蜜桃| AV色综合久久天堂AV色综合在 | A级毛片免费观看在线| 免费无码又爽又刺激毛片| 中文字幕,久热精品,视频在线| 噜噜狠狠色综合久色AⅤ五区| 一二三四在线观看免费高清视频| 久久久久久AV无码免费网站| 亚洲亚洲人成综合网络| 久久久久无码精品国产AV蜜桃1| 一本到无码AV专区无码| 乱色精品无码一区二区国产盗| 中日韩人妻中文字幕视频在线| 免费拗女网站1300部| 99精产国品一二三产区区别网站 | 免费无码AV污污污在线观看| 696969C大但人文艺术作品| 欧美成人AⅤ高清免费观看| KDBACC小蝌蚪新版本的特点| 日产乱码一二三区别免费| 国产H视频在线观看| 无码无套少妇毛多18PX| 黑人双人RAPPER的特点| 日日日日做夜夜夜夜无码| 丰满顿熟妇好大BBBBBΒ| 无码99久热只有精品视频在线观 | 性VIDEOSTV另类极品| 豪妇荡乳1一5潘金莲2在线| 亚洲日韩精品A∨片无码加勒比| 浪货两个都满足不了你J视频| 97在线 | 亚洲| 日韩AⅤ人妻无码一区二区| 国产成人久久AV免费| 亚洲AV无码日韩精品影片| 久久精品国产亚洲AV麻豆甜 | 国产精品无码一区二区三区不卡| 亚洲第一极品精品无码久久| 久久亚洲精品中文字幕| FREEXXXXHD国语对白| 熟女乱色一区二区三区| 国产日产欧产精品精乱了派| 亚洲精品无码久久一线| 蜜臀AV一区二区三区四区| 超高级国王游戏电影| 无码专区丰满人妻斩六十路| 久久99精品久久水蜜桃| 18禁自慰网址进入| 搡老女人老妇女老熟妇| 国产真实伦在线观看| 夜夜躁狠狠躁日日躁视频| 人马畜禽CORPORATION| 国产精品爽黄69天堂A| 一本大道久久A久久综合| 热99RE久久精品| 国产无遮挡又黄又爽不要VIP网| 一二三四在线视频社区8| 人人做人人澡人人爽欧美| 国产乱色精品成人免费视频| 夜夜高潮夜夜爽夜夜爱爱| 人妻一区二区视频| 国产综合精品一区二区三区| 中文在线ずっと好きだった | 国产成人AV综合色| 亚洲熟妇AV一区二区三区浪潮| 黄网站色视频免费观看| 中文字幕肉感巨大的乳专区| 日韩人妻高清精品专区| 火柴人战争遗产破解版| CHINESE熟女老太HD| 羞羞漫画_成人漫画_成人专用| 蜜臀久久99精品久久久久久| 国产AⅤ无码一区二区三区| 亚洲一线二线三线品牌精华液| 日本熟妇人妻XXXXX视频| 精品高潮呻吟99AV无码视频| 爱丫爱丫影院在线观看视频|