Deno 是一个现代化的 JavaScript 和 TypeScript 运行时环境,由 Node.js 创始人开发,采用 Rust 语言编写,内置 TypeScript 支持,安全性高,使用简单,无需传统的包管理器(npm),适合初学者和进阶开发者快速上手。
1. Deno 基础知识
1.1 什么是 Deno?
- Deno 是一个运行 JavaScript 和 TypeScript 的环境,类似于 Node.js,但更加现代和安全。
- 它默认支持 TypeScript,运行时自动编译,无需额外配置。
- 采用 URL 直接导入模块,无需
package.json和node_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 开发之路。