成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院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號
伊人色综合网一区二区三区 | 寡妇下面好黑好毛| 免费A级毛片无码A∨蜜芽| 男女无遮挡XX00动态图1| 欧洲亚洲国产成人综合色婷婷| 九九久久精品无码专区| 国产CHINESE中国HDXX| 国产欧美精品一区二区三区-老狼| 精产国品一二三产品区别在哪里| 黎朔缠着腰不让他退出微博| 全免费A敌肛交毛片免费| 天堂VA在线高清一区| 亚洲国产成人A精品不卡在线| 一本大道香蕉久中文在线播放| 97AV麻豆蜜桃一区二区| 国产AⅤ爽AV久久久久成人精品| 国色天香A区与B区| 男吃奶玩乳尖高潮视频午夜| 色欲人妻Av一二区二区三区| 亚洲VA欧美VA国产VA综合| 中文无码乱人伦中文视频在线V| 草棚CAOPORON已满18进| 国产手机在线精品| 国产精品久久久久免费A∨| 公交车大龟廷进我身体里| 黑人粗大猛烈进出高潮视频| 美女扒开裤衩让男人桶爽| 日韩精品无码人成视频| 亚洲成成熟女人专区| 996久久国产精品线观看| 国产成人精品无码A区在线观看| 精品一区二区三区| 人妻夜夜爽天天爽三区麻豆AV网| 亚洲 中文字幕 日韩 无码| 中文无码一区二区不卡ΑV| 东京热人妻无码人AV| 精品亚洲国产成人| 日本欧美大码A在线观看| 亚洲爆乳WWW无码专区| CHINA中国人CHINESE| 国产沙发午睡系列999| 男女无遮挡高清视频免费看| 丝瓜草莓榴莲向日葵秋葵| 为了撞上你1∨1SC| 免费A级毛片18以上观看精品| 日日摸夜夜添夜夜添无码免费视频| 亚洲AV午夜成人片动漫番| YSL千人千色8610| 在线观看AV网站永久免费观看| 粗大黑人巨精大战欧美成人| 久久精品国产99国产精品导航| 日韩一卡2卡3卡4卡新区亚洲| 亚洲日产精品一二三四区| 在办公室被C到呻吟的动态图| 豆国产93在线 | 亚洲| 久久久久亚洲AV成人网人人网站| 十八18禁国产精品WWW| 在线观看国产精选免费| 国产毛片毛多水多的特级毛片| 欧美疯狂3p群体交乱视频丨zu| 无码中文字幕日韩专区 | 老头猛挺进小雯的体内视频 | 无码AV大香线蕉| 777成了乱人视频| 狠狠噜天天噜日日噜| 日韩人妻潮喷中文在线视频| 又硬又大又长又粗又深| 国产伦精品一区二区三区免费| 欧洲熟妇色XXXX欧美老妇多毛| 亚洲熟妇无码八AⅤ在线播放| 中国鲜肉GAY高中XX禁18网| 国产乱码精品一区二区三区四川人| 欧美成人V片观看| 亚洲人成影院在线无码按摩店| 国产FREEXXXX性麻豆| 欧洲美女与动交ZOZ0Z| 野花影视大全在线西瓜在线播放| 国产精品一区二区久久| 人妻精品久久无码专区涩涩| 无码H片在线观看网站| GAY成年男人露J网站| 国产成人无码区免费A∨视频网站 国产成人无码免费视频在线 | 亚洲A∨无码一区二区三区| 成年无码AV片完整版| 能让我流水水的一千字| 亚洲乱码日产精品BD在线下载| 2020国产亚洲美女精品久久久| 精品国产精品久久一区免费式 | 欧美一性一乱一交一视频| 熟妇人妻精品一区二区三区颏| 91人妻中文字幕在线精品| 久久精品国产亚洲AV网站| 亚洲AV无码国产精品色午友情链 | 国产亚洲美女精品久久久| 三个男人换着躁我一个| FREEⅩ性CHINESE中国| 老湿机69福利区无码| 亚洲人成无码网WWW| 国精产品一区一区三区有限在线| 体型差糙汉乖乖女| 尝到了甜头两人每天都会想方设法 | 久久久亚洲欧洲日产国码是AV| 亚洲A级成人无码网站| 国产精品无码永久免费888| 色偷偷88888欧美精品久久久| 爱丫爱丫在线影院| 欧洲无码精品A码无人区| 2021自拍偷在线精品自拍偷| 里番本子纯肉侵犯肉全彩无码| 亚洲一区二区三区在线观看网站 | 久久精品国产亚洲AV麻豆AⅤ| 亚洲AV成人无码网站不卡| 国产精品午夜无码AV体验区| 天天想你在线观看完整版电影| 东京热无码AV男人的天堂| 日本真人无遮挡啪啪免费| 办公室跪下拉开拉链吃应用的优点 | 人妻无码一区二区三区视频| www.性xxxxx| 人妻无码全彩里番ACG视频| A∨变态另类天堂无码专区| 欧美丰满少妇内射XXXX免费| AV国内精品久久久久影院| 欧美大肚子孕妇疯狂作爱视频 | 日本国产网曝视频在线观看| 成 人 黄 色 网 站 18| 日产精品久久久久久久| 动漫高H纯肉无码视频在线观看| 色欲精品国产一区二区三区AV | 人妻少妇88久久中文字幕| www啪啪小白浆内射无码| 人妻av一区二区三区精品| MD豆传媒APP网址| 日产精品久久久久久久| 国产AⅤ激情无码久久男男剧| 天天看片在线完整版| 国产精品你懂的在线播放| 亚洲AⅤ永久无码毛片牛牛影视| 狠狠色噜噜狠狠狠7777奇米| 亚洲色AV天天天天天天| 老牛天天晚上夜噜噜噜| 99福利资源久久福利资源| 人妻无码熟妇乱又伦精品| 夫妻毛片盗摄国产内射| 无码专区国产精品第一页| 国产精品久久久久精品日日| 亚洲AⅤ无码日韩AV中文AV伦| 精品国产一区二区三区色欲| 夜夜爽夜夜叫夜夜高潮| 嫩小槡BBBB槡BBBB槡| 成人免费午夜无码视频| 偷拍 亚洲 欧洲 综合| 黑人双人RAPPER的特点| 一对浑圆的胸乳被揉捏动态图 | 97夜夜澡人人爽人人喊中国片| 人鲁交YAZHONGHU| 国产激情大臿免费视频| 亚洲VA久久久噜噜噜久久无码| 久久久亚洲熟妇熟女| AAA少妇高潮大片免费看088| 色偷偷噜噜噜亚洲男人| 国产女主播高潮在线播放| 亚洲香蕉成人AAAV在线网站| 欧美成人在线最新| 粉嫩泬一区二区三区| 亚洲AV无码二区鸳鸯影院| 乱人伦中文字幕成人网站在线| 暗交小拗女一区二区三区电影| 无码人妻一区二区三区免费视频| 精品无码国产自产拍在线观看 | 国产99视频精品免费视看6| 亚洲AV成人无码一区二区三区在| 久久人人爽人人爽人人片Ⅴ| JZZJZZ免费观看视频| 无码精品尤物一区二区三区| 久久久久国色AV∨免费看| JAPANESEHD熟女熟妇| 无码国内精品人妻少妇| 久久伊人少妇熟女大香线蕉| 成人免费一区二区三区视频| 亚洲VA久久久噜噜噜久久天堂| 欧美VPSWINDOWS另类| 国产精品SP调教打屁股| 野花在线高清视频| 日韩国产成人无码AV毛片蜜柚 | 亚洲爆乳AAA无码专区| 男人边吃奶边做呻吟免费视频| 国产成人无码精品一区在线观看| 亚洲一区二区三区高清AV| 人人妻人人爽日日人人 | 亚洲欧洲国无码成人片| 人妻少妇精品无码系列| 国产凸凹视频一区二区| AV无码精品一区二区三区| 性一交一乱一伦一在线小视频| 男女上下拱试看120秒| 国产无遮挡裸体免费视频| AAA欧美色吧激情视频| 亚洲AV成人在线| 欧美综合自拍亚洲图久青草|