목차
1.导入 config.json
2. JSON 模块提案
3. 启用JSON模块
4.总结
1. config.json 가져오기
2. JSON 모듈 제안
3. JSON 모듈 활성화
4. 요약
웹 프론트엔드 JS 튜토리얼 JavaScript의 JSON 모듈에 대한 심층적인 대화

JavaScript의 JSON 모듈에 대한 심층적인 대화

Dec 28, 2021 pm 07:05 PM
javascript JSON 모듈 프런트 엔드

이 기사에서는 ECMAScript: JSON 모듈의 새로운 제안을 이해하도록 안내합니다. JSON 모듈이 어떻게 작동하는지 살펴보겠습니다. 모든 사람에게 도움이 되기를 바랍니다.

JavaScript의 JSON 모듈에 대한 심층적인 대화

ECMAScript 모듈 시스템(importexport 키워드)은 기본적으로 JavaScript 코드만 가져올 수 있습니다. importexport 关键字)默认只能导入 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"

JavaScript의 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.nameconfig.version

JavaScript의 JSON 모듈에 대한 심층적인 대화

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

그러나 애플리케이션 구성을 JSON 파일에 저장하는 것이 편리한 경우가 많으므로 JSON 파일을 ES 모듈로 직접 가져오고 싶을 수도 있습니다.

오랫동안 commonjs 모듈 형식은 JSON 가져오기를 지원해 왔습니다.

좋은 소식은 JSON 모듈이라는 세 번째 단계의 새로운 제안이 JSON을 ES 모듈로 가져오는 방법을 제안한다는 것입니다. 이제 JSON 모듈이 어떻게 작동하는지 살펴보겠습니다. 🎜

1. config.json 가져오기

🎜다음 내용이 포함된 config.json 파일이 있다고 가정합니다. 🎜rrreee🎜 > config.json ES 모듈을 가져오시겠습니까? 🎜🎜예를 들어 JSON 구성 파일에서 애플리케이션의 이름과 버전을 표시하는 간단한 웹 애플리케이션을 만듭니다. 🎜🎜 config.json을 직접 가져오려고 하면 Node.js에서 오류가 발생합니다. 🎜rrreee🎜애플리케이션을 실행하려고 하면 node.js에서 TypeError [ERR_UNKNOWN_FILE_EXTENSION]: 알 수 없는 파일 확장자 ".json"🎜🎜JavaScript의 JSON 모듈에 대한 심층적인 대화🎜🎜Node.js import 문을 사용할 때, 기본적으로 예상되는 것은 JavaScript 코드입니다. 그러나 JSON 모듈의 제안 덕분에 가져오려는 데이터 유형(JSON)을 나타낼 수 있습니다. 🎜🎜애플리케이션을 수정하기 전에 JSON 모듈 제안서에 어떤 내용이 포함되어 있는지 살펴보겠습니다. 🎜

2. JSON 모듈 제안

🎜JSON 모듈 제안의 핵심은 일반 import 문을 사용하여 JSON 데이터를 ES 모듈. 🎜🎜가져오기 어설션을 추가하여 JSON 콘텐츠를 가져올 수 있습니다. 🎜rrreee🎜assert {type: "json"}은 모듈을 구문 분석하고 json으로 가져와야 함을 나타내는 가져오기 어설션입니다. 🎜🎜jsonObject 변수에는 file.json의 내용을 구문 분석한 후 생성된 일반 JavaScript 개체가 포함되어 있습니다. 🎜🎜JSON 모듈의 콘텐츠는 기본값을 사용하여 가져오며 명명된 가져오기는 사용할 수 없습니다. 🎜🎜JSON 모듈을 동적으로 가져올 수도 있습니다. 🎜rrreee🎜JSON 모듈을 포함하여 모듈을 동적으로 가져올 때 default 속성에서 기본 콘텐츠를 사용할 수 있습니다. 🎜🎜이 경우 가져오기 어설션은 JSON 유형을 나타냅니다. 그러나 CSS 모듈과 같은 더 많은 데이터 형식을 가져올 수 있는 어설션을 가져오는 보다 일반적인 제안(현재 3단계)이 있습니다. 🎜

3. JSON 모듈 활성화

🎜이제 JSON 모듈을 웹 애플리케이션에 통합합니다. 🎜rrreee🎜이제 기본 모듈은 config.json을 가져옵니다. > 파일을 열고 해당 값 ​​config.nameconfig.version에 액세스합니다. 🎜🎜JavaScript의 JSON 모듈에 대한 심층적인 대화🎜🎜JSON 모듈은 Node.js 버전 >=17.1에서 작동합니다. 또한 브라우저 환경에서는 Chrome 91부터 JSON 모듈을 사용할 수 있습니다. 🎜

4. 요약

🎜기본적으로 ES 모듈은 JavaScript 코드만 가져올 수 있습니다. 🎜🎜JSON 모듈 제안 덕분에 JSON 콘텐츠를 ES 모듈로 직접 가져올 수 있습니다. import 문 다음에 import 어설션을 사용하세요. 🎜rrreee🎜Node.js 17.1부터 실험적 플래그 --experimental-json-modules를 사용하여 Chrome 91 이상에서 JSON 모듈을 사용할 수 있습니다. 🎜🎜더 많은 프로그래밍 관련 지식을 보려면 🎜프로그래밍 비디오🎜를 방문하세요! ! 🎜

위 내용은 JavaScript의 JSON 모듈에 대한 심층적인 대화의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. 크로스 플레이가 있습니까?
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

WebSocket 및 JavaScript: 실시간 모니터링 시스템 구현을 위한 핵심 기술 WebSocket 및 JavaScript: 실시간 모니터링 시스템 구현을 위한 핵심 기술 Dec 17, 2023 pm 05:30 PM

WebSocket과 JavaScript: 실시간 모니터링 시스템 구현을 위한 핵심 기술 서론: 인터넷 기술의 급속한 발전과 함께 실시간 모니터링 시스템이 다양한 분야에서 널리 활용되고 있다. 실시간 모니터링을 구현하는 핵심 기술 중 하나는 WebSocket과 JavaScript의 조합입니다. 이 기사에서는 실시간 모니터링 시스템에서 WebSocket 및 JavaScript의 적용을 소개하고 코드 예제를 제공하며 구현 원칙을 자세히 설명합니다. 1. 웹소켓 기술

PHP와 Vue: 프런트엔드 개발 도구의 완벽한 조합 PHP와 Vue: 프런트엔드 개발 도구의 완벽한 조합 Mar 16, 2024 pm 12:09 PM

PHP와 Vue: 프론트엔드 개발 도구의 완벽한 조합 오늘날 인터넷이 빠르게 발전하는 시대에 프론트엔드 개발은 점점 더 중요해지고 있습니다. 사용자가 웹 사이트 및 애플리케이션 경험에 대한 요구 사항이 점점 더 높아짐에 따라 프런트 엔드 개발자는 보다 효율적이고 유연한 도구를 사용하여 반응형 및 대화형 인터페이스를 만들어야 합니다. 프론트엔드 개발 분야의 두 가지 중요한 기술인 PHP와 Vue.js는 함께 사용하면 완벽한 도구라고 볼 수 있습니다. 이 기사에서는 독자가 이 두 가지를 더 잘 이해하고 적용할 수 있도록 PHP와 Vue의 조합과 자세한 코드 예제를 살펴보겠습니다.

프론트엔드 면접관이 자주 묻는 질문 프론트엔드 면접관이 자주 묻는 질문 Mar 19, 2024 pm 02:24 PM

프론트엔드 개발 인터뷰에서 일반적인 질문은 HTML/CSS 기초, JavaScript 기초, 프레임워크 및 라이브러리, 프로젝트 경험, 알고리즘 및 데이터 구조, 성능 최적화, 크로스 도메인 요청, 프론트엔드 엔지니어링, 디자인 패턴, 새로운 기술 및 트렌드. 면접관 질문은 후보자의 기술적 능력, 프로젝트 경험, 업계 동향에 대한 이해를 평가하기 위해 고안되었습니다. 따라서 지원자는 자신의 능력과 전문성을 입증할 수 있도록 해당 분야에 대한 충분한 준비를 갖추어야 합니다.

JavaScript와 WebSocket: 효율적인 실시간 일기예보 시스템 구축 JavaScript와 WebSocket: 효율적인 실시간 일기예보 시스템 구축 Dec 17, 2023 pm 05:13 PM

JavaScript 및 WebSocket: 효율적인 실시간 일기 예보 시스템 구축 소개: 오늘날 일기 예보의 정확성은 일상 생활과 의사 결정에 매우 중요합니다. 기술이 발전함에 따라 우리는 날씨 데이터를 실시간으로 획득함으로써 보다 정확하고 신뢰할 수 있는 일기예보를 제공할 수 있습니다. 이 기사에서는 JavaScript 및 WebSocket 기술을 사용하여 효율적인 실시간 일기 예보 시스템을 구축하는 방법을 알아봅니다. 이 문서에서는 특정 코드 예제를 통해 구현 프로세스를 보여줍니다. 우리

간단한 JavaScript 튜토리얼: HTTP 상태 코드를 얻는 방법 간단한 JavaScript 튜토리얼: HTTP 상태 코드를 얻는 방법 Jan 05, 2024 pm 06:08 PM

JavaScript 튜토리얼: HTTP 상태 코드를 얻는 방법, 특정 코드 예제가 필요합니다. 서문: 웹 개발에서는 서버와의 데이터 상호 작용이 종종 포함됩니다. 서버와 통신할 때 반환된 HTTP 상태 코드를 가져와서 작업의 성공 여부를 확인하고 다양한 상태 코드에 따라 해당 처리를 수행해야 하는 경우가 많습니다. 이 기사에서는 JavaScript를 사용하여 HTTP 상태 코드를 얻는 방법과 몇 가지 실용적인 코드 예제를 제공합니다. XMLHttpRequest 사용

Django는 프론트엔드인가요, 백엔드인가요? 확인 해봐! Django는 프론트엔드인가요, 백엔드인가요? 확인 해봐! Jan 19, 2024 am 08:37 AM

Django는 빠른 개발과 깔끔한 ​​방법을 강조하는 Python으로 작성된 웹 애플리케이션 프레임워크입니다. Django는 웹 프레임워크이지만 Django가 프런트엔드인지 백엔드인지에 대한 질문에 답하려면 프런트엔드와 백엔드의 개념에 대한 깊은 이해가 필요합니다. 프론트엔드는 사용자가 직접 상호작용하는 인터페이스를 의미하고, 백엔드는 HTTP 프로토콜을 통해 데이터와 상호작용하는 서버측 프로그램을 의미합니다. 프론트엔드와 백엔드가 분리되면 프론트엔드와 백엔드 프로그램을 독립적으로 개발하여 각각 비즈니스 로직과 인터랙티브 효과, 데이터 교환을 구현할 수 있습니다.

Go 언어 프런트엔드 기술 탐색: 프런트엔드 개발을 위한 새로운 비전 Go 언어 프런트엔드 기술 탐색: 프런트엔드 개발을 위한 새로운 비전 Mar 28, 2024 pm 01:06 PM

빠르고 효율적인 프로그래밍 언어인 Go 언어는 백엔드 개발 분야에서 널리 사용됩니다. 그러나 Go 언어를 프런트엔드 개발과 연관시키는 사람은 거의 없습니다. 실제로 프런트엔드 개발에 Go 언어를 사용하면 효율성이 향상될 뿐만 아니라 개발자에게 새로운 지평을 열어줄 수도 있습니다. 이 기사에서는 프런트엔드 개발에 Go 언어를 사용할 수 있는 가능성을 살펴보고 독자가 이 영역을 더 잘 이해할 수 있도록 구체적인 코드 예제를 제공합니다. 전통적인 프런트엔드 개발에서는 사용자 인터페이스를 구축하기 위해 JavaScript, HTML, CSS를 사용하는 경우가 많습니다.

Django: 프론트엔드와 백엔드 개발을 모두 처리할 수 있는 마법의 프레임워크! Django: 프론트엔드와 백엔드 개발을 모두 처리할 수 있는 마법의 프레임워크! Jan 19, 2024 am 08:52 AM

Django: 프론트엔드와 백엔드 개발을 모두 처리할 수 있는 마법의 프레임워크! Django는 효율적이고 확장 가능한 웹 애플리케이션 프레임워크입니다. MVC, MTV를 포함한 다양한 웹 개발 모델을 지원할 수 있으며 고품질 웹 애플리케이션을 쉽게 개발할 수 있습니다. Django는 백엔드 개발을 지원할 뿐만 아니라 프런트엔드 인터페이스를 빠르게 구축하고 템플릿 언어를 통해 유연한 뷰 표시를 구현할 수 있습니다. Django는 프론트엔드 개발과 백엔드 개발을 완벽한 통합으로 결합하므로 개발자가 전문적으로 학습할 필요가 없습니다.

See all articles