Deno 是基於 Web 技術的伺服器端程式碼執行環境。
想要導入deno 中的模組,應該透過URL 引用:
import { serve } from "https://deno.land/std/http/server.ts";
你可以在Deno 標準函式庫 或Deno 第三方模組列表中找到更多需要的模組,但是它們並不能滿足你所需要的一切。有時只能使用依賴 npm 生態所提供的模組。以下是從最方便到最繁瑣的一些方法:
你在 deno 中所使用的函式庫不一定要來自推薦的 Deno 包,它們可以來自任何 URL,只要它們用了 import
語法即可。透過 unpkg 直接從 npm 儲存庫內部存取這些檔案不失為一個好方法。
import throttle from https://unpkg.com/lodash@4.17.19/throttle.js
#如果是透過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";
不過你也可以嘗試下一個方法:
幸運的是,有一個名為JSPM 的服務,它能夠解析第三方模組並對commonjs 模組進行編譯來用作ES 模組導入。此工具可用於在瀏覽器中使用 Node 模組,而無需建置步驟。但是我們也可以在這裡用到它。
在我最近的專案中,想進行推播通知,其中涉及產生VAPID 的憑證,有一個可以加密的deno 密碼庫,但是整個開發過程很困難,我寧願使用流行的web -push 函式庫。可以用 JSPM CDN 和如下 URL 進行導入:
import webPush from "https://dev.jspm.io/web-push";
這樣可以在 deno 中像使用其他任何模組一樣去使用它。
在 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中文網其他相關文章!