Table des matières
modularisation js
怎么使用
Maison interface Web js tutoriel Une brève analyse de la façon d'utiliser la syntaxe d'importation dans le nœud

Une brève analyse de la façon d'utiliser la syntaxe d'importation dans le nœud

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

node.js prend en charge la syntaxe d'importation, qui est un point de connaissance simple, mais elle peut nous rappeler de sortir des malentendus en matière de connaissances, de prêter plus d'attention au monde extérieur de la connaissance et d'ouvrir constamment les limites de nos propres connaissances.

Une brève analyse de la façon d'utiliser la syntaxe d'importation dans le nœud

modularisation js

Les principales spécifications de modularisation frontale incluent actuellement les éléments suivants :

  • CommonJS, la spécification proposée par Node.js
  • ECMAScript Module, ESM, la spécification standard JavaScript proposée par ECMAScript organisation
  • Ceux qui ont été éliminés sont : CMD, AMD, etc., puis le complexe UMD (une collection qui prend en charge diverses spécifications)

Par conséquent, il existe deux spécifications principales CommonJS et ESMDeux spécifications, mais comme Node.js ne prend pas en charge la spécification ESM, plusieurs fois le code des deux spécifications coexiste dans nos projets, ce qui entraîne la situation suivante : CommonJSESM两种规范,但是由于Node.js不支持ESM规范,导致很多时候我们的项目里面并存两种规范的代码,从而出现下面这种情况:

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

// 在浏览器端实现的时候
import _ from 'loadsh';
Copier après la connexion

这样子开发就很容易出现痛点,往往我们的解决方案就是通过各种构建工具去解决,如: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模块规范 开发者可以通过 .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、常规方式:

import _ from 'lodash';

import { readFile } from 'fs';

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

export readFile;
export default readFile;
Copier après la connexion

2、带参数的使用:

// 由于参数不同, 这个会让`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"
Copier après la connexion

3、支持data:格式URL的形式

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
Copier après la connexion

4、assert断言(实验特性) 将文件强制加载为某种格式内容,如:json javascript webassembly

import fooData from './foo.json' assert { type: 'json' };
Copier après la connexion

5、加载commonjs规范模块

当然肯定也支持加载commonjs规范的模块,用法如下:

import { default as cjs } from 'cjs'; // module.exports 导出
import cjsSugar from 'cjs'; // module.exports
import * as m from 'cjs';
Copier après la connexion

6、import() 异步导入 这种用法就很正常,不需要实时加载,等到需要用的时候再加载

const { default: barData } =
  await import('./bar.json', { assert: { type: 'json' } });
Copier après la connexion

7、支持从http/https引入(实验特性)

目前属于实验特性,有限制,比如:

  • 不支持http2/3协议
  • http协议只能用于127.0.0.1等本地ip地址
  • Cookie、Authorization等信息不会携带发送
  • 只会加载执行远端的js文件,而不会加载远端中依赖其他文件
import worker_threads from 'node:worker_threads';
import { configure, resize } from 'https://example.com/imagelib.mjs';
configure({ worker_threads });
Copier après la connexion

限制

唯一的限制:当开启ESM规范后,你只允许填写importexport,不允许使用requiremodule.exports

const a  = require('a')
           ^
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)
Copier après la connexion
Comme ça Il est facile d'avoir des problèmes dans le développement, et souvent notre solution consiste à les résoudre via divers outils de construction, tels que : webpack vite, surtout lorsque nous écrire le nœud dans le script de compilation du projet. js, il faut souvent changer. [Tutoriels associés recommandés : tutoriel vidéo nodejs

, Enseignement de la programmation]

Mais après la version Node.js V14+, il commence à prendre en charge la spécification ESM, vous pouvez l'utiliser directement dans Node. js Utiliser import export et d'autres syntaxes, et enfin attendre ce jour ?

PS : En fait, cette fonctionnalité a été ajoutée dès la version Node.js V8.5, mais il a toujours été nécessaire d'activer cette fonctionnalité via la variable globale –experimental-modules, en raison de la grande instabilité, la plupart des projets n'ont pas été activés, mais depuis 16+, nous pouvons l'utiliser avec audace et en toute sécurité dans des projets, mais il est recommandé de ne pas activer certains projets anciens pour le moment.

Comment utiliser

Lisons d'abord les instructions pertinentes sur le site officiel :

Node.js a deux spécifications de module : la spécification du module CommonJS et ECMAScript code >Spécification du module Les développeurs peuvent définir <code>type=module ou node xxx.js --input via l'extension de fichier <code>.mjs, package.json Le - L'indicateur type indique à Node.js d'utiliser la spécification ECMAScript pour exécuter du code. Sans ces paramètres, Node.js utilisera CommonJS pour l'exécution. Modules Node.js : modules ECMAScript🎜🎜
🎜Grâce à ce qui précède, nous pouvons connaître plusieurs méthodes d'utilisation :🎜
    🎜🎜 Changer le suffixe du fichier à .mjs Lorsque node.js est chargé, il utilisera automatiquement la spécification ESM🎜🎜🎜🎜dans le projet package.jsoncode> Ajoutez un nouvel élément de configuration <code>"type": "module", puis les fichiers .js de l'ensemble du projet seront exécutés selon la spécification ESM🎜🎜🎜🎜 Ajouter des paramètres d'exécution --input-type peut également obtenir le même effet🎜🎜🎜🎜🎜Diverses méthodes d'utilisation🎜🎜🎜1 . Méthode conventionnelle : 🎜rrreee 🎜2. Utiliser avec les paramètres : 🎜rrreee🎜3. Prise en charge du formulaire d'URL au format data : 🎜rrreee🎜4. Forcez le chargement du fichier dans un certain format, tel que : json javascript webassembly, etc.🎜rrreee🎜5. Chargez la spécification commonjs. module🎜🎜Bien sûr, il prend également en charge le chargement de modules standard commonjs. L'utilisation est la suivante : 🎜rrreee🎜6. Ce type d'utilisation est tout à fait normal. Il n'est pas nécessaire de le charger en temps réel. 🎜rrreee🎜7 Prend en charge l'importation depuis http/https (fonctionnalité expérimentale)🎜🎜Il s'agit actuellement d'une version expérimentale. fonctionnalité avec des restrictions, telles que : 🎜🎜🎜Pas de prise en charge du protocole http2/3🎜🎜Le protocole http ne peut être utilisé que pour les adresses IP locales telles que 127.0.0.1🎜🎜Les cookies, autorisations et autres informations ne seront ni transportés ni envoyés🎜🎜Uniquement le fichier js distant sera chargé et exécuté, et ne sera pas chargé à l'extrémité distante Dépend d'autres fichiers🎜🎜rrreee🎜🎜Restrictions🎜🎜🎜Le seule restriction : lorsque la spécification ESM est activée, vous êtes uniquement autorisé à remplir import ou export, il n'est pas autorisé d'utiliser require ou module.exports, et une erreur sera signalée : 🎜rrreee🎜🎜Résumé🎜🎜🎜En fait, ce n'est pas non plus une connaissance populaire tant que vous faites un peu attention à Node. js, vous pouvez essentiellement comprendre cette fonctionnalité. 🎜🎜Mais en tant que personne qui n'y prête pas attention, il est facile de tomber dans votre propre incompréhension des connaissances. Vous penserez toujours que Node.js ne prend pas en charge la spécification ESM, et vous vous plaindrez même de la raison pour laquelle Node.js ne le fait pas. le soutenir ? 🎜🎜Voici donc une phrase que vous devez vous rappeler - [Il n'y a pas de route dans la montagne du livre, et la diligence est le chemin, et il n'y a pas de limite à la mer de l'apprentissage, et le bateau est le bateau] . 🎜🎜Pour plus de connaissances sur les nœuds, veuillez visiter : 🎜tutoriel Nodejs🎜 ! 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment supprimer un nœud dans NVM Comment supprimer un nœud dans NVM Dec 29, 2022 am 10:07 AM

Comment supprimer un nœud avec nvm : 1. Téléchargez « nvm-setup.zip » et installez-le sur le lecteur C ; 2. Configurez les variables d'environnement et vérifiez le numéro de version via la commande « nvm -v » 3. Utilisez la commande « nvm » ; install" commande Installer le nœud ; 4. Supprimez le nœud installé via la commande "nvm uninstall".

Comment utiliser Express pour gérer le téléchargement de fichiers dans un projet de nœud Comment utiliser Express pour gérer le téléchargement de fichiers dans un projet de nœud Mar 28, 2023 pm 07:28 PM

Comment gérer le téléchargement de fichiers ? L'article suivant vous expliquera comment utiliser Express pour gérer les téléchargements de fichiers dans le projet de nœud. J'espère qu'il vous sera utile !

Une analyse approfondie de l'outil de gestion de processus de Node « pm2 » Une analyse approfondie de l'outil de gestion de processus de Node « pm2 » Apr 03, 2023 pm 06:02 PM

Cet article partagera avec vous l'outil de gestion de processus de Node "pm2" et expliquera pourquoi pm2 est nécessaire, comment installer et utiliser pm2, j'espère qu'il sera utile à tout le monde !

Enseignement du nœud PI: Qu'est-ce qu'un nœud PI? Comment installer et configurer le nœud PI? Enseignement du nœud PI: Qu'est-ce qu'un nœud PI? Comment installer et configurer le nœud PI? Mar 05, 2025 pm 05:57 PM

Explication détaillée et guide d'installation pour les nœuds de pignon Cet article introduira l'écosystème de pignon en détail - nœuds PI, un rôle clé dans l'écosystème de pignon et fournir des étapes complètes pour l'installation et la configuration. Après le lancement du réseau de test de la blockchain pèse, les nœuds PI sont devenus une partie importante de nombreux pionniers participant activement aux tests, se préparant à la prochaine version du réseau principal. Si vous ne connaissez pas encore Pinetwork, veuillez vous référer à ce qu'est Picoin? Quel est le prix de l'inscription? PI Utilisation, exploitation minière et sécurité. Qu'est-ce que Pinetwork? Le projet Pinetwork a commencé en 2019 et possède sa pièce exclusive de crypto-monnaie PI. Le projet vise à en créer un que tout le monde peut participer

Parlons de la façon d'utiliser pkg pour empaqueter des projets Node.js dans des fichiers exécutables. Parlons de la façon d'utiliser pkg pour empaqueter des projets Node.js dans des fichiers exécutables. Dec 02, 2022 pm 09:06 PM

Comment empaqueter le fichier exécutable nodejs avec pkg ? L'article suivant vous expliquera comment utiliser pkg pour empaqueter un projet Node dans un fichier exécutable. J'espère qu'il vous sera utile !

Comment fonctionne l'importation de Python ? Comment fonctionne l'importation de Python ? May 15, 2023 pm 08:13 PM

Bonjour, je m'appelle somenzz, vous pouvez m'appeler frère Zheng. L'importation de Python est très intuitive, mais même ainsi, vous constaterez parfois que même si le package est là, nous rencontrerons toujours ModuleNotFoundError. Le chemin relatif est évidemment très correct, mais l'erreur ImportError:tentativerelativeimportwithnoknownparentpackage importe un module dans le même répertoire et. un différent. Les modules du répertoire sont complètement différents. Cet article vous aide à gérer facilement l'import en analysant certains problèmes souvent rencontrés lors de l'utilisation de l'import. Sur cette base, vous pouvez facilement créer des attributs.

Authentification basée sur des jetons avec Angular et Node Authentification basée sur des jetons avec Angular et Node Sep 01, 2023 pm 02:01 PM

L'authentification est l'une des parties les plus importantes de toute application Web. Ce didacticiel traite des systèmes d'authentification basés sur des jetons et de leurs différences par rapport aux systèmes de connexion traditionnels. À la fin de ce didacticiel, vous verrez une démo entièrement fonctionnelle écrite en Angular et Node.js. Systèmes d'authentification traditionnels Avant de passer aux systèmes d'authentification basés sur des jetons, examinons les systèmes d'authentification traditionnels. L'utilisateur fournit son nom d'utilisateur et son mot de passe dans le formulaire de connexion et clique sur Connexion. Après avoir effectué la demande, authentifiez l'utilisateur sur le backend en interrogeant la base de données. Si la demande est valide, une session est créée à l'aide des informations utilisateur obtenues à partir de la base de données et les informations de session sont renvoyées dans l'en-tête de réponse afin que l'ID de session soit stocké dans le navigateur. Donne accès aux applications soumises à

Comment configurer et installer node.js dans IDEA ? Brève analyse des méthodes Comment configurer et installer node.js dans IDEA ? Brève analyse des méthodes Dec 21, 2022 pm 08:28 PM

Comment exécuter un nœud dans IDEA ? L'article suivant vous expliquera comment configurer, installer et exécuter node.js dans IDEA. J'espère qu'il vous sera utile !

See all articles