亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Deno中使用Node模塊的方法

發布時間:2020-09-04 10:16:59 來源:億速云 閱讀:242 作者:小新 欄目:web開發

這篇文章將為大家詳細講解有關Deno中使用Node模塊的方法,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

盡管方法不是很好,但有時別無選擇。

Deno 是基于 Web 技術的服務器端代碼執行環境。

  • Node 使用 JavaScript 與 commonjs 模塊,并把 npm/yarn 作為其包管理器。
  • 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模塊的方法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

句容市| 马公市| 齐齐哈尔市| 滁州市| 绥阳县| 兴宁市| 合肥市| 岗巴县| 潞城市| 曲靖市| 营口市| 阳山县| 西丰县| 桐柏县| 合作市| 兴安盟| 诸城市| 玛纳斯县| 同江市| 绥宁县| 奎屯市| 前郭尔| 南通市| 乐清市| 泰安市| 蓬莱市| 颍上县| 尚义县| 和政县| 东平县| 旅游| 班戈县| 招远市| 疏附县| 沾益县| 利辛县| 吉木乃县| 樟树市| 民和| 阿图什市| 登封市|