搜索
首页web前端js教程Deno中如何使用 Node 模块?

Deno中如何使用 Node 模块?

尽管方法不是很好,但有时别无选择。

Deno 是基于 Web 技术的服务器端代码执行环境。

  • Node 使用 JavaScript 与 commonjs 模块,并把 npm/yarn 作为其包管理器。【视频教程推荐:node js教程 】
  • Deno 使用 Typescript 或 JavaScript, 以及现代的 javascript 导入语句。它不需要包管理器。

想要导入 deno 中的模块,应该通过 URL 引用:

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

你可以在 Deno 标准库Deno 第三方模块列表中找到更多需要的模块,但是它们并不能满足你所需要的一切。有时只能使用依赖 npm 生态所提供的模块。下面是从最方便到最繁琐的一些方法:

1. 如果模块使用了 ES 模块的 import/export 语法。

你在 deno 中所使用的库不一定要来自推荐的 Deno 包,它们可以来自任何 URL,只要它们用了 import 语法即可。通过 unpkg 直接从 npm 存储库内部访问这些文件不失为一个好方法。

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

2. 如果模块本身没有使用 imports,但源代码用到了

如果是通过 npm 编译的模块,或使用了错误格式的模块,那么是否使用其源代码可能需要一些运气。许多流行库的源代码已经从 commonjs 迁移到了符合标准的 ES 模块的 import 语法。

一些软件包有单独的 src/dist/ 目录,其中 ES 模块风格的代码位于 src/ 中,但 npm 中并未将其包含在软件包中。在这种情况下,你可以直接从源进行导入。

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

可以通过单击 github 上的 “raw” 按钮得到这个 URL,进而获取原始的 JS 文件。使用 github cdn 或查看文件是否可以通过 github 页面进行访问,这样更直接,但却是可行的。

特别注意: 一些库将 ES 模块与 webpack 一起使用,或者使用模块加载器,使它们可以从 Node 模块中导入,如下所示:

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

标准的导入方法是,要以 ./ 开头或者是一个可以正常工作的 URL:

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

不过你也可以尝试下一种方法:

3. 导入 commonjs 模块

幸运的是,有一个名为 JSPM 的服务,它能够解析第三方模块并对 commonjs 模块进行编译来用作 ES 模块导入。该工具可用于在浏览器中使用 Node 模块,而无需构建步骤。但是我们也可以在这里用到它。

在我最近的项目中,想进行推送通知,其中涉及生成 VAPID 的凭据,有一个可以加密的 deno 密码库,但是整个开发过程很困难,我宁愿使用流行的 web-push 库。可以用 JSPM CDN 和如下 URL 进行导入:

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

这样可以在 deno 中向像使用其他任何模块一样去使用它。

使 Typescript 类型能够正常工作

在 deno 中使用 typecipt 有一个不错的功能,就是很容易能够为模块提供了非常完美的自动补全功能。如果编辑器的 deno 扩展知道类型定义,它甚至可以自动补全第三方模块。

尽管这对代码是否能够正常工作不是必要的,但是可以帮你很好的维护代码。

在我导入另一个名为 fast-xml-parser 的模块时,我注意到它有一个类型定义文件是以 .d.ts 结尾的。这些文件描述了各种接口,甚至适用于 JavaScript.js 文件。有时你还可以在 @types\somemodule 存储库中找到类型定义文件。

例如:https://github.com/Definitely...

通过这个文件 typescript 可以自动完成从 JavaScript 文件导入的内容。即使对于用 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;

我从定义文件中将类型定义导入为 FastXMLParser(请注意是大写的 F),它不包含任何有效代码,但这是一个与我们要导入的代码具有相同类型的对象。

我从 JSPM 中将代码导入为 fastXMLParser(小写字母 f),这是有效的代码,但没有类型。

接下来,把它们组合在一起来创建 parser,即 FastXMLParser 类型的 fastXMLParser

最后希望你能尝试一下deno。Deno 能够使用任何一种用于 Web 甚至是用于 node/npm 的模块,确实为这个新的服务器端库生态奠定了良好的基础。 

更多编程相关知识,可访问:编程教学!!

以上是Deno中如何使用 Node 模块?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:segmentfault。如有侵权,请联系admin@php.cn删除
node、nvm与npm有什么区别node、nvm与npm有什么区别Jul 04, 2022 pm 04:24 PM

node、nvm与npm的区别:1、nodejs是项目开发时所需要的代码库,nvm是nodejs版本管理工具,npm是nodejs包管理工具;2、nodejs能够使得javascript能够脱离浏览器运行,nvm能够管理nodejs和npm的版本,npm能够管理nodejs的第三方插件。

Vercel是什么?怎么部署Node服务?Vercel是什么?怎么部署Node服务?May 07, 2022 pm 09:34 PM

Vercel是什么?本篇文章带大家了解一下Vercel,并介绍一下在Vercel中部署 Node 服务的方法,希望对大家有所帮助!

node爬取数据实例:聊聊怎么抓取小说章节node爬取数据实例:聊聊怎么抓取小说章节May 02, 2022 am 10:00 AM

node怎么爬取数据?下面本篇文章给大家分享一个node爬虫实例,聊聊利用node抓取小说章节的方法,希望对大家有所帮助!

node导出模块有哪两种方式node导出模块有哪两种方式Apr 22, 2022 pm 02:57 PM

node导出模块的两种方式:1、利用exports,该方法可以通过添加属性的方式导出,并且可以导出多个成员;2、利用“module.exports”,该方法可以直接通过为“module.exports”赋值的方式导出模块,只能导出单个成员。

安装node时会自动安装npm吗安装node时会自动安装npm吗Apr 27, 2022 pm 03:51 PM

安装node时会自动安装npm;npm是nodejs平台默认的包管理工具,新版本的nodejs已经集成了npm,所以npm会随同nodejs一起安装,安装完成后可以利用“npm -v”命令查看是否安装成功。

聊聊V8的内存管理与垃圾回收算法聊聊V8的内存管理与垃圾回收算法Apr 27, 2022 pm 08:44 PM

本篇文章带大家了解一下V8引擎的内存管理与垃圾回收算法,希望对大家有所帮助!

node中是否包含dom和bomnode中是否包含dom和bomJul 06, 2022 am 10:19 AM

node中没有包含dom和bom;bom是指浏览器对象模型,bom是指文档对象模型,而node中采用ecmascript进行编码,并且没有浏览器也没有文档,是JavaScript运行在后端的环境平台,因此node中没有包含dom和bom。

聊聊Node.js path模块中的常用工具函数聊聊Node.js path模块中的常用工具函数Jun 08, 2022 pm 05:37 PM

本篇文章带大家聊聊Node.js中的path模块,介绍一下path的常见使用场景、执行机制,以及常用工具函数,希望对大家有所帮助!

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境