通俗易懂的Deno 入門教程,一看便會

来源:https://www.cnblogs.com/coderhf/archive/2020/05/20/12925869.html
-Advertisement-
Play Games

一、Deno 簡介 Deno 是一個 JavaScript/TypeScript 的運行時,預設使用安全環境執行代碼,有著卓越的開發體驗。Deno 含有以下功能亮點: 預設安全。外部代碼沒有文件系統、網路、環境的訪問許可權,除非顯式開啟。 支持開箱即用的 TypeScript 的環境。 只分發一個獨立 ...


 

一、Deno 簡介

Deno 是一個 JavaScript/TypeScript 的運行時,預設使用安全環境執行代碼,有著卓越的開發體驗。Deno 含有以下功能亮點:

預設安全。外部代碼沒有文件系統、網路、環境的訪問許可權,除非顯式開啟。

支持開箱即用的 TypeScript 的環境。

只分發一個獨立的可執行文件(deno)。

有著內建的工具箱,比如一個依賴信息查看器(deno info)和一個代碼格式化工具(deno fmt)。

有一組經過審計的 標準模塊,保證能在 Deno 上工作。

腳本代碼能被打包為一個單獨的 JavaScript 文件。

Deno 是一個跨平臺的運行時,即基於 Google V8 引擎的運行時環境,該運行時環境是使用 Rust 語言開發的,並使用 Tokio 庫來構建事件迴圈系統。Deno 建立在 V8、Rust 和 Tokio 的基礎上,它的架構如下:

1.1 Rust

Rust 是由 Mozilla 主導開發的通用、編譯型編程語言。設計準則為 “安全、併發、實用”,支持函數式、併發式、過程式以及面向對象的編程風格。Deno 使用 Rust 語言來封裝 V8 引擎,通過 libdeno 綁定,我們就可以在 JavaScript 中調用隔離的功能。

1.2 Tokio

Tokio 是 Rust 編程語言的非同步運行時,提供非同步事件驅動平臺,構建快速,可靠和輕量級網路應用。利用 Rust 的所有權和併發模型確保線程安全。Tokio 構建於 Rust 之上,提供極快的性能,使其成為高性能伺服器應用程式的理想選擇。在 Deno 中 Tokio 用於並行執行所有的非同步 IO 任務。

1.3 V8

V8 是一個由 Google 開發的開源 JavaScript 引擎,用於 Google Chrome 及 Chromium 中。V8 在運行之前將JavaScript 編譯成了機器代碼,而非位元組碼或是解釋執行它,以此提升性能。更進一步,使用瞭如內聯緩存(inline caching)等方法來提高性能。有了這些功能,JavaScript 程式與 V8 引擎的速度媲美二進位編譯。在 Deno 中,V8 引擎用於執行 JavaScript 代碼。

二、安裝 Deno

Deno 能夠在 macOS、Linux 和 Windows 上運行。Deno 是一個單獨的可執行文件,它沒有額外的依賴。你可以通過以下方式來安裝它:

使用 Shell (macOS 和 Linux):

curl -fsSL https://deno.land/x/install/install.sh | sh

使用 PowerShell (Windows):

iwr https://deno.land/x/install/install.ps1 -useb | iex

使用 Scoop (Windows):

scoop install deno

使用 Chocolatey (Windows):

choco install deno

使用 Homebrew (macOS):

brew install deno

使用 Cargo (Windows,macOS,Linux):

cargo install deno

Deno 也可以手動安裝,只需從 github.com/denoland/deno/releases 下載一個 zip 文件。它僅包含一個單獨的可執行文件。在 macOS 和 Linux 上,你需要為它設置執行許可權。當你成功安裝之後,可以通過執行 deno --version 命令來查看已安裝的 Deno 版本:

$ deno --version
deno 1.0.0
v8 8.4.300
typescript 3.9.2

2.1 deno-cli

deno-cli 命令行界面提供了一組集成功能,讓你可以沉浸在 Deno 的專有開發環境中。以下是 Deno 1.0.0 版本支持的所有子命令:

SUBCOMMANDS:
bundle Bundle module and dependencies into single file
cache Cache the dependencies
completions Generate shell completions
doc Show documentation for a module
eval Eval script
fmt Format source files
help Prints this message or the help of the given subcommand(s)
info Show info about cache or info related to source file
install Install script as an executable
repl Read Eval Print Loop
run Run a program given a filename or url to the module
test Run tests
types Print runtime TypeScript declarations
upgrade Upgrade deno executable to given version

 

2.2 REPL

在命令中輸入 deno 命令,你就會啟動一個 REPL(Read-Execute-Print-Loop):

$ deno
Deno 1.0.0
exit using ctrl+d or close()

1 + 2
3
const name = “semlinker”;
undefined
console.log(name);
semlinker
undefined

三、Deno 初體驗

3.1 welcome demo

相信一些讀者安裝完 Deno 已經迫不及待了,現在我們立馬來體驗一下 Deno 應用程式。首先打開你熟悉的命令行,然後在命令行輸入以下命令:

$ deno run https://deno.land/std/examples/welcome.ts
Download https://deno.land/std/examples/welcome.ts
Warning Implicitly using master branch https://deno.land/std/examples/welcome.ts
Compile https://deno.land/std/examples/welcome.ts
Welcome to Deno 

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.這裡編寫一個類用於開啟活動,首先在onCreateView()方法中載入了我們剛剛創建的news_content_frag佈局,這個沒什麼好解釋的,接下來又提供了一個refresh()方法,這個方法就是用於將新聞的標題和內容顯示在界面上的。可以看到,這裡通過findViewById()方法分別獲 ...
  • 插件 1. "get" Navigate between screens, display snackbars, dialogs and bottomSheets, from anywhere in your code without context with Get. 1. "FlutterVis ...
  • 淺析Block閉包 簡單來說,block就是將函數及其上下文封裝起來的對象,從功能上可以把它看作是C++中的匿名函數,也可稱之為塊。 Block類型寫法: 返回值+(^塊名)+(參數)= ^(參數){ 內容 } 如下所示: Block結構 Block存儲區域 Block本質上也是OC對象,所以每個B ...
  • 再探NSString NSString應該是oc開發中最常用的一個數據類型了,這次對該類型再進行一次全方位的探索與總結。 NSString本質上屬於OC類對象,繼承於NSObject,遵守NSCopying, NSMutableCopying, NSSecureCoding協議。 NSMutable ...
  • OC屬性與實例變數 無論是java還是c++這些面向對象的語言都會有屬性這一概念,通常而言,對於java屬性和實例變數沒有什麼區別,java官方定義的屬性如下: 屬性是指get或者set方法名 去掉get或者set後,把剩餘的部分首字母改為小寫後,即為這個類的 屬性 其實objective C與之類 ...
  • 寫在前面 書籍介紹:本書由首章Node介紹為索引,涉及Node的各個方面,主要內容包含模塊機制的揭示、非同步I/O實現原理的展現、非同步編程的探討、記憶體控制的介紹、二進位數據Buffer的細節、Node中的網路編程基礎、Node中的Web開發、進程間的消息傳遞、Node測試以及通過Node構建產品需要的 ...
  • Notification 是什麼 MDN: Notifications API 的 Notification 介面用於配置和向用戶顯示桌面通知。這些通知的外觀和特定功能因平臺而異,但通常它們提供了一種向用戶非同步提供信息的方式。 其實,MDN 的說明已經可以讓我們很清楚知道 Notification ...
  • 【目錄】 一、jQuery操作標簽 二、jQuery綁定事件 一、jQuery操作標簽 1、操作類 js版本 jQuery版本classList.add() addClass()classList.remove() removeClass()classList.contains() hasClass ...
一周排行
    -Advertisement-
    Play Games
  • 前言 在我們開發過程中基本上不可或缺的用到一些敏感機密數據,比如SQL伺服器的連接串或者是OAuth2的Secret等,這些敏感數據在代碼中是不太安全的,我們不應該在源代碼中存儲密碼和其他的敏感數據,一種推薦的方式是通過Asp.Net Core的機密管理器。 機密管理器 在 ASP.NET Core ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 順序棧的介面程式 目錄順序棧的介面程式頭文件創建順序棧入棧出棧利用棧將10進位轉16進位數驗證 頭文件 #include <stdio.h> #include <stdbool.h> #include <stdlib.h> 創建順序棧 // 指的是順序棧中的元素的數據類型,用戶可以根據需要進行修改 ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • C總結與剖析:關鍵字篇 -- <<C語言深度解剖>> 目錄C總結與剖析:關鍵字篇 -- <<C語言深度解剖>>程式的本質:二進位文件變數1.變數:記憶體上的某個位置開闢的空間2.變數的初始化3.為什麼要有變數4.局部變數與全局變數5.變數的大小由類型決定6.任何一個變數,記憶體賦值都是從低地址開始往高地 ...
  • 如果讓你來做一個有狀態流式應用的故障恢復,你會如何來做呢? 單機和多機會遇到什麼不同的問題? Flink Checkpoint 是做什麼用的?原理是什麼? ...
  • C++ 多級繼承 多級繼承是一種面向對象編程(OOP)特性,允許一個類從多個基類繼承屬性和方法。它使代碼更易於組織和維護,並促進代碼重用。 多級繼承的語法 在 C++ 中,使用 : 符號來指定繼承關係。多級繼承的語法如下: class DerivedClass : public BaseClass1 ...
  • 前言 什麼是SpringCloud? Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分散式系統的開發,比如服務註冊、服務發現、網關、路由、鏈路追蹤等。Spring Cloud 並不是重覆造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從 ...
  • class_template 類模板和函數模板的定義和使用類似,我們已經進行了介紹。有時,有兩個或多個類,其功能是相同的,僅僅是數據類型不同。類模板用於實現類所需數據的類型參數化 template<class NameType, class AgeType> class Person { publi ...
  • 目錄system v IPC簡介共用記憶體需要用到的函數介面shmget函數--獲取對象IDshmat函數--獲得映射空間shmctl函數--釋放資源共用記憶體實現思路註意 system v IPC簡介 消息隊列、共用記憶體和信號量統稱為system v IPC(進程間通信機制),V是羅馬數字5,是UNI ...