成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

厲害了,ECMAScript 新提案:JSON模塊

開發 前端
第三階段的一個名為JSON模塊的新提議,提出了一種將JSON導入到ES模塊的方法。現在,我們來看看JSON模塊是如何工作的。

[[442155]]

ECMAScript 模塊系統( import 和 export 關鍵字)默認只能導入 JavaScript 代碼。

但是,將應用程序的配置保存在一個JSON文件中往往很方便,因此,我們可能想直接將JSON文件導入ES模塊中。

長期以來,commonjs 模塊格式支持導入JSON。

好消息是,第三階段的一個名為JSON模塊的新提議,提出了一種將JSON導入到ES模塊的方法。現在,我們來看看JSON模塊是如何工作的。

1.導入 config.json.

假設,我們有一個 config.json 文件,內容如下:

  1.   "name""My Application"
  2.   "version""v1.2" 

如何將 config.json 導入ES模塊?

例如,我們創建一個簡單的Web應用程序,從JSON配置文件中顯示應用程序的名稱和版本。

如果你試圖直接導入 config.json ,Node.js會拋出一個錯誤。

  1. import http from 'http'
  2. import config from './config.json'
  3. http 
  4.   .createServer((req, res) => { 
  5.     res.write(`App name: ${config.name}\n`); 
  6.     res.write(`App version: ${config.version}`); 
  7.     res.end(); 
  8.   }) 
  9.   .listen(8080); 

嘗試運行應用程序時,node.js拋出錯誤 TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".json"

Node.js 在使用 import語句時,默認期望的是JavaScript代碼。但由于JSON模塊的提議,你可以表明你要導入的數據類型:JSON。

在修復應用程序之前,我們先來看看JSON模塊提案有哪些內容。

2. JSON 模塊提案

JSON模塊提案的本質是允許使用常規的import語句在ES模塊中導入JSON數據。

可以通過添加導入斷言來導入JSON內容:

  1. import jsonObject from "./file.json" assert { type: "json" }; 

assert {type: "json"}是一個導入斷言,指示模塊應該被解析和導入為json。

jsonObject變量包含解析file.json的內容后創建的普通JavaScript對象。

一個JSON模塊的內容是使用默認導入的,命名的導入不可用。

JSON模塊也可以動態導入:

  1. const { default: jsonObject } = await import('./file.json', { 
  2.   assert: { 
  3.     type: 'json' 
  4.   } 
  5. }); 

當一個模塊被動態導入時,包括一個JSON模塊,默認的內容在default屬性中可用。

在這種情況下,導入斷言表示JSON類型。但是,有一個更通用的提議導入斷言(目前在第3階段),允許導入更多數據格式,如CSS模塊。

3. 啟用JSON模塊

現在,我們將JSON模塊集成到Web應用程序中:

  1. import http from 'http'
  2. import config from './config.json' assert { type: "json" }; 
  3. http 
  4.   .createServer((req, res) => { 
  5.     res.write(`App name: ${config.name}\n`); 
  6.     res.write(`App version: ${config.version}`); 
  7.     res.end(); 
  8.   }) 
  9.   .listen(8080); 

主模塊現在導入config.json文件,并訪問其值config.name和config.version。

JSON模塊工作在Node.js版本>=17.1中,也可以使用--experimental-json-modules標志啟用Experimental JSON模塊

  1. node --experimental-json-modules index.mjs 

在瀏覽器環境中,JSON模塊從Chrome 91開始可用。

4.總結

默認情況下,ES模塊只能導入JavaScript代碼。

由于JSON模塊的提議,你可以直接將JSON內容導入到ES模塊中。只要在導入語句后使用導入斷言就可以了。

  1. import jsonContent from "./file.json" assert { type: "json" }; 

你可以從Node.js 17.1開始使用JSON模塊,使用實驗性標志--experimental-json-modules,并在Chrome 91及以上版本中使用。

作者:Dmitri Pavlutin 譯者:前端小智 來源:dmitripavlutin 原文:https://dmitripavlutin.com/javascript-json-modules/

 

責任編輯:姜華 來源: 大遷世界
相關推薦

2022-01-11 12:13:33

JavaScript編程語言

2023-08-30 13:23:12

異步編程JavaScript

2018-04-11 14:30:33

2017-02-23 08:00:04

智能語音Click

2018-05-14 22:58:14

戴爾

2021-03-01 12:06:12

Nginx命令Linux

2023-05-06 06:47:46

Bing聊天機器人

2021-11-01 07:50:44

TomcatWeb應用

2020-06-08 17:35:27

Redis集群互聯網

2021-09-17 12:18:53

NginxJavaScript前端

2023-02-03 17:16:33

ECMAScriptAPITC39

2020-03-10 13:35:23

Gihub搜索開源

2022-04-08 08:11:28

Python代碼

2021-06-03 09:30:30

Python操作注冊表regedit

2021-06-30 08:00:31

ECMAScriptimport 模塊JavaScript

2024-09-12 09:38:13

2019-11-25 21:53:48

代碼算法BUG

2017-07-27 16:51:19

數字化環衛信息化

2022-05-03 23:44:21

Python動態鏈接庫Ctypes

2020-06-09 07:42:30

重命名文件 Linux
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲国产精选 | 国产精品视频在线免费观看 | 91免费福利在线 | 欧美成人精品二区三区99精品 | 伊人春色成人 | 免费国产网站 | 日本黄色大片免费 | av中文字幕在线 | 欧美在线观看一区 | 亚洲精品久久 | 91大神在线资源观看无广告 | 日本在线一二 | 国产乱码一区 | 九色国产| 欧美精品一区二区免费视频 | 成人免费一区二区三区视频网站 | 日韩精品视频在线 | 日韩中文字幕一区二区 | 欧美日韩在线观看一区 | 亚洲天堂精品久久 | 成人精品一区二区三区 | 亚洲一二三区不卡 | 日韩精品免费视频 | 激情影院久久 | 日韩在线视频免费观看 | 久久综合国产精品 | 本道综合精品 | 免费成人在线网站 | 日本在线观看网址 | 羞羞视频在线观看网站 | 久久久久久久久久一区二区 | 天天躁人人躁人人躁狂躁 | 国产精品69毛片高清亚洲 | 久久综合久色欧美综合狠狠 | 91视频在线看 | 亚洲区一区二 | 日本特黄特色aaa大片免费 | 日日夜夜精品视频 | 免费视频一区二区 | 亚洲一区二区av | 国产精品福利久久久 |