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 run example.ts
Deno 在执行 JavaScript 代码时会自动下载该脚本的所有依赖模块,并在执行前进行类型检查。如果遇到安全限制,例如读取文件或发起网络请求等,Deno 会询问用户是否授权。
总结
Deno 的发布是 JavaScript 运行时领域的一场重大变革。它以更加安全和可靠的方式执行 JavaScript 代码,并提供了一些很有用的新特性。如果你正在进行前端或者后端开发,不妨试试 Deno,它有望让你的代码更加安全和可靠。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65bae78cadd4f0e0ff3782c4