Deno 中文教程
什么是 Deno
Deno
Deno 是基于 V8 JavaScript 引擎和 Rust 编程语言的 JavaScript 和 TypeScript 运行时,默认使用安全环境执行代码。
它由 Node.js 的原始创建者 Ryan Dahl 创建,专注于安全性和生产力。
Deno 建立在 V8、Rust 和 Tokio 的基础上。
Ryan Dahl 在 2018 年的发表了一个名字 NodeJs 的设计错误的演讲,然后宣布了要搞 Deno。
- Ryan Dahl演讲的英文地址: Design mistakes in node
- 演讲的中文译文: NodeJs 的设计错误
当时在前端圈引出一个梗老子学不动了
详细参见 https://github.com/denoland/deno/issues/25
写在前面
下面是一些引导文件,你在看完本篇文章以后,可以根据自己的实际情况,来优先选择了解。
如果你以前对 Nodejs 比较熟悉,可以先了解下 Deno
和 Node.js
的关系
如果你是一个初学者,你可能对安装感兴趣
Deno 案例
这里是一些 Deno 案例,可以让你了解 Deno 的工作方式
网路相关
系统相关
可能会遇到的问题
如果你在使用 Deno 的时候遇到了一些问题,建议你看下面的一些解答
Deno 功能亮点
-
默认情况下外部代码没有文件系统、网络、环境的访问权限,如果需要权限,必须指定开启。
- Deno 脚本,没有任何读 / 写 / 网络权限(沙箱模式 andbox mode):
- 需要显式标志相应的权限:
deno run --allow-read --allow-net xxx.ts
- 或者使用
deno run -A xxx.ts
-
同时支持 JavaScript 和 TypeScript 的环境。
-
只有一个独立的可执行文件
deno
(这个有点像 Go) -
有着内建的工具箱
- 比如:依赖信息查看器,
deno info
。(这个命令要牢记,很常用) - 比如:代码格式化工具,
deno fmt
。 - 提供内置工具来提升开发体验,比如单元测试、代码格式化、代码检查。
- 比如:依赖信息查看器,
-
有一组经过审计的标准模块 deno.land/std,保证能在 Deno 上工作。
-
脚本代码能被打包为一个单独的 JavaScript 文件。
-
Deno 承担了运行时和包管理器的角色,它使用标准的浏览器兼容协议 (URL) 来加载模块。
-
不把 V8 的概念泄露到用户空间。
其他知识点
- 远程代码在第一次运行时获取并缓存,直到代码通过
--reload
选项运行。(所以它离线也能工作) - 从远程 URL 加载的模块或文件应当是不可变且可缓存的。
你应该学习 Deno 吗?
坦率的说 Deno 是新东西,需要很大的努力,而且试错的成本很大。
按照他们创始人的尿性,后面还会有很大的改动,而且目前还不完善。
我的建议是,如果你是一个新手,打算且使用 JS 写服务器端,还不了解 Node,并且从未编写过任何 TypeScript 代码,那么就从 Node 开始吧。
生产环境 Node 还是很稳的了;
但是,如果你喜欢 TypeScript,想要在任何地方使用 await,但不想依赖项目中庞大的 npm 包,那么 Deno 可能就是你想要的。
至于我自己为啥 Deno 刚出来就学,还出教程,这是因为我作为阿西河前端教程的站长,打算在网站发布类似的资源,所以我才研究的。
学前必读
通过我再不同平台的使用和真实测试,我非常推荐你使用 Linux 和 Mac 来搞;
如果你是 Windows 机器,推荐使用 Git Bash
或者 微软新出的 Windows Terminal
https://devblogs.microsoft.com/commandline/windows-terminal-1-0/
如果不这样的话,请一定要看看本站的 Deno 在 Windows 上中文乱码的问题解决
学前的技术储备
Deno 包含一些简单的示例,您可以从中学到 Deno 的基本概念。
Deno 教程内会假设您已经对 JavaScript 有过预先的了解,特别是 async
/await
;
但是如果你还不清楚,可以参考。
如果您没有了解过 JavaScript,您可能需要先阅读本站的 JS 教程