Deno 1.22 发布

目录

更新默认的类型检查模式

移除Deno.emit()Deno.formatDiagnostics()和Deno.applySourceMap() API

默认启用Deno命名空间

--no-config标识

更新 Deno.resolveDns() API

引入新的Response.json()静态方法

在 LSP 默认启用 Linting

对测试运行程序的更新


Deno 1.22 已发布,主要变化如下:

  • 更新默认的类型检查模式
  • 移除不稳定的Deno.emit(), Deno.formatDiagnostics()和Deno.applySourceMap()API
  • Deno 命名空间在 worker 中默认可用
  • 新增--no-config flag
  • Navigator.userAgent
  • 升级Deno.resolveDns()API
  • 引入新的Response.json()静态方法
  • 在 LSP 默认启用 Linting
  • 升级不稳定的Deno.spawn()API
  • 更新 test runner
  • performance.timeOrigin&performance.toJSON

如果已经安装了Deno,可以通过运行以下命令升级到1.22:

deno upgrade

如果是第一次安装Deno,可使用下面列出的方法进行安装:

# Using Shell (macOS and Linux):
curl -fsSL https://deno.land/x/install/install.sh | sh# Using PowerShell (Windows):
iwr https://deno.land/x/install/install.ps1 -useb | iex# Using Homebrew (macOS):
brew install deno# Using Scoop (Windows):
scoop install deno# Using Chocolatey (Windows):
choco install deno

更新默认的类型检查模式

Deno 目前支持三种类型检查模式

  • 🌐Full:完整类型检查模式(full type checking)会检查整个项目,包括所有依赖项。如果依赖项包含类型错误,则会进行反馈。
  • 📁Local:局部类型检查模式(local type checking)会检查项目中的代码是否存在类型错误,但不针对所有依赖项进行类型检查。
  • None:不执行类型检查

在这个版本之前,Deno 使用 Full 作为默认类型检查模式。因此开发者会收到自己能直接控制之外的代码(依赖项)所报告的类型错误。团队认为这个默认值不够合理,所以在新版本将默认模式更改为 Local

移除Deno.emit()Deno.formatDiagnostics()和Deno.applySourceMap() API

Deno附带了Deno.emit() API,该API允许以编程方式编译和绑定源代码。这是一个不稳定的API,。支持这个API给翻译管道增加了很多复杂性,引入了许多微妙的边缘情况,并阻碍了长期以来想要做的一些重构。经过多次讨论,决定将此API从Deno名称空间中删除,并将其作为userland模块提供:deno_emit。这能够开发更适合用户需求的API。

默认启用Deno命名空间

Deno从1.0版本开始就支持Worker Web API。但是,默认情况下,Deno命名空间在worker上下文中不可用,除非它在选项bag中显式启用:

// This worker did NOT have access to the `Deno` namespace.
new Worker(new URL("./worker_without_deno.js", import.meta.url));// This worker did have access to the `Deno` namespace.
new Worker(new URL("./worker_without_deno.js", import.meta.url), {deno: true,
});

在这个版本中,更新了web worker,默认启用Deno命名空间,更好地匹配用户的期望。这意味着现在可以在web worker中默认使用Deno命名空间api,前提是设置了所需的权限。

// This worker will now have access to the `Deno` namespace.
new Worker(new URL("./worker_without_deno.js", import.meta.url));

你仍然可以使用WorkerOptions.deno选项来应用其他设置,比如自定义权限:

// Only allows read permissions to this worker.
new Worker(new URL("./worker_without_deno.js", import.meta.url), {deno: {permissions: {read: true,},},
});

--no-config标识

从Deno v1.18开始,运行时可以自动发现配置文件。虽然这个特性在大多数情况下都很方便和有用,但在某些情况下它并不是理想的,比如可能正在开发一个前端项目,它使用了非标准的TypeScript类型声明,这些声明在配置文件中定义。如果项目目录中还有一些独立的第三方工具(如udd),则不希望对这些工具应用相同的配置文件,因为它们可能需要不同的类型声明。

这个版本添加了一个——no-config标志,它禁用了配置文件的自动发现通过这个标志,所有配置都必须通过CLI标志显式地进行配置。

这个版本将userAgent属性添加到全局导航器对象。此属性设置为与在传出HTTP请求上设置的User-Agent报头相同的值。

console.log(navigator.userAgent);
// "Deno/1.22.0"

更新 Deno.resolveDns() API

这个版本更新了Deno.resolveDns() API。以下记录类型现在可以解析:

  • NS
  • CAA
  • SOA
  • NAPTR

引入新的Response.json()静态方法

此版本为Response全局添加了一个新的静态json()方法,支持从 JSON 结构轻松创建Response对象。

const json = { hello: "world" };// Previously:
const body = JSON.stringify(json);
const response = new Response(body, {headers: { "content-type": "application/json" },
});// Now:
const response = Response.json(json);

在 LSP 默认启用 Linting

Deno v1.22 默认启用 IDE/编辑器中deno lsp的 linting。此设置仍然可以禁用,但在大多数项目中,这意味着需要较少的 IDE/编辑器配置,因为大多数项目都启用了 linting。

对测试运行程序的更新

这个版本为测试运行器带来了另外一些更新。我们仍在对报告器输出进行迭代,以使其更具可读性。
"ERRORS"和"FAILURES"部分的头现在更明显了,失败的测试现在会显示Deno.test()调用的文件名和行号:

image.png

如果一个测试输出了输出,它的名字会在输出的后面一行重复,以便更容易地找出哪个测试失败/通过:

image.png

未捕获的错误现在有了一个更好的表示,并显示出可能出现错误的提示:

image.png

更多内容请查看该链接:deno.com/blog/v1.22

原文:Deno 1.22 发布 - 掘金 (juejin.cn)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/609619.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

资源调度(2)-----pod的亲和性和反亲和性

集群调度: schedule的调度算法。 预算策略:过滤出合适的节点 优先策略: 选择部署的节点 nodeName:硬匹配,不走调度策略。node01. nodeSelector:根据节点的标签选择,会走调度算法。 只要是走调度算法,在不满…

[VSCode] VSCode 常用快捷键

文章目录 VSCode 源代码编辑器VSCode 常用快捷键分类汇总01 编辑02 导航03 调试04 其他05 重构06 测试07 扩展08 选择09 搜索10 书签11 多光标12 代码片段13 其他 VSCode 源代码编辑器 官网:https://code.visualstudio.com/ 下载地址:https://code.visua…

【排序算法】二、希尔排序(C/C++)

「前言」文章内容是排序算法之希尔排序的讲解。(所有文章已经分类好,放心食用) 「归属专栏」排序算法 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 希尔排序1.1 原理1.2 代码实现(C/C)1.3 特性总结 希尔排序 1.1…

数据结构-测试1

一、判断题 1.队列中允许插入的一端叫队头,允许删除的一端叫队尾(F) 队列中允许删除的一端叫队头(front),允许插入的一端叫队尾(rear) 2. 完全二叉树中,若一个结点没有左孩子&#…

Developer Tools for Game Creator 1

插件包含: 持久世界时间管理系统 单击以生成对象或预设 游戏内调试控制台 游戏内事件控制台 控制台管理控制 命令模板脚本 游戏内屏幕截图 低分辨率和高分辨率图像 缩略图生成 移动支持 使用Game Creator Action或拖放来激活和控制组件,无需编码。 通过此资产,您可以获得: …

初识 Elasticsearch 应用知识,一文读懂 Elasticsearch 知识文集(1)

文章目录 🏆 初识 Elasticsearch 应用知识🔎 初识 Elasticsearch 应用知识(1)🍁🍁 01、什么是 Elasticsearch?🍁🍁 02、能列出 10 个使用 Elasticsearch 作为其搜索引擎或数据库的公司吗&#x…

2023 年度合辑 | 出海大年的全球化产品洞察和服务动向

2023 年度合辑 年度关键词 出海&全球化 出海 & 全球化通信服务全面升维 出海大年,融云全球互联网通信云作为“全球化最佳基础设施”之一,发挥技术沉淀和实践积累带来的核心优势,结合市场变化对出海 & 全球化通信服务进行了全方位…

李沐之神经网络基础

目录 1.模型构造 1.1层和块 1.2自定义块 1.3顺序块 1.4在前向传播函数中执行代码 2.参数管理 2.1参数访问 2.2参数初始化 3.自定义层 3.1不带参数的层 3.2带参数的层 4.读写文件 4.1加载和保存张量 4.2加载和保存模型参数 1.模型构造 1.1层和块 import torch fr…

c JPEG编码,但有错误

#include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdlib.h> #include <unistd.h> #include <sys/ioctl.h> #include <linux/videodev2.h> //v4l2 头文件 #include <strin…

MySQL之数据的导入、导出远程备份

目录 一. navicat的导入、导出 1.1 导入 1.2 导出 二. mysqldump命令导入、导出 2.1 导出 2.2 导入 三. LOAD DATA INFILE 命令导入、导出 3.1 设置 3.2 导出 3.3 导入 3.4 查看secure_file_priv设置 四. 远程备份 4.1 导出 4.2 导入 五. 思维导图 一. navicat的导入、导…

互联网云计算:开启未来智能生活的新篇章

互联网每天新进程&#xff0c;科技还得看啊浩说。 在互联网技术的飞速发展中&#xff0c;云计算已经成为了我们生活中不可或缺的一部分。它像一座神奇的云端宝库&#xff0c;为我们提供了无尽的计算资源和存储空间。让我们一起来探索互联网云计算的奥秘和魅力。 一、云计算&am…

Java多线程-Thread类的run方法

Java多线程-Thread类的run方法 一、背景二、研究Thread类的start()源码1、源码&#xff08;比较短&#xff0c;贴一下&#xff09;1.1 重点&#xff1a;start0(); 三、研究Thread类的run()源码1、源码&#xff08;很关键&#xff0c;必须贴&#xff09; 四、创建线程的2种方式1…

图灵机原理

图灵机原理 组成 一个两头无延伸的纸带&#xff0c;一个读写头&#xff0c;一本操作手册。 格式 纸带上只能写 0 和 1。 读写头可以在纸带上左右移动。 手册的每一页都有“一个判断”和“三个操作”&#xff1a; 一个判断&#xff1a;判断读写头当前位置的值是 0 还是 1&…

实习面试经历(微软/360/蔚来/百度/小米/元戎启行/腾讯)

从去年十一月到现在陆陆续续面试了好几家公司实习&#xff0c;做个简单的记录供大家参考吧&#xff0c;个人背景是某211大三的科班&#xff0c;之前没有实习经历 按照时间线&#xff1a; 11.8 微软Azure工程实习生 这是我第一次面试实习&#xff0c;个人觉得答的很不好。之前…

淘宝/天猫商品详情实时数据API技术实现

随着电子商务的蓬勃发展&#xff0c;对于电商平台的商家而言&#xff0c;实时获取商品数据变得至关重要。通过API接口&#xff0c;可以轻松地从电商平台获取这些数据。本文将详细介绍如何使用淘宝/天猫提供的API接口实现商品详情数据的实时获取&#xff0c;并给出具体的代码示例…

podman configure insecure certificate registry【podman 设置非安全镜像仓库】

预备条件 docker registry仓库私搭并配置证书centos 7.9 部署 harbor 镜像仓库实践harbor 部署入门指南Podman 部署私有镜像仓库 设置 $ vim /etc/hosts 192.168.23.47 registry.ghostwritten.com$ vim /etc/containers/registries.conf ... [[registry]] location "r…

【css技巧】css设置文字不能被选中

ChatGPT4.0国内站点&#xff1a;海鲸AI 在CSS中&#xff0c;如果你想让文本内容不能被用户选中&#xff0c;可以使用user-select属性。这个属性可以控制用户是否能够选择文本。以下是如何使用这个属性的例子&#xff1a; .unselectable {-webkit-user-select: none; /* Safar…

7.2 1D PARALLEL CONVOLUTION—A BASIC ALGORITHM

正如我们在第7.1节中提到的&#xff0c;所有输出&#xff08;P&#xff09;元素的计算可以在卷积中并行完成。这使得卷积成为并行计算的理想问题。根据我们在矩阵-矩阵乘法方面的经验&#xff0c;我们可以快速编写一个简单的并行卷积内核。为了简单起见&#xff0c;我们将从1D卷…

【MySQL】数据库概述与SQL语句

一、数据库基本概念 数据库&#xff1a;DateBase&#xff0c;简称&#xff1a;DB 数据库特点&#xff1a; 持久化存储数据 -> 文件系统方便存储和管理数据使用了统一方式管理数据库 -> SQL 常见的数据库软件&#xff1a; OracleMySQLMicrosoft SQL ServerDB2SQLite …

【liunx】线程池+单例模式+STL,智能指针和线程安全+其他常见的各种锁+读者写者问题

线程池单例模式STL,智能指针和线程安全其他常见的各种锁读者写者问题 1.线程池2.线程安全的单例模式3.STL,智能指针和线程安全4.其他常见的各种锁4.读者写者问题 喜欢的点赞&#xff0c;收藏&#xff0c;关注一下把&#xff01; 1.线程池 目前我们学了挂起等待锁、条件变量、信…