您现在的位置是:亿华云 > 应用开发
厉害了,ECMAScript 新提案:JSON模块
亿华云2025-10-02 18:49:13【应用开发】0人已围观
简介ECMAScript 模块系统( import 和 export 关键字)默认只能导入 JavaScript 代码。但是,将应用程序的配置保存在一个JSON文件中往往很方便,因此,我们可能想直接将JS
ECMAScript 模块系统( import 和 export 关键字)默认只能导入 JavaScript 代码。厉害了
但是新提,将应用程序的厉害了配置保存在一个JSON文件中往往很方便,因此,新提我们可能想直接将JSON文件导入ES模块中。厉害了
长期以来,新提commonjs 模块格式支持导入JSON。厉害了
好消息是新提,第三阶段的厉害了一个名为JSON模块的新提议,提出了一种将JSON导入到ES模块的新提方法。现在,厉害了我们来看看JSON模块是新提如何工作的。
1.导入 config.json.
假设,厉害了我们有一个 config.json 文件,新提内容如下:
{ "name": "My Application",厉害了 "version": "v1.2" }如何将 config.json 导入ES模块?
例如,我们创建一个简单的Web应用程序,从JSON配置文件中显示应用程序的名称和版本。
如果你试图直接导入 config.json ,Node.js会抛出一个错误。站群服务器
import http from http; import config from ./config.json; http .createServer((req, res) => { res.write(`App name: ${ config.name}\n`); res.write(`App version: ${ config.version}`); res.end(); }) .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内容:
import jsonObject from "./file.json" assert { type: "json" };assert { type: "json"}是一个导入断言,指示模块应该被解析和导入为json。
jsonObject变量包含解析file.json的内容后创建的普通JavaScript对象。
一个JSON模块的内容是使用默认导入的,命名的导入不可用。
JSON模块也可以动态导入:
const { default: jsonObject } = await import(./file.json, { assert: { type: json } });当一个模块被动态导入时,高防服务器包括一个JSON模块,默认的内容在default属性中可用。
在这种情况下,导入断言表示JSON类型。但是,有一个更通用的提议导入断言(目前在第3阶段),允许导入更多数据格式,如CSS模块。
3. 启用JSON模块
现在,我们将JSON模块集成到Web应用程序中:
import http from http; import config from ./config.json assert { type: "json" }; http .createServer((req, res) => { res.write(`App name: ${ config.name}\n`); res.write(`App version: ${ config.version}`); res.end(); }) .listen(8080);主模块现在导入config.json文件,并访问其值config.name和config.version。
JSON模块工作在Node.js版本>=17.1中,也可以使用--experimental-json-modules标志启用Experimental JSON模块
node --experimental-json-modules index.mjs在浏览器环境中,JSON模块从Chrome 91开始可用。
4.总结
默认情况下,ES模块只能导入JavaScript代码。
由于JSON模块的提议,你可以直接将JSON内容导入到ES模块中。只要在导入语句后使用导入断言就可以了。
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/
很赞哦!(1524)
上一篇: 全国都在拿算力说事,却只有头部数据中心才想得到这些问题
下一篇: 服务器性能如何优化?
相关文章
- Kyndryl勤达睿获得思科全球金牌集成商认证
- 如果你的潜在终端必须是这个米(域名),那么潜在终端并不多,也没有硬通货,那么你的域名应该在终端有兴趣购买时出售。否则,你可能得自己留着吃。
- 3.dns修改成功后,点击“域名解析”,按提示进行操作。解析格式一般如下:
- 为什么起域名意义非凡?起域名有什么名堂?
- 数据中心应该使用哪种布线方式?
- 域名不仅仅是一个简单的网站。对于有长远眼光的公司来说,在运营网站之前确定一个优秀的域名对有长远眼光的公司来说是非常重要的。这对今后的市场营销、产品营销和企业品牌建设都具有十分重要的意义。优秀的域名是企业在市场竞争中获得持久优势的利器。
- 5、使用企业名称的英文名称作为域名也是国内许多企业选择域名的一种方式,特别适合一些与计算机、网络和通信相关的行业。
- 为什么喜欢国外注册域名?国外注册域名注意什么?
- Nginx配置中Root和Alias分不清?本文3分钟帮你解惑
- ④注册门槛低
热门文章
站长推荐
场外助力气象预测+场内存力支持 联想算力设施再迎世界级体育盛事
5、使用企业名称的英文名称作为域名也是国内许多企业选择域名的一种方式,特别适合一些与计算机、网络和通信相关的行业。
二、如何选择合适的域名
(4) 使用何种形式的域名后缀对网页搜索影响不大,但域名后缀也需要考虑方便用户记忆
戴尔Precision 5770顶级工业设计与制造 可大幅提升客户工作效率
记住那句话,域名向来不属于任何人,谁先买就归谁,购买期过后,域名又不再属于任何人。
审核通过的域名将显示在域名竞拍页面,并进入正式拍卖期,买家可以在拍卖周期内出价,加价幅度与拍卖保证金说明,点此查看。
3、商标域名一经注册,就可以作为域名裁决过程中的主要信息之一。这可以大大增加公司被抢注的相关域名胜诉的机会。