Maison  >  Article  >  interface Web  >  Comment utiliser le module Node dans Deno ?

Comment utiliser le module Node dans Deno ?

青灯夜游
青灯夜游avant
2020-09-02 10:17:162425parcourir

Comment utiliser le module Node dans Deno ?

Bien que la méthode ne soit pas très bonne, parfois on n'a pas le choix.

Deno est un environnement d'exécution de code côté serveur basé sur la technologie Web.

  • Node utilise les modules JavaScript et commonjs, et utilise npm/yarn comme gestionnaire de packages. [Recommandation du didacticiel vidéo : tutoriel node js]
  • Deno utilise Typescript ou JavaScript, ainsi que des instructions d'importation javascript modernes. Il ne nécessite pas de gestionnaire de paquets.

Pour importer un module dans deno, il doit être référencé via l'URL :

import { serve } from "https://deno.land/std/http/server.ts";

Vous pouvez le trouver dans la Bibliothèque standard Deno ou Liste des modules tiers Deno Vous trouverez d'autres modules nécessaires dans , mais ils ne couvriront pas tout ce dont vous avez besoin. Parfois, vous ne pouvez utiliser que des modules qui s'appuient sur l'écosystème npm. Voici quelques méthodes de la plus pratique à la plus lourde :

1 Si le module utilise la syntaxe d'import/export du module ES.

Les bibliothèques que vous utilisez dans deno ne doivent pas nécessairement provenir des packages Deno recommandés, elles peuvent provenir de n'importe quelle URL, à condition qu'elles utilisent la syntaxe import. Un bon moyen d'accéder à ces fichiers directement depuis le référentiel npm consiste à utiliser unpkg.

import throttle from https://unpkg.com/lodash@4.17.19/throttle.js

2. Si le module lui-même n'utilise pas les importations, mais que le code source l'utilise

S'il s'agit d'un module compilé via npm, ou si un module avec un mauvais format est utilisé, alors il est possible d'utiliser son code source. Nécessite un peu de chance. Le code source de nombreuses bibliothèques populaires a été migré de commonjs vers la syntaxe import conforme aux normes des modules ES.

Certains packages ont des répertoires src/ et dist/ séparés, où le code de style module ES se trouve dans src/ mais n'est pas inclus dans le package dans npm. Dans ce cas, vous pouvez importer directement depuis la source.

import throttle from "https://raw.githubusercontent.com/lodash/lodash/master/throttle.js";

Vous pouvez obtenir cette URL en cliquant sur le bouton « brut » sur github pour obtenir le fichier JS original. C'est plus simple, mais faisable, d'utiliser github cdn ou de voir si le fichier est accessible via la page github.

Remarque spéciale : Certaines bibliothèques utilisent des modules ES avec webpack, ou utilisent un chargeur de modules pour les rendre importables à partir des modules Node, comme ceci :

//不好的用法:
import { someFunction } from "modulename";
import { someOtherFunction } from "modulename/file.js";

La méthode d'importation standard est de commencer par ./ ou une URL qui peut fonctionner normalement :

//标准的用法:
import { someOtherFunction } from "./folder/file.js";

Mais vous pouvez aussi essayer la méthode suivante :

3. Importez le module commonjs

Heureusement , il existe un service appelé JSPM, qui peut analyser les modules tiers et compiler les modules commonjs pour les utiliser comme importations de modules ES. Cet outil peut être utilisé pour utiliser les modules Node dans le navigateur sans étape de construction. Mais nous pouvons l'utiliser ici aussi.

Dans mon récent projet, je souhaite effectuer des notifications push, ce qui implique de générer des informations d'identification pour VAPID. Il existe une bibliothèque de mots de passe deno qui peut être cryptée, mais l'ensemble du processus de développement est difficile à utiliser. Bibliothèque web -push. Vous pouvez l'importer en utilisant JSPM CDN et l'URL suivante :

import webPush from "https://dev.jspm.io/web-push";

De cette façon, vous pouvez l'utiliser dans deno comme n'importe quel autre module.

Permettre aux types Typescript de fonctionner correctement

Une fonctionnalité intéressante de l'utilisation de typecipt dans deno est qu'il est facile de fournir une fonction d'auto-complétion parfaite pour les modules. L'extension deno de l'éditeur peut même compléter automatiquement des modules tiers si elle connaît la définition du type.

Bien que cela ne soit pas nécessaire au bon fonctionnement du code, cela peut vous aider à bien maintenir le code.

Lorsque j'ai importé un autre module appelé fast-xml-parser, j'ai remarqué qu'il contenait un fichier de définition de type se terminant par .d.ts. Ces fichiers décrivent diverses interfaces et s'appliquent même aux fichiers JavaScript.js. Parfois, vous pouvez également trouver des fichiers de définition de type dans le référentiel @typessomemodule.

Par exemple : https://github.com/Definitely...

Ce fichier dactylographié peut compléter automatiquement le contenu importé du fichier JavaScript. Cela est vrai même pour les fichiers importés avec JSPM :

// 导入 fast-xml-parser 库
import fastXMLParser from "https://dev.jspm.io/fast-xml-parser";
// 从 fast-xml-parser 的源代码导入类型定义文件
import * as FastXMLParser from "https://raw.githubusercontent.com/NaturalIntelligence/fast-xml-parser/master/src/parser.d.ts";
//将 parser 与以下类型一起使用
const parser = fastXMLParser as typeof FastXMLParser;

J'ai importé la définition de type du fichier de définition sous la forme FastXMLParser (notez le F majuscule) et elle ne contient aucun code valide, mais voici un An objet du même type que le code que nous voulons importer.

J'ai importé le code de JSPM sous la forme fastXMLParser (f minuscule), qui est un code valide, mais n'a pas de type.

Ensuite, combinez-les ensemble pour créer parser, qui est un type FastXMLParser de fastXMLParser .

Enfin, j'espère que vous pourrez essayer deno. La capacité de Deno à utiliser n'importe quel module utilisé pour le Web ou même pour node/npm a en effet posé une bonne base pour ce nouvel écosystème de bibliothèques côté serveur.

Pour plus de connaissances liées à la programmation, veuillez visiter : Enseignement de la programmation ! !

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer