Deno 发布 v1.0:让 JavaScript 更安全

JavaScript 是一门非常流行的编程语言,它广泛应用于网页开发、后端开发等领域。但是 JavaScript 也存在一些安全问题,例如在浏览器中执行恶意脚本、Node.js 权限管理不够精细等。近期,一款名为 Deno 的 JavaScript 运行时发布了 v1.0 版本,它有望让 JavaScript 更加安全和可靠。

什么是 Deno?

Deno 是一款基于 V8 引擎的 JavaScript 运行时,它由 Node.js 的创始人 Ryan Dahl 开发。与 Node.js 不同,Deno 的设计目标是更加安全和可靠,它执行 JavaScript 代码时进行了一系列的安全限制。

Deno 的安全设计包括以下几个方面:

  • 默认禁止网络访问和文件访问权限,需要手动开启
  • 所有的代码执行都在沙盒环境中进行,不能访问敏感的系统 API
  • 将依赖的模块通过 URL 引入,不允许通过本地文件引入

在 Deno 中,每个模块都是一个 ES 模块,可以通过 import 语句引入。它可以执行 ES 模块和 CommonJS 模块,同时支持 TypeScript 编译和运行。

Deno 的新特性

Deno v1.0 发布了一些令人兴奋的新特性,包括:

Web 标准 API

Deno 实现了一些常见的 Web 标准 API,例如 fetch、WebSocket、URLSearchParams 等。这些 API 可以在 Deno 的运行时环境中直接使用,不需要通过 npm 安装额外的模块。

import { serve } from 'https://deno.land/std@v0.50.0/http/server.ts';

const server = serve({ port: 8000 });

for await (const req of server) {
  req.respond({ body: 'Hello Deno!' });
}

支持 WebAssembly

Deno 支持加载 WebAssembly 模块,使用 WebAssembly.instantiate() 函数可以加载 WebAssembly 模块并进行调用。

const wasm = Deno.readFileSync('./example.wasm');
const { instance } = await WebAssembly.instantiate(wasm);

console.log(instance.exports.add(1, 2)); // 输出 3

第三方模块管理

Deno 自带了一个包管理器 deno.land/std,可以方便地引入常用的第三方模块,例如 TypeScript、Lodash 等。

import _ from 'https://cdn.skypack.dev/lodash-es';

console.log(_.chunk([1, 2, 3, 4, 5], 2)); // 输出 [[1, 2], [3, 4], [5]]

怎样使用 Deno?

你可以在 Deno 的官网 https://deno.land 上下载安装包安装 Deno,也可以使用类似 brew install deno 这样的包管理器安装。

安装完毕后,你可以在终端中执行 deno 命令,启动一个 Deno 的 REPL 环境,并在其中编写和运行 JavaScript 代码:

> console.log('Hello Deno!');
Hello Deno!

如果需要运行一个 JavaScript 文件,可以使用 deno run 命令:

Deno 在执行 JavaScript 代码时会自动下载该脚本的所有依赖模块,并在执行前进行类型检查。如果遇到安全限制,例如读取文件或发起网络请求等,Deno 会询问用户是否授权。

总结

Deno 的发布是 JavaScript 运行时领域的一场重大变革。它以更加安全和可靠的方式执行 JavaScript 代码,并提供了一些很有用的新特性。如果你正在进行前端或者后端开发,不妨试试 Deno,它有望让你的代码更加安全和可靠。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65bae78cadd4f0e0ff3782c4