


Modules Deno: utilisation, meilleures pratiques et importations de modules de nœud
Creusez dans le module Deno - Si vous êtes de Node.js, ce sera le plus grand changement de flux de travail que vous rencontrez. Découvrez comment ils fonctionnent et comment les utiliser le mieux, comment utiliser les modules Node.js et les packages NPM dans Deno, et plus encore.
Node.js est un runtime JavaScript basé sur le moteur Chrome V8 développé par Ryan Dahl et publié en 2009.
Deno est également un runtime javascript basé sur le moteur Chrome V8 développé par Ryan Dahl et publié en 2020. Il est créé sur la base d'une décennie d'expérience. Cela ne signifie pas nécessairement qu'il s'agit d'une suite de Node.js ou d'une alternative plus avancée, mais elle s'écarte du chemin de Node.js.
Voir aussi:
- Notre guide NEO, y compris notre index de contenu Deno (faites défiler vers la fin)
- Comparaison de Node.js vs Deno, et un guide pour sélectionner des outils qui conviennent à une situation spécifique
Différences principales: Deno prend en charge les API TypeScript, Sécurité, test et navigateur. Le traitement des modules a reçu moins d'attention, mais il peut être le plus grand changement dans la façon dont les applications JavaScript sont créées. Avant de discuter de Deno, permettez-moi de vous ramener à une époque plus simple ...
points clés
- Deno est un runtime JavaScript basé sur le moteur Chrome V8 qui s'écarte de Node.js en prenant en charge les API TypeScript, de sécurité, de test et de navigateur nativement. Il choisit également d'utiliser des modules ES2015, qui sont importés à partir d'URL absolues ou relatives, contrairement à Node.js en utilisant CommonJS.
- Deno n'a pas de gestionnaire de packages comme NPM dans Node.js. Au lieu de cela, lorsqu'il rencontre la URL d'un module dans le script, il le télécharge et le cache dans le répertoire global, ce qui signifie que peu importe le nombre de projets qui y font référence, seule une copie de la version de module spécifique est nécessaire.
- Deno permet le versioning des URL du module afin que les versions de code spécifiques puissent être référencées. Il prend également en charge l'importation de chaque module utilisé dans un projet à l'aide d'un fichier de dépendance unique, ou attribuant un nom à une URL complète ou partielle à l'aide d'une carte d'importation.
- La plate-forme a une sécurité intégrée, restreint le système de fichiers et l'accès au réseau et offre des options de vérification d'intégrité. Il prend également en charge l'utilisation de l'API Node.js et des modules multiplateformes qui s'exécutent sur Node.js et Deno sans traitement spécial, et ces modules peuvent devenir de plus en plus populaires car l'écosystème d'exécution JavaScript continue d'évoluer d'autant plus courant.
module node.js
En 2009, JavaScript n'avait pas de système de module standard. Une partie de cela est due à ses antécédents de navigateur, et il faudra plusieurs années à apparaître ES6 / ES2015.
node.js est inimaginable s'il ne fournit pas de modules, il adopte donc les communs de plusieurs solutions de contournement de la communauté. Cela a conduit au développement du Node Package Manager (NPM), qui permet aux développeurs de rechercher, d'utiliser et de publier facilement leurs propres modules JavaScript.
L'utilisation du NPM a augmenté de façon exponentielle. Il est devenu le gestionnaire de packages le plus populaire de tous les temps et, à la mi-2020, il a accueilli près de 1,5 million de modules avec plus de 800 nouveaux ajouts par jour (source: moduleCounts.com).
module deno
Deno Sélectionnez pour utiliser les modules ES2015, que vous pouvez importer à partir d'URL absolues ou relatives:
<code>import { something } from 'https://somewhere.com/somehow.js'; </code>
Le script de cette URL doit exporter la fonction ou d'autres valeurs en conséquence, par exemple:
<code>export function something() { console.log('something was executed'); } </code>
Deno utilise le même système de modules que l'implémenté dans les navigateurs Web modernes.
Node.js prend également en charge les modules ES2015 ... mais cela est compliqué et toujours expérimental. Les modules CommonJS et ES2015 semblent similaires, mais fonctionnent différemment:
- CommonJS charge les dépendances du système de fichiers au besoin lors de l'exécution du code.
- Le module ES pré-parse à partir de l'URL pour résoudre d'autres importations avant d'exécuter le code.
Node.js doit continuer à prendre en charge les communjs CommonJS et gérer les modules ES mixtes. Par conséquent, il suppose:
- Les fichiers se terminant par .cjs utilisent CommonJs
- Les fichiers se terminant par .mjs Utilisent le module ES
- Les fichiers se terminant par .js sont des communjs, à moins que le package le plus récent ne définisse "Type": "Module", ou nœud est exécuté avec l'option - Input-Type = Module.
Aucun gestionnaire de packages.
Une critique du NPM est l'énorme échelle du répertoire Node_Modules pour chaque projet. Comme un module nécessite une version spécifique d'autres modules, il peut atteindre des centaines de mégaoctets.
Je sais que vous pensez: "Ah, mais si ..."
… mais Deno a la possibilité de résoudre le problème soulevé par l'URL du module.
URL peu fiable
L'URL peut échouer temporairement, changer ou disparaître de façon permanente. Il s'agit d'un problème pour tout gestionnaire de packages, et NPM a également rencontré des problèmes dans le passé (il permet également l'installation des URL).
Pour les applications Node.js critiques, il est recommandé d'ajouter votre répertoire Node_Modules au référentiel GIT / Autre de votre projet.
Deno prend en charge des options similaires. Vous pouvez définir la variable d'environnement Deno_Dir sur le chemin du répertoire dans le projet actuel, par exemple:
<code>DENO_DIR=~/myproject/deno_modules` </code>
utilisé dans Windows CMD:
<code>> set DENO_DIR="C:\myproject\deno_modules" </code>ou Windows PowerShell:
<code>> $env:DENO_DIR="C:\myproject\deno_modules" </code>Lorsque votre application s'exécute, Deno cache les modules à ce répertoire afin qu'ils puissent être ajoutés au référentiel de contrôle source du projet.
Vous pouvez également envisager de regrouper les dépendances en un seul fichier JavaScript ou TypeScript. La commande Deno Bundle peut le faire en une seule étape:
<code>deno bundle myscript.js myscript.bundle.js</code>où myscript.js est un script d'entrée qui est généralement exécuté à l'aide de Deno Run. Le fichier MyScript.bundle.js autonome généré peut être déployé sur un serveur en temps réel.
pack avec top attend
Deno prend en charge l'attente de niveau supérieur: pas besoin d'envelopper l'appel dans une fonction asynchrone anonyme. Malheureusement, l'attente de niveau supérieur échoue dans le bundle, de sorte que la fonction de wrapper doit être ajoutée. Il s'agit d'un problème connu et sera résolu dans une version future.
Dernier: Méfiez-vous des modules de NEno aléatoires sur des URL inhabituelles! Les URL Deno, Github ou Bitbucket avec une bonne documentation et une bonne contribution de la communauté sont généralement plus sûres.
Contrôle de la version du module
Idéalement, l'URL du module doit être versionnée afin que vous puissiez référencer une version de code spécifique. Par exemple, la bibliothèque standard Deno vous permet de charger des versions spécifiques des modules de serveur HTTP:
<code>import { something } from 'https://somewhere.com/somehow.js'; </code>
Vous pouvez également vous référer à la branche maître:
<code>export function something() { console.log('something was executed'); } </code>
mais cela téléchargera la dernière version, et les versions futures peuvent être incompatibles avec votre application.
Vous pouvez utiliser des conventions de contrôle de version similaires pour publier des modules Deno sur vos propres serveurs, mais à mesure qu'il devient plus populaire, votre site Web peut recevoir beaucoup de trafic. Un moyen plus fiable consiste à utiliser un référentiel de services comme GitHub et à attribuer une balise GIT à chaque version. Des services tels que denopkg.com et untkg.com peuvent être utilisés pour fournir des URL du module version publique.
Module multiple mentionne
Vous devrez peut-être référencer la même URL du module dans de nombreux fichiers dans la base de code d'application. Lorsque vous souhaitez mettre à jour le module, vous devez modifier l'URL à plusieurs endroits. La recherche et le remplacement peuvent fonctionner, mais il est maladroit, sujet aux erreurs et augmente la probabilité de conflits de fusion.
Alternativement, vous pouvez utiliser un fichier de dépendance unique qui importe chaque module utilisé dans le projet. Il est généralement nommé Deps.js ou Deps.ts:
<code>DENO_DIR=~/myproject/deno_modules` </code>
Vous pouvez ensuite référencer le module Deno à partir de Deps.js dans tout autre fichier de projet:
<code>> set DENO_DIR="C:\myproject\deno_modules" </code>
Lorsque le module est mis à jour, il vous suffit de modifier la référence URL unique dans Deps.js.
Une autre option consiste à importer la carte. Il s'agit d'un petit fichier JSON, généralement nommé import_map.json, qui attribue le nom à l'URL complète ou partielle:
<code>> $env:DENO_DIR="C:\myproject\deno_modules" </code>
Vous pouvez référencer le nom de la carte d'importation dans n'importe quel script:
<code>deno bundle myscript.js myscript.bundle.js</code>
Ensuite, lors de l'exécution de l'application avec Deno Run, importez le fichier JSON:
<code>import { serve } from 'https://deno.land/std@0.61.0/http/server.ts'; </code>
Les cartes d'importation sont actuellement une fonction instable, donc l'indicateur - un instable est requis. Cette fonctionnalité peut changer dans les futures versions NEO.
Intégrité de l'étude
Le code référencé à partir de l'URL peut être modifié ou piraté à votre insu. Des sites Web bien connus ont été piratés car ils sont directement liés au code client tiers. Imaginez combien de dégâts cela causerait si un script pouvait accéder aux ressources du serveur.
Deno a une sécurité intégrée, les scripts doivent donc être exécutés avec des drapeaux tels que - allow read et - allow-net pour limiter le système de fichiers et l'accès réseau. Cela aidera à prévenir certains problèmes, mais ce n'est pas un substitut pour vérifier l'intégrité du module!
Deno fournit une option de vérification d'intégrité. Si vous utilisez un fichier de dépendance unique (comme mentionné ci-dessus), c'est le plus facile:
<code>import { serve } from 'https://deno.land/std/http/server.ts'; </code>
La commande deno suivante génère un fichier Lock.json contenant la somme de contrôle de tous les modules deno importés:
<code>import { something } from 'https://somewhere.com/somehow.js'; </code>
Lorsqu'un autre développeur clones de votre projet, ils peuvent recharger chaque module et vérifier l'intégrité de chaque module pour s'assurer qu'ils sont les mêmes que votre module:
<code>export function something() { console.log('something was executed'); } </code>
Deno n'applique pas les vérifications d'intégrité. Il est préférable d'exécuter ces processus en tant que crochets GIT automatisés ou opérations similaires.
en utilisant le module Node.js
De nombreuses API Node.js ont été copiées pour Deno - voir deno.land/std/node. Ce n'est pas une liste complète, mais vous trouverez des fichiers, des événements, des tampons et des modules utilitaires communs.
La collection de près de 800 modules de NEno tiers est fournie sur
deno.land/x. Il existe des cadres similaires à express.js, des pilotes de base de données, des fonctions de chiffrement, des outils de ligne de commande, etc.Vous trouverez également une liste sélectionnée de modules populaires, tels que Awesome Deno.
Cependant, vous pourrez peut-être importer l'un des 1,5 million de modules Node.js. Plusieurs CDN peuvent convertir les packages NPM / CommonJS en URL du module ES2015, y compris:
- skypack.dev
- jspm.org
- untkg.com
- (ajouter? String de requête du module dans URL)
Heureusement, les modules multiplateformes qui s'exécutent sur Node.js et Deno sans traitement spécial peuvent émerger alors que l'écosystème d'exécution JavaScript continue d'évoluer.
Plus de questions de module
se référant aux URL du module est controversé, et pour ceux du NPM très populaire, cela peut être dérangeant. Autrement dit, Deno simplifie l'utilisation des modules JavaScript. Il aborde plusieurs critiques de NPM tout en atténuant de nombreux effets secondaires potentiels du module ES2015.
Mais c'est loin d'être parfait.
Il est facile de publier des modules NPM, et il est également facile de rechercher npmjs.com. Vos termes de recherche peuvent rendre 500 résultats, mais en classant les packages par popularité, qualité et facteurs de maintenance, vous pouvez minimiser la paralysie de sélection.Soumettre le code à une liste de modules tiers dans Deno est difficile. Les modules doivent passer des tests automatisés, mais la qualité ne peut pas être garantie et les résultats de recherche sont organisés par ordre alphabétique. Une fois que le nombre de modules atteint quelques milliers, les systèmes existants ne dureront probablement pas.
Il est également facile de mettre à jour les packages dans NPM. Vous pouvez exécuter NPM OUTDAT pour afficher la liste de mise à jour, ou simplement exécuter NPM Installer lors de la référence d'un numéro de version plus lâche dans package.json.
Il n'y a pas d'option de vérification de mise à jour équivalente dans Deno. Il existe des projets de type gestionnaire de packages disponibles, y compris Trex, des dépendances à la mise à jour de Deno et des versions de deno-ceck, mais ces projets s'appuient généralement sur des cartes d'importation et comptent toujours sur les URL versés sémantiques.
devriez-vous passer à Deno?
Node.js n'est pas mort. Il a mûri et a dix ans d'expérience dans les modules, la technologie, la documentation et l'exécution.
Deno utilise la plupart de ces connaissances, mais elle est très nouvelle et se développera rapidement dans les années à venir. Il peut être trop tôt pour les grandes applications, mais pour les petits projets, le risque est moindre. Ceux qui utilisent déjà TypeScript ou d'autres langues peuvent profiter d'une expérience beaucoup plus facile, mais les développeurs Node.js n'auront pas de difficulté à se convertir en Deno puis à se convertir.
Cependant, Deno a un avantage intéressant:
- son système de modules est le même que le client javascript
- Il implémente de nombreuses API de navigateur: vous pouvez référencer les objets de fenêtre, définir des écouteurs d'événements, démarrer des travailleurs Web, faire des demandes de serveur distantes à l'aide de l'API Fetch (), etc.
Le rêve des bibliothèques JavaScript isomorphes qui travaillent sur le client ou le serveur est un grand pas en avant.
Bases de Deno
Apprenez rapidement Deno. Notre collection de bases de Deno vous aide à faire le premier pas dans le monde de Neno et au-delà, et nous continuons à y ajouter du contenu. Nous vous fournirons les tutoriels dont vous avez besoin pour devenir un professionnel. Vous pouvez toujours mettre à jour l'index à la fin de notre guide de démarrage de Deno:
➤ Bases de Deno
Les questions fréquemment posées sur le module Deno
Qu'est-ce qu'un module deno? Le module Deno est une unité de code dans Deno, qui est un runtime sécurisé pour JavaScript et TypeScript. Les modules dans Deno sont similaires aux modules CommonJS dans les modules Node.js et ES6 dans JavaScript moderne. Ils permettent aux développeurs d'organiser et de partager du code en le décomposant en blocs réutilisables et encapsulés.
Comment créer des modules dans Deno? La création de modules dans Deno est simple. Vous pouvez créer un nouveau fichier (par exemple, module.ts), définir vos fonctions ou classes, puis les exporter à l'aide du mot-clé d'exportation. D'autres scripts Deno peuvent importer et utiliser ces modules.
Comment importer des modules dans Deno? Pour importer un module dans Deno, vous pouvez utiliser le mot-clé d'importation suivi par le chemin ou l'URL du module. Deno prend en charge les importations locales et distantes.
Puis-je utiliser des modules tiers dans Deno? Oui, Deno prend en charge l'importation de modules directement à partir des URL, vous permettant d'utiliser des modules tiers hébergés sur le registre des packages ou le référentiel GitHub.
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!

La puissance du cadre JavaScript réside dans la simplification du développement, l'amélioration de l'expérience utilisateur et les performances des applications. Lorsque vous choisissez un cadre, considérez: 1. Taille et complexité du projet, 2. Expérience d'équipe, 3. Écosystème et soutien communautaire.

INTRODUCTION Je sais que vous pouvez le trouver étrange, que doit faire exactement JavaScript, C et Browser? Ils semblent sans rapport, mais en fait, ils jouent un rôle très important dans le développement Web moderne. Aujourd'hui, nous discuterons du lien étroit entre ces trois. Grâce à cet article, vous apprendrez comment JavaScript fonctionne dans le navigateur, le rôle de C dans le moteur du navigateur et comment ils fonctionnent ensemble pour stimuler le rendu et l'interaction des pages Web. Nous connaissons tous la relation entre JavaScript et Browser. JavaScript est la langue principale du développement frontal. Il fonctionne directement dans le navigateur, rendant les pages Web vives et intéressantes. Vous êtes-vous déjà demandé pourquoi javascr

Node.js excelle dans des E / S efficaces, en grande partie grâce aux flux. Streams traite les données progressivement, en évitant la surcharge de mémoire - idéal pour les fichiers volumineux, les tâches réseau et les applications en temps réel. Combiner les flux avec la sécurité de type dactylographié crée un powe

Les différences de performance et d'efficacité entre Python et JavaScript se reflètent principalement dans: 1) comme un langage interprété, Python fonctionne lentement mais a une efficacité de développement élevée et convient au développement rapide des prototypes; 2) JavaScript est limité au thread unique dans le navigateur, mais les E / S multi-threading et asynchrones peuvent être utilisées pour améliorer les performances dans Node.js, et les deux ont des avantages dans les projets réels.

JavaScript est originaire de 1995 et a été créé par Brandon Ike, et a réalisé que la langue en langue C. 1.C offre des capacités de programmation élevées et au niveau du système pour JavaScript. 2. La gestion de la mémoire de JavaScript et l'optimisation des performances reposent sur le langage C. 3. La fonctionnalité multiplateforme du langage C aide JavaScript à s'exécuter efficacement sur différents systèmes d'exploitation.

JavaScript s'exécute dans les navigateurs et les environnements Node.js et s'appuie sur le moteur JavaScript pour analyser et exécuter du code. 1) Générer une arborescence de syntaxe abstraite (AST) au stade d'analyse; 2) Convertir AST en bytecode ou code machine à l'étape de compilation; 3) Exécutez le code compilé à l'étape d'exécution.

Les tendances futures de Python et JavaScript incluent: 1. Python consolidera sa position dans les domaines de l'informatique scientifique et de l'IA, 2. JavaScript favorisera le développement de la technologie Web, 3. Le développement de plate-forme multiplié deviendra un sujet brûlant, et 4. L'optimisation des performances sera le focus. Les deux continueront d'étendre les scénarios d'application dans leurs champs respectifs et de faire plus de percées dans les performances.

Les choix de Python et JavaScript dans les environnements de développement sont importants. 1) L'environnement de développement de Python comprend Pycharm, Jupyternotebook et Anaconda, qui conviennent à la science des données et au prototypage rapide. 2) L'environnement de développement de JavaScript comprend Node.js, VScode et WebPack, qui conviennent au développement frontal et back-end. Le choix des bons outils en fonction des besoins du projet peut améliorer l'efficacité du développement et le taux de réussite du projet.


Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

MinGW - GNU minimaliste pour Windows
Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.

Version crackée d'EditPlus en chinois
Petite taille, coloration syntaxique, ne prend pas en charge la fonction d'invite de code

Télécharger la version Mac de l'éditeur Atom
L'éditeur open source le plus populaire

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version anglaise
Recommandé : version Win, prend en charge les invites de code !
