一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務器之家 - 編程語言 - JavaScript - json - 厲害了,ECMAScript 新提案:JSON模塊

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

2021-12-27 23:40大遷世界前端小智 json

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

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

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"

厲害了,ECMAScript 新提案: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。

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

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/

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

原文鏈接:https://mp.weixin.qq.com/s/x3_QVU1LSehPAgrrxbNQ6Q

延伸 · 閱讀

精彩推薦
  • json厲害了,ECMAScript 新提案:JSON模塊

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

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

    大遷世界11212021-12-27
  • json用 JSON 處理緩存

    用 JSON 處理緩存

    使用 JSON(即 JavaScript Object Notation),將以一種特定的字符串形式來表示 JavaScript 對象。如果將具有這樣一種形式的字符串賦給任意一個 JavaScript 變量,該...

    JSON教程網8582022-01-03
主站蜘蛛池模板: japanesqirl日本护士 | 狠狠综合久久综合网站 | 视频网站入口在线看 | 男人操美女逼视频 | 女同学高中你下面好紧 | 欧美添下面视频免费观看 | 亚洲网红精品大秀在线观看 | 天生奶水1v1高h | 国产亚洲欧美日韩综合综合二区 | 日韩理论在线观看 | 黑人巨大精品战中国美女 | av中文字幕网免费观看 | 奇米影视小说 | 欧美日韩视频在线一区二区 | 精品一产品大全 | 天美影视传媒mv直接看 | 魔法满屋免费观看完整版中文 | 日本爽p大片免费观看 | 全程粗语对白视频videos | 波多野结衣在线免费观看 | 欧美侏儒xxx | 亚洲天堂影院在线观看 | 国产美女屁股直流白浆视频无遮挡 | 成人久久伊人精品伊人 | 日b视频免费 | 亚洲另类中文字幕 | 好男人资源在线观看免费的 | spank日本网站脱裤子打屁股 | 色老板在线观看 | 国产一区日韩二区欧美三区 | 久久精品国产色蜜蜜麻豆国语版 | 手机在线观看精品国产片 | 午夜精品久视频在线观看 | 喜欢老头吃我奶躁我的动图 | 好猛好紧好硬使劲好大刺激视频 | 校园高h| 福利视频一区二区思瑞 | freexxxxxhd张柏芝 | 网站国产 | 成人无高清96免费 | 女人和男人搞基 |