Deno 2021 回顾:优化 Deno 内核、兼容 Node.js、Deno 2 路线图将至

简介: Deno 2021 回顾:优化 Deno 内核、兼容 Node.js、Deno 2 路线图将至

近日,Deno 官方博客对其项目在刚刚过去的 2021 年所发生的重大事件和新变动做了回顾。

image.png

作为 Deno 第一笔资金投入的一年,该公司在 2021 里在 10 个方面有了强大且持续的发展:发布了 44 个版本(11 个次要,33 个补丁),landing 关键特征,无数 bug 的修复以及在性能方面的显著优化。

在该博客文章里,Deno 对以下几个主要方面的发展做了探讨:

Deno Deploy

2021年夏天,Deno 官方发布了 Deno Deploy 的第一个测试版 —— 一款由 Deno 工程团队从头开始构建的现代 serverless 云,允许用户快速地将 JavaScript、TypeScript 和 WASM 服务部署到世界各地的数据中心。

目前,Deno 正在积极开发和投资 Deno Deploy,该项目被认为是继构建 Node.js 和 Deno CLI 之后该公司的第三个 JavaScript runtime。

优化 Deno 内核

Deno 的内核提供了“opcalls”(类似于syscalls),允许 JavaScript 调用 runtime 提供的函数(fs/net/url-parsing/…)。

在 v1.9 版本发布之前,Deno 公司通过 JSON 和二进制缓冲区的混合来对opcall 值进行整理。

op-layer 的效率是决定 runtime 整体性能的关键指标。相比此前每次调用 Opcalls 花费约 4000ns,现在每次调用花费仅为约 40ns,减少了近 100 倍。这些效率提高的主要原因是 serde_v8 —— 开发团队在 v1.9 版本中设计并交付的 Rust 和 V8 值之间的最大化 efficient bijection。

仅此一项就将 URL 解析等常见操作的成本降低了 3 倍以上,并使 Deno 成为一个快速的 JS runtime。

原生 HTTP

在 Deno v1.9 版本中开发团队提供了原生 HTTP 服务器绑定,这些绑定后来在 Deno v1.13 中得到了稳定发挥,只需几行代码即可创建由 hyper 支持的高性能HTTP 服务器:

import { serve } from "https://deno.land/std@0.121.0/http/server.ts";

serve((_req) => new Response("Hello, world"), { port: 3000 });

console.log("Listening on http://localhost:3000");

MDN 兼容性表格

2021 年 8 月,Deno 被添加到了 MDN 兼容性表格中。

image.png

Deno 非常重视网络兼容性,开发团队根据 WPT(或 Web 平台测试)测试 Deno,所有主要浏览器都使用该测试套件来确保符合规范。(测试套件结果可在 wpt.fyi 上找到)。

外部函数接口(FFI )

Deno v1.13 版本中,开发团队用一个新的外部函数接口 API 替换了不稳定的插件系统。尽管该 FFI 仍被认为不稳定,但团队认为这是一个显著的进步。

1.13 版本之前的原生插件系统允许发布用 Rust 编写的动态库,由于不稳定的Rust ABI,以及将 API 作者限制为单一语言,团队决定用通用 FFI API 替换该系统。此 API 允许开发人员以任何使用 C 调用约定的语言为 Deno runtime 编写“扩展”。

目前,已经看到了一些使用 FFI API 展示 FFI API 强大功能的有趣项目:

Desktop app framework

Python interpreter bindings

SDL2 bindings

SerialPort bindings

SQLite bindings

Slack & 下一代平台

2021 年 11 月,SLACK 宣布了其基于 Deno 的下一代开发平台。除 SLACK 外,Deno 公司还与其他合作伙伴合作生产和运输了优质的 Deno-powered 产品。Deno 方面相信,Deno Deploy 的“Isolates as a Service(隔离即服务)”为以下方面提供了坚实的基础:

Modern edge-hosting

User-extendable platforms (bots, plugins, apps, 等...)

Low-code solutions

Node.js 兼容性

在 2021 年的 Q4 季度里,Deno 团队开始努力提供一流的 Node.js 兼容性,允许 Deno 直接在 Deno 中运行为 Node.js 开发的应用程序和库(NPM 包)。

在 Deno v1.15 版本里,开发团队发布了“compat mode”的第一个预览版。尽管该功能仍不稳定,但可使用 compat flag 启用(大部分工作涉及在 std/node 中提供 polyfills)。

目前,一些关键模块如 tls 和 zlib 仍不完整,但仍可运行 non-trivial 类型的应用程序。团队表示,接下来的目标是在未来几个月内推出适合所有用户的第一个迭代版本。

Deno 2 路线

2021 年 9 月份,开发团队开始讨论 Deno 2 发行后将会是什么样子。虽然还有许多明显的小 API 变更需要解决,但团队也在排查根本性的变化,以改进 Deno 工作流程。

团队表示,相信 Deno 2 的路线图很快就会发布,也希望尽量在今年上半年发布。Deno 2 将专注于更好的 NPM 生态系统兼容性、更好的通用工作流 DX,以及更好的探索替代包管理解决方案。

node.js

相关文章
|
5月前
|
JavaScript 关系型数据库 MySQL
❤Nodejs 第六章(操作本地数据库前置知识优化)
【4月更文挑战第6天】本文介绍了Node.js操作本地数据库的前置配置和优化,包括处理接口跨域的CORS中间件,以及解析请求数据的body-parser、cookie-parser和multer。还讲解了与MySQL数据库交互的两种方式:`createPool`(适用于高并发,通过连接池管理连接)和`createConnection`(适用于低负载)。
63 0
|
8天前
|
存储 缓存 JavaScript
JavaScript 中数组方法的常见优化技巧
JavaScript 中数组方法的常见优化技巧
|
5月前
|
数据库 JavaScript SQL
❤Nodejs 第八章(操作本地数据库优化查询为分页查询方式)
【4月更文挑战第8天】在Node.js中,本章讲述了如何优化本地数据库查询以实现分页。首先,添加了前端分页参数`pageNum`(页码)和`pageSize`(每页条数)。接着,通过打印`req.query`来验证参数是否正确传递。初始查询示例为`SELECT * FROM user WHERE age = 18 LIMIT 0, 10`。当改变分页参数时,查询能相应更新。在实现动态偏移量`offset`时,起初因误添加`' AND' : ' WHERE'`导致错误,修正后使用`LIMIT`和计算出的`offset`进行分页。
128 5
❤Nodejs 第八章(操作本地数据库优化查询为分页查询方式)
|
23天前
|
缓存 JavaScript 中间件
优化Express.js应用程序性能:缓存策略、请求压缩和路由匹配
在开发Express.js应用时,采用合理的缓存策略、请求压缩及优化路由匹配可大幅提升性能。本文介绍如何利用`express.static`实现缓存、`compression`中间件压缩响应数据,并通过精确匹配、模块化路由及参数化路由提高路由处理效率,从而打造高效应用。
65 5
|
2月前
|
JSON JavaScript 前端开发
震惊!JS如何悄无声息追踪你的每一步?揭秘页面访问与关闭的超级上报大法,让数据说话,优化体验不再难!
【8月更文挑战第4天】在Web开发中,跟踪用户行为对提升体验与留存至关重要。本文以在线学习平台为例,介绍如何用JavaScript监听页面访问及关闭,并上报数据。通过`window.onload`监测页面加载,记录用户访问;利用`navigator.sendBeacon`在用户离开时发送少量数据至服务器,无需担心请求失败。需注意隐私合规、性能影响及浏览器兼容性。此技术有助于深入理解用户行为,为产品迭代提供依据。
72 8
|
2月前
|
C# 开发者 测试技术
震惊!Xamarin 竟能如此构建跨平台应用程序,代码共享、界面设计与性能优化全攻略大揭秘!
【8月更文挑战第31天】在移动应用开发领域,跨平台工具日益受到青睐。Xamarin 是一款强大的工具,支持使用 C# 开发适用于 iOS、Android 和 Windows 的应用。通过安装 Visual Studio 或 Visual Studio for Mac,并创建 Xamarin 项目,开发者可以利用丰富的功能和工具进行开发。Xamarin 的主要优势在于代码共享,能够显著提高开发效率。
51 0
|
2月前
|
API UED 开发者
如何在Uno Platform中轻松实现流畅动画效果——从基础到优化,全方位打造用户友好的动态交互体验!
【8月更文挑战第31天】在开发跨平台应用时,确保用户界面流畅且具吸引力至关重要。Uno Platform 作为多端统一的开发框架,不仅支持跨系统应用开发,还能通过优化实现流畅动画,增强用户体验。本文探讨了Uno Platform中实现流畅动画的多个方面,包括动画基础、性能优化、实践技巧及问题排查,帮助开发者掌握具体优化策略,提升应用质量与用户满意度。通过合理利用故事板、减少布局复杂性、使用硬件加速等技术,结合异步方法与预设缓存技巧,开发者能够创建美观且流畅的动画效果。
57 0
|
2月前
|
JavaScript 前端开发 应用服务中间件
Vue.js项目部署与优化:一场从本地到生产环境的华丽蜕变,见证你的应用如何凤凰涅槃,惊艳上线!
【8月更文挑战第30天】作为一名前端开发者,掌握从本地开发环境到生产环境的迁移至关重要。本文将带你了解如何使用 Vue.js 构建和打包应用,确保其在生产环境中流畅运行。首先,通过 `npm run build` 或 `yarn build` 命令生成生产环境文件;接着,配置服务器(如 Nginx)以支持静态文件服务;最后,通过代码分割、资源压缩、CDN 使用、服务端渲染及缓存策略等手段优化应用性能。跟随本文,你将学会如何让 Vue.js 应用在真实环境中表现优异,为用户提供流畅体验。
40 0
|
2月前
|
缓存 负载均衡 JavaScript
Node.js 服务器性能优化
【8月更文挑战第4天】 Node.js 服务器性能优化
38 1
|
3月前
|
缓存 监控 JavaScript
常见的JS优化方案都有那些
【7月更文挑战第7天】 JavaScript优化包括代码优化(箭头函数、解构赋值、模板字面量、展开运算符、高阶函数)、DOM操作优化(减少操作、事件委托、节流防抖)、异步优化(Promise、Web Workers)、缓存策略(结果缓存、HTTP缓存)、压缩合并以及性能分析和监控。通过这些方法,提升网页性能和用户体验。
26 1