Deno 中文教程

🌙
手机阅读
本文目录结构

什么是 Deno

Deno

Deno 是基于 V8 JavaScript 引擎和 Rust 编程语言的 JavaScript 和 TypeScript 运行时,默认使用安全环境执行代码。

它由 Node.js 的原始创建者 Ryan Dahl 创建,专注于安全性和生产力。

Deno 建立在 V8、Rust 和 Tokio 的基础上。

Ryan Dahl 在 2018 年的发表了一个名字 NodeJs 的设计错误的演讲,然后宣布了要搞 Deno。

当时在前端圈引出一个梗老子学不动了

https://a.axihe.com/edu/deno/chrome_yD44p6WXxr.png

详细参见 https://github.com/denoland/deno/issues/25

写在前面

下面是一些引导文件,你在看完本篇文章以后,可以根据自己的实际情况,来优先选择了解。

如果你以前对 Nodejs 比较熟悉,可以先了解下 DenoNode.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 教程

相关的 Deno 资料

AXIHE / 精选资源

浏览全部教程

面试题

学习网站

前端培训
自己甄别

前端书籍

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili

关注我: Github / 知乎

于2021年离开前端领域,目前重心放在研究区块链上面了

我叫朱安邦,阿西河的站长

目前在杭州从事区块链周边的开发工作,机械专业,以前从事平面设计工作。

2014年底脱产在老家自学6个月的前端技术,自学期间几乎从未出过家门,最终找到了满意的前端工作。更多>

于2021年离开前端领域,目前从事区块链方面工作了