JSON Module

JSON Module 在开发中曾经被咱们大量应用,导入 json 在开发中就如同喝水个别常见

目前的现状

得益于构建工具的反对,咱们能够随便导入任意 json,并任意应用,但 js 自身并不反对 JSON Module,这只不过是打包工具给予咱们的能力罢了,webpack 自 2.x 开始间接反对 JSON Module,rollup 也能够通过 @rollup/plugin-json 反对 JSON Module 间接导入,这些这给咱们带来了极大的便当,在此之前,咱们须要在 js 文件中导出 json。而当初,借助工具,咱们可能间接导入 json,导入的 json 会主动解析为一个对象,供咱们间接应用

提案

依据 tc39 最新的 ECMAScript 提案 JSON Modules,当前 js 能够间接原生反对 JSON Module 了,目前该提案位于 stage 3 阶段,预计不久之后就会进入 stage 4 阶段,从而进入规范,在这之后咱们就能够应用原生 JSON Module 了,JSON Modules 提案建设在 Import Assertions 提案的根底之上,Import Assertions 提案规定了导入模块时断言其类型,其还会反对 WebAssembly 类型

语法

JSON Modules 语法非常简单

import json from "./data.json" assert { type: "json" };

只须要在导入之后加上 assert { type: "json" }
对于动静导入则是

import("./data.json", { assert: { type: "json" } })

应用

目前没有浏览器反对该语法,但能够通过 babel 插件 @babel/plugin-syntax-import-assertions 来反对该语法

// babel.config.jsmodule.exports = {  plugins: ["@babel/plugin-syntax-import-assertions"]}

如果您不想手动配置环境,自己也筹备了一个示例我的项目,在该我的项目中你能够间接应用 JSON Modules 语法,我的项目地址

参考

本文参考 JSON Modules 提案和 Import Assertions 提案。
更多提案信息参考 tc39 的 ECMAScript proposals