목차
js 모듈화
怎么使用
다양한 사용 방법
웹 프론트엔드 JS 튜토리얼 노드에서 가져오기 구문을 사용하는 방법에 대한 간략한 분석

노드에서 가져오기 구문을 사용하는 방법에 대한 간략한 분석

Mar 21, 2023 pm 06:53 PM
nodejs​ node import

node.js는 단순한 지식 포인트인 가져오기 구문을 지원하지만 지식 오해에서 벗어나 지식의 외부 세계에 더 많은 관심을 기울이고 끊임없이 우리 자신의 지식의 경계를 열어줄 수 있습니다.

노드에서 가져오기 구문을 사용하는 방법에 대한 간략한 분석

js 모듈화

현재 주류 프런트엔드 모듈화 사양에는 다음이 포함됩니다.

  • CommonJS, Node.js가 제안한 사양
  • ECMAScript 모듈, ESM, ECMAScript가 제안한 JavaScript 표준 사양
  • 제거된 것은 CMD, AMD 등이고, 그 다음이 복잡한 UMD(다양한 사양을 지원하는 모음)

따라서 두 가지 주류 사양인 CommonJSESM두 가지 사양이 있지만 Node.js는 ESM 사양을 지원하지 않기 때문에 두 사양의 코드가 우리 프로젝트에 여러 번 공존하여 다음과 같은 상황이 발생합니다. CommonJSESM两种规范,但是由于Node.js不支持ESM规范,导致很多时候我们的项目里面并存两种规范的代码,从而出现下面这种情况:

// 在node端执行构建的时候
const _ = require('loadsh')

// 在浏览器端实现的时候
import _ from 'loadsh';
로그인 후 복사

这样子开发就很容易出现痛点,往往我们的解决方案就是通过各种构建工具去解决,如:webpack vite,尤其是我们在写项目中写node.js编译脚本,经常需要切换。【相关教程推荐:nodejs视频教程编程教学

但是从Node.js V14+版本后,它开始支持ESM规范啦,你可以直接在Node.js中使用import export等语法了,终于等到这一天?。

PS: 其实早在Node.js V8.5版本就已经加入该特性了,只不过一直需要通过全局变量–experimental-modules去开启这一特性,由于不稳定性大多数项目都没有开启,不过自从16+后,我们就可以大胆放心在项目中使用了,不过一些古老的项目建议暂时不用开启。

怎么使用

我们先从官网上去看相关使用说明:

Node.js 有两个模块规范:CommonJS模块规范 和 ECMAScript

import _ from 'lodash';

import { readFile } from 'fs';

import Demo from './Demo.mjs'; // 绝对路径或相对路径都可以

export readFile;
export default readFile;
로그인 후 복사
.mjs 文件扩展名、package.json中设置type=modulenode xxx.js --input-type 标志告诉 Node.js 使用 ECMAScript规范去执行代码。 如果没这些设置,Node.js 将使用 CommonJS 去执行。Node.js Modules: ECMAScript modules

通过上述我们就可以知道几个使用方式:

  • 将文件后缀改为.mjs,node.js加载的时候自动会用ESM规范

  • 在项目中package.json新增配置项"type":"module",那么整个项目中的.js文件都会按照ESM规范去执行

  • 增加执行参数--input-type也可以实现相同效果

各种使用方式

1、常规方式:

// 由于参数不同, 这个会让`foo.mjs`被加载两次,而不会利用缓存中的`foo.mjs`
import './foo.mjs?query=1'; // loads ./foo.mjs with query of "?query=1"
import './foo.mjs?query=2'; // loads ./foo.mjs with query of "?query=2"
로그인 후 복사

2、带参数的使用:

import 'data:text/javascript,console.log("hello!");'; // text/javascript 会将后面的内容当成js模块
import { test } from 'data:text/javascript,function test(){console.log("test")};export {test};'; // 这里我们是不是扩宽思路,直接加载在线js呢?

import _ from 'data:application/json,"world!"' assert { type: 'json' }; // application/json 则是json

// application/wasm for Wasm
로그인 후 복사

3、支持data:이렇게 개발 시 문제점이 발생하기 쉬우며, 특히 우리가 할 때 webpack vite와 같은 다양한 구성 도구를 통해 이를 해결하는 것이 우리 솔루션인 경우가 많습니다. 프로젝트에 노드를 작성하세요.js 컴파일 스크립트는 종종 전환이 필요합니다. [권장 관련 튜토리얼: nodejs 동영상 튜토리얼

, 프로그래밍 교육

]json javascript webassembly

하지만 Node.js V14+ 버전 이후 ESM 사양을 지원하기 시작하면 Node.js에서 직접 사용할 수 있습니다. js import export 및 기타 구문을 사용하고 마침내 오늘을 기다리시겠습니까?

PS: 사실 이 기능은 Node.js V8.5 버전부터 추가되었지만 항상 전역 변수 –experimental-modules를 통해 이 기능을 활성화해야 했습니다. 높은 불안정성으로 인해 대부분의 프로젝트는 켜지지 않았으나 16+부터는 프로젝트에서 대담하고 안전하게 사용할 수 있지만 일부 고대 프로젝트는 당분간 켜지지 않는 것이 좋습니다.

사용 방법

먼저 공식 웹사이트에서 관련 지침을 읽어보겠습니다:

Node.js에는 두 가지 모듈 사양이 있습니다: CommonJS 모듈 사양과 ECMAScript</ 코드>모듈 사양 개발자는 <code>.mjs 파일 확장자 package.json을 통해 type=module 또는 node xxx.js --input을 설정할 수 있습니다. type 플래그는 Node.js에 ECMAScript 사양을 사용하여 코드를 실행하도록 지시합니다. 이러한 설정이 없으면 Node.js는 실행을 위해 CommonJS를 사용합니다.
Node.js 모듈: ECMAScript 모듈
위를 통해 여러 사용 방법을 알 수 있습니다:
    • 변경 파일 접미사는 .mjs입니다. node.js가 로드되면 package.json</ 프로젝트의 <code>ESM 사양
    을 자동으로 사용합니다. code> 새 구성 항목 "type":"module"을 추가하면 전체 프로젝트의 모든 .js 파일이 ESM 사양

    에 따라 실행됩니다. 실행 매개변수 --input-type도 동일한 효과를 얻을 수 있습니다

    importexport,不允许使用requiremodule.exports

    다양한 사용 방법

    1. 일반 방법:

    import fooData from &#39;./foo.json&#39; assert { type: &#39;json&#39; };
    로그인 후 복사

    2.

    import { default as cjs } from &#39;cjs&#39;; // module.exports 导出
    import cjsSugar from &#39;cjs&#39;; // module.exports
    import * as m from &#39;cjs&#39;;
    로그인 후 복사

    3.data:형식 URL 형식

    const { default: barData } =
      await import(&#39;./bar.json&#39;, { assert: { type: &#39;json&#39; } });
    로그인 후 복사

    4. 지원(실험적 기능)

    etc.

    5와 같은 특정 형식으로 파일을 강제로 로드합니다. Load commonjs 사양 모듈

    🎜물론, commonjs 사양 모듈 로드도 지원합니다.🎜
    const a  = require(&#39;a&#39;)
               ^
    ReferenceError: require is not defined in ES module scope, you can use import instead
        at file:///Users/borfyqiu/Desktop/study/github/qiubohong.github.io/code/demo-rollup/test.mjs:4:12
        at ModuleJob.run (node:internal/modules/esm/module_job:193:25)
        at async Promise.all (index 0)
        at async ESMLoader.import (node:internal/modules/esm/loader:530:24)
        at async loadESM (node:internal/process/esm_loader:91:5)
        at async handleMainPromise (node:internal/modules/run_main:65:12)
    로그인 후 복사
    🎜6. import() 비동기 가져오기 이러한 사용 방식은 매우 일반적입니다. 실시간으로 로드할 필요는 없습니다. 필요할 때 로드됩니다. 🎜rrreee🎜7. http/https에서 가져오기를 지원합니다(실험적 기능)🎜🎜현재는 실험적입니다. 다음과 같은 제한 사항이 있는 기능: 🎜🎜🎜지원되지 않는 http2/3 프로토콜🎜🎜http 프로토콜은 127.0.0.1🎜🎜과 같은 로컬 IP 주소에만 사용할 수 있습니다. 쿠키, 승인 및 기타 정보는 전달 및 전송되지 않습니다🎜🎜만 원격 js 파일이 로드 및 실행되며 원격 끝에는 로드되지 않습니다. 다른 파일에 의존🎜🎜rrreee🎜🎜🎜Restrictions🎜🎜🎜🎜유일한 제한 사항: ESM 사양이 켜져 있으면 🎜을 입력하면 오류가 보고됩니다:🎜rrreee🎜🎜Summary🎜🎜🎜사실 이것은 대중적인 지식이 아닙니다. Node.js에 조금만 주의를 기울이면 기본적으로 이해할 수 있습니다. 이 기능. 🎜🎜그러나 주의를 기울이지 않는 사람은 자신의 지식에 대한 오해에 빠지기 쉽습니다. 그는 항상 Node.js가 ESM 사양을 지원하지 않는다고 생각하고 심지어 Node.js가 지원하는 이유에 대해 불평할 것입니다. 지지하지 않아? 🎜🎜그래서 여러분이 꼭 기억해야 할 문장이 있습니다. - [책의 산에는 길이 없고, 노력이 길이며, 배움의 바다에는 한계가 없고, 배는 어렵다. 일하다]. 🎜🎜노드 관련 지식을 더 보려면 🎜nodejs 튜토리얼🎜을 방문하세요! 🎜

    위 내용은 노드에서 가져오기 구문을 사용하는 방법에 대한 간략한 분석의 상세 내용입니다. 자세한 내용은 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. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
    4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. 최고의 그래픽 설정
    4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
    4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
    WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
    1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

    뜨거운 도구

    메모장++7.3.1

    메모장++7.3.1

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

    SublimeText3 중국어 버전

    SublimeText3 중국어 버전

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

    스튜디오 13.0.1 보내기

    스튜디오 13.0.1 보내기

    강력한 PHP 통합 개발 환경

    드림위버 CS6

    드림위버 CS6

    시각적 웹 개발 도구

    SublimeText3 Mac 버전

    SublimeText3 Mac 버전

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

    nvm에서 노드를 삭제하는 방법 nvm에서 노드를 삭제하는 방법 Dec 29, 2022 am 10:07 AM

    nvm을 사용하여 노드를 삭제하는 방법: 1. "nvm-setup.zip"을 다운로드하여 C 드라이브에 설치합니다. 2. "nvm -v" 명령을 통해 환경 변수를 구성하고 버전 번호를 확인합니다. install" 명령 노드 설치; 4. "nvm uninstall" 명령을 통해 설치된 노드를 삭제합니다.

    Express를 사용하여 노드 프로젝트에서 파일 업로드를 처리하는 방법 Express를 사용하여 노드 프로젝트에서 파일 업로드를 처리하는 방법 Mar 28, 2023 pm 07:28 PM

    파일 업로드를 처리하는 방법은 무엇입니까? 다음 글에서는 Express를 사용하여 노드 프로젝트에서 파일 업로드를 처리하는 방법을 소개하겠습니다. 도움이 되길 바랍니다.

    Node의 프로세스 관리 도구 'pm2”에 대한 심층 분석 Node의 프로세스 관리 도구 'pm2”에 대한 심층 분석 Apr 03, 2023 pm 06:02 PM

    이 기사에서는 Node의 프로세스 관리 도구인 "pm2"를 공유하고 pm2가 필요한 이유, pm2 설치 및 사용 방법에 대해 설명합니다. 모두에게 도움이 되기를 바랍니다!

    PI 노드 교육 : PI 노드 란 무엇입니까? Pi 노드를 설치하고 설정하는 방법은 무엇입니까? PI 노드 교육 : PI 노드 란 무엇입니까? Pi 노드를 설치하고 설정하는 방법은 무엇입니까? Mar 05, 2025 pm 05:57 PM

    Pinetwork 노드에 대한 자세한 설명 및 설치 안내서이 기사에서는 Pinetwork Ecosystem을 자세히 소개합니다. Pi 노드, Pinetwork 생태계의 주요 역할을 수행하고 설치 및 구성을위한 전체 단계를 제공합니다. Pinetwork 블록 체인 테스트 네트워크가 출시 된 후, PI 노드는 다가오는 주요 네트워크 릴리스를 준비하여 테스트에 적극적으로 참여하는 많은 개척자들의 중요한 부분이되었습니다. 아직 Pinetwork를 모른다면 Picoin이 무엇인지 참조하십시오. 리스팅 가격은 얼마입니까? PI 사용, 광업 및 보안 분석. Pinetwork 란 무엇입니까? Pinetwork 프로젝트는 2019 년에 시작되었으며 독점적 인 Cryptocurrency Pi Coin을 소유하고 있습니다. 이 프로젝트는 모든 사람이 참여할 수있는 사람을 만드는 것을 목표로합니다.

    pkg를 사용하여 Node.js 프로젝트를 실행 파일로 패키징하는 방법에 대해 이야기해 보겠습니다. pkg를 사용하여 Node.js 프로젝트를 실행 파일로 패키징하는 방법에 대해 이야기해 보겠습니다. Dec 02, 2022 pm 09:06 PM

    nodejs 실행 파일을 pkg로 패키징하는 방법은 무엇입니까? 다음 기사에서는 pkg를 사용하여 Node 프로젝트를 실행 파일로 패키징하는 방법을 소개합니다. 도움이 되기를 바랍니다.

    Python의 가져오기는 어떻게 작동하나요? Python의 가져오기는 어떻게 작동하나요? May 15, 2023 pm 08:13 PM

    안녕하세요. 제 이름은 somenzz입니다. Zheng 형제라고 불러주세요. Python의 가져오기는 매우 직관적이지만 그럼에도 불구하고 패키지가 거기에 있음에도 불구하고 여전히 ModuleNotFoundError가 발생하는 경우가 있습니다. 상대 경로는 분명히 매우 정확하지만 ImportError:attemptedrelativeimportwithnoknownparentpackage 오류는 동일한 디렉터리에서 모듈을 가져오고 이 글은 가져오기를 사용할 때 자주 발생하는 몇 가지 문제를 분석하여 가져오기를 쉽게 처리하는 데 도움이 됩니다.

    npm node gyp가 실패하는 경우 수행할 작업 npm node gyp가 실패하는 경우 수행할 작업 Dec 29, 2022 pm 02:42 PM

    "node-gyp.js"와 "Node.js"의 버전이 일치하지 않아 npm node gyp가 실패했습니다. 해결 방법: 1. "npm 캐시 clean -f"를 통해 노드 캐시를 지웁니다. 2. "npm install - g n" n 모듈을 설치합니다. 3. "n v12.21.0" 명령을 통해 "node v12.21.0" 버전을 설치합니다.

    싱글 사인온(SSO) 시스템이란 무엇입니까? nodejs를 사용하여 구현하는 방법은 무엇입니까? 싱글 사인온(SSO) 시스템이란 무엇입니까? nodejs를 사용하여 구현하는 방법은 무엇입니까? Feb 24, 2023 pm 07:33 PM

    싱글 사인온(SSO) 시스템이란 무엇입니까? nodejs를 사용하여 구현하는 방법은 무엇입니까? 다음 글에서는 Node를 사용하여 Single Sign-On 시스템을 구현하는 방법을 소개하겠습니다. 도움이 되길 바랍니다.

    See all articles