Deno 入门全攻略

296 阅读4分钟

Deno 是一个现代化的 JavaScript 和 TypeScript 运行时环境,由 Node.js 创始人开发,采用 Rust 语言编写,内置 TypeScript 支持,安全性高,使用简单,无需传统的包管理器(npm),适合初学者和进阶开发者快速上手。


1. Deno 基础知识

1.1 什么是 Deno?

  • Deno 是一个运行 JavaScript 和 TypeScript 的环境,类似于 Node.js,但更加现代和安全。
  • 它默认支持 TypeScript,运行时自动编译,无需额外配置。
  • 采用 URL 直接导入模块,无需 package.jsonnode_modules
  • 默认禁止访问文件系统、网络等敏感资源,需要显式授权权限。

1.2 Deno 安装方法

  • Mac/Linux
    打开终端,执行:

    curl -fsSL https://deno.land/x/install/install.sh | sh
    
  • Windows(PowerShell)

    iwr https://deno.land/x/install/install.ps1 -useb | iex
    
  • 安装完成后,执行以下命令验证:

    deno --version
    

    如果显示版本号,说明安装成功


1.3 常用 Deno 命令介绍

命令作用说明
deno run 文件名运行 JavaScript/TypeScript 脚本
deno test运行测试代码
deno fmt格式化代码
deno bundle打包模块和依赖成一个文件
deno info查看缓存和依赖信息
deno repl进入交互式命令行环境
deno cache缓存远程依赖
deno eval "代码"直接执行一段代码

2. 第一个 Deno 程序示例

新建文件 hello.ts,写入以下代码:

typescript
console.log("Hello, Deno!");

运行:

deno run hello.ts

输出:

Hello, Deno!

这说明 Deno 可以直接运行 TypeScript 文件,无需额外编译步骤


3. 项目初始化与开发流程

3.1 使用 deno init 快速创建项目

执行:

deno init

会自动生成两个文件:

  • main.ts — 示例代码,包含一个简单的加法函数。
  • main_test.ts — 对 main.ts 中函数的测试代码。

项目结构示例:

.
├── main.ts
└── main_test.ts

示例 main.ts 内容:

export function add(a: number, b: number): number {
  return a + b;
}

console.log("Add 2 + 3 =", add(2, 3));

运行程序:

deno run main.ts

输出:

Add 2 + 3 = 5

运行测试:

deno test

输出:

running 1 test
test addTest ... ok (6ms)
test result: ok. 1 passed; 0 failed

这样就完成了一个简单的 Deno 项目开发和测试流程


3.2 监听文件变化自动重启

可以通过 deno task dev 监听代码变动,自动重启程序,方便开发调试。


4. Deno 权限系统详解

Deno 默认禁止访问敏感资源,运行时需要手动授权权限,常用权限参数如下:

权限参数说明
--allow-read允许读取文件系统
--allow-write允许写入文件系统
--allow-net允许网络访问
--allow-env允许访问环境变量
--allow-run允许运行子进程
--allow-hrtime允许高精度时间测量
-A--allow-all允许所有权限,关闭安全限制

示例:允许网络访问运行脚本

deno run --allow-net app.ts

这样做可以避免恶意代码随意访问系统资源,提高安全性


5. 模块管理与导入

Deno 通过 URL 直接导入模块,无需安装依赖包。

示例:导入官方 HTTP 服务器模块

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

const server = serve({ port: 8000 });
console.log("HTTP 服务器运行在 http://localhost:8000/");

for await (const req of server) {
  req.respond({ body: "Hello World\n" });
}

运行:

deno run --allow-net server.ts

访问 http://localhost:8000,浏览器显示:

Hello World

说明 Deno 支持直接从网络加载模块,方便快捷9


6. 进阶示例:简单的加法函数及测试

add.ts 文件:

export function add(a: number, b: number): number {
  return a + b;
}

add_test.ts 文件:

import { add } from "./add.ts";
import { assertEquals } from "https://deno.land/std@0.170.0/testing/asserts.ts";

Deno.test("add function test", () => {
  assertEquals(add(2, 3), 5);
  assertEquals(add(-1, 1), 0);
});

运行测试:

deno test add_test.ts

输出:

running 1 test
test add function test ... ok (5ms)
test result: ok. 1 passed; 0 failed

7. 代码格式化与规范

Deno 内置格式化工具,运行:

deno fmt

自动格式化当前目录下的代码,保持代码整洁统一。


8. 总结

  • Deno 是一个安全、现代、支持 TypeScript 的运行时。
  • 安装简单,命令丰富,支持项目初始化和测试。
  • 权限控制严格,确保代码安全运行。
  • 模块导入灵活,支持直接 URL 导入。
  • 适合快速开发小型项目,也支持复杂的 Web 服务开发。

以上内容结合了基础概念、安装方法、命令介绍、权限说明和丰富示例代码,帮助您快速理解和使用 Deno,开启高效安全的 JavaScript/TypeScript 开发之路。