這篇文章將為大家詳細(xì)講解有關(guān)Deno中使用Node模塊的方法,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
創(chuàng)新互聯(lián)專注于南丹企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開發(fā),商城網(wǎng)站建設(shè)。南丹網(wǎng)站建設(shè)公司,為南丹等地區(qū)提供建站服務(wù)。全流程按需策劃,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)Deno 是基于 Web 技術(shù)的服務(wù)器端代碼執(zhí)行環(huán)境。
想要導(dǎo)入 deno 中的模塊,應(yīng)該通過 URL 引用:
import { serve } from "https://deno.land/std/http/server.ts";
你可以在 Deno 標(biāo)準(zhǔn)庫 或 Deno 第三方模塊列表中找到更多需要的模塊,但是它們并不能滿足你所需要的一切。有時(shí)只能使用依賴 npm 生態(tài)所提供的模塊。下面是從最方便到最繁瑣的一些方法:
你在 deno 中所使用的庫不一定要來自推薦的 Deno 包,它們可以來自任何 URL,只要它們用了 import
語法即可。通過 unpkg 直接從 npm 存儲(chǔ)庫內(nèi)部訪問這些文件不失為一個(gè)好方法。
import throttle from https://unpkg.com/lodash@4.17.19/throttle.js
如果是通過 npm 編譯的模塊,或使用了錯(cuò)誤格式的模塊,那么是否使用其源代碼可能需要一些運(yùn)氣。許多流行庫的源代碼已經(jīng)從 commonjs 遷移到了符合標(biāo)準(zhǔn)的 ES 模塊的 import
語法。
一些軟件包有單獨(dú)的 src/
和 dist/
目錄,其中 ES 模塊風(fēng)格的代碼位于 src/
中,但 npm 中并未將其包含在軟件包中。在這種情況下,你可以直接從源進(jìn)行導(dǎo)入。
import throttle from "https://raw.githubusercontent.com/lodash/lodash/master/throttle.js";
可以通過單擊 github 上的 “raw” 按鈕得到這個(gè) URL,進(jìn)而獲取原始的 JS 文件。使用 github cdn 或查看文件是否可以通過 github 頁面進(jìn)行訪問,這樣更直接,但卻是可行的。
特別注意: 一些庫將 ES 模塊與 webpack 一起使用,或者使用模塊加載器,使它們可以從 Node 模塊中導(dǎo)入,如下所示:
//不好的用法: import { someFunction } from "modulename"; import { someOtherFunction } from "modulename/file.js";
標(biāo)準(zhǔn)的導(dǎo)入方法是,要以 ./
開頭或者是一個(gè)可以正常工作的 URL:
//標(biāo)準(zhǔn)的用法: import { someOtherFunction } from "./folder/file.js";
不過你也可以嘗試下一種方法:
幸運(yùn)的是,有一個(gè)名為 JSPM 的服務(wù),它能夠解析第三方模塊并對(duì) commonjs 模塊進(jìn)行編譯來用作 ES 模塊導(dǎo)入。該工具可用于在瀏覽器中使用 Node 模塊,而無需構(gòu)建步驟。但是我們也可以在這里用到它。
在我最近的項(xiàng)目中,想進(jìn)行推送通知,其中涉及生成 VAPID 的憑據(jù),有一個(gè)可以加密的 deno 密碼庫,但是整個(gè)開發(fā)過程很困難,我寧愿使用流行的 web-push 庫??梢杂?JSPM CDN 和如下 URL 進(jìn)行導(dǎo)入:
import webPush from "https://dev.jspm.io/web-push";
這樣可以在 deno 中向像使用其他任何模塊一樣去使用它。
在 deno 中使用 typecipt 有一個(gè)不錯(cuò)的功能,就是很容易能夠?yàn)槟K提供了非常完美的自動(dòng)補(bǔ)全功能。如果編輯器的 deno 擴(kuò)展知道類型定義,它甚至可以自動(dòng)補(bǔ)全第三方模塊。
盡管這對(duì)代碼是否能夠正常工作不是必要的,但是可以幫你很好的維護(hù)代碼。
在我導(dǎo)入另一個(gè)名為 fast-xml-parser 的模塊時(shí),我注意到它有一個(gè)類型定義文件是以 .d.ts
結(jié)尾的。這些文件描述了各種接口,甚至適用于 JavaScript.js 文件。有時(shí)你還可以在 @types\somemodule
存儲(chǔ)庫中找到類型定義文件。
例如:https://github.com/Definitely...
通過這個(gè)文件 typescript 可以自動(dòng)完成從 JavaScript 文件導(dǎo)入的內(nèi)容。即使對(duì)于用 JSPM 導(dǎo)入的文件也是如此:
// 導(dǎo)入 fast-xml-parser 庫 import fastXMLParser from "https://dev.jspm.io/fast-xml-parser"; // 從 fast-xml-parser 的源代碼導(dǎo)入類型定義文件 import * as FastXMLParser from "https://raw.githubusercontent.com/NaturalIntelligence/fast-xml-parser/master/src/parser.d.ts"; //將 parser 與以下類型一起使用 const parser = fastXMLParser as typeof FastXMLParser;
我從定義文件中將類型定義導(dǎo)入為 FastXMLParser
(請(qǐng)注意是大寫的 F),它不包含任何有效代碼,但這是一個(gè)與我們要導(dǎo)入的代碼具有相同類型的對(duì)象。
我從 JSPM 中將代碼導(dǎo)入為 fastXMLParser
(小寫字母 f),這是有效的代碼,但沒有類型。
接下來,把它們組合在一起來創(chuàng)建 parser
,即 FastXMLParser
類型的 fastXMLParser
。
最后希望你能嘗試一下deno。Deno 能夠使用任何一種用于 Web 甚至是用于 node/npm 的模塊,確實(shí)為這個(gè)新的服務(wù)器端庫生態(tài)奠定了良好的基礎(chǔ)。
關(guān)于Deno中使用Node模塊的方法就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。