Deno 2.0大改全域变量向Node.js靠拢
支付動態 · 2024-09-25

Deno 2.0引入Node.js的process全域变量并移除window全域变量,提升与Node.js程序的兼容性。相依管理功能添加前缀规范,以及子命令deno add和deno remove简化套件管理流程

Deno 2.0的开发已接近完成,进入候选版本的阶段。在Deno 2.0版本中,将有两大重要变更,第一是全域变量的改变,第二则是相依性管理的更新。当初Deno的出现,以改进Node.js的不足为主打,但是从这次全域变量的政策调整来看,Deno似乎从过去试图走出独特路线,转向更务实的妥协,逐渐回归与Node.js更相近的设计。

在Deno 2.0中,全域变量有两项重大变更,第一是移除window全域变量,第二则是引入Node.js的process全域变量。Deno从1.0版本就引入window全域变量,目的是希望Deno能够尽可能和浏览器兼容,但是没想到window却成为许多开发者的问题来源。window是浏览器环境中的全域对象,代表浏览器的全域范围,因此当前端JavaScript代码在浏览器中运行时,window可以正常运作,但是于服务器端环境却不适用。

Deno是一个服务器端的JavaScript运行环境,因此Deno中的window全域变量,常让开发者误以为在操作浏览器环境,window包含大量在浏览器中才具意义的API,因此当开发者不小心在Deno中使用,则会引发错误。有鉴于此,Deno 1.40开始便建议开发者不要使用window,改用globalThis或是self,而在Deno 2.0则会移除window全域变量。globalThis是ECMAScript标准中的统一全域对象,因此可在浏览器、Node.js和Deno中使用。

Deno 2.0的另一项全域变量改变,是引入Node.js重要全域对象process。process提供存取系统信息、环境变量、命令行参数等功能。原本在Deno中的设计,要求开发者使用process必须显式导入node:process,但对于仰赖process作为全域变量的Node.js程序和框架来说,这项要求带来额外的负担。

现在Deno为了兼容性需求,让更多应用程序可以轻松无缝移植到Deno,因此在Deno 2.0中引入process全域变量。不过官方仍建议开发者尽量使用显式导入方法,因此也添加一条新的lint规则,在编辑器中提示并且协助开发者快速进行修正。

Deno 2.0相依项目管理方面,添加了jsr:和npm:前缀以区分不同来源的套件,避免名称冲突。另外,Deno支持子路径规范,解决过去无法解析包含/子路径的问题。deno add与deno remove子命令的加入,简化了相依项目的添加和移除过程。而且当项目包含package.json,Deno则会优先将NPM相依项目添加到该文件,支持开发和生产相依项目分离管理。

热门文章
越南在线博彩业政策收紧 催生市场新机遇
东南亚资讯
印度最高法院受理公益诉讼,要求全国禁封“伪装”成社交游戏的赌博平台
游戏风向
BETFAIR 网络攻击80万用户资料泄露
游戏风向
密西西比州众议院委员会推进提议增加赌场税的法案
游戏风向
巴西颁布新法赋权央行封锁非法博彩账户及 Pix 交易
支付动态
新泽西州7月博彩收入创6.06亿美元新高,颁布禁令
游戏风向
英国确认各垂直行业的赌博税税率
游戏风向
JILI 宣布与全球板球传奇 AB de Villiers(ABD)达成重磅战略合作
体育游戏
越南博彩管控逐步放宽,惟本土需求仍显乏力
东南亚资讯
张侨伟参议员排除全面禁止,敦促菲律宾规范网络赌博
东南亚资讯
巴西拟将博彩税率提高至24% 税收将用于社保和医疗领域
游戏风向
灰度在iGB L!VE 2026展位T70和你相约7月,一起点燃伦敦的热情!
灰度头条
横跨全球6个城市,灰度8场派对邀你共看世界杯,重塑高质量社交新场景
灰度头条
PropellerAds 分享了新的 iGaming 案例研究:在 3 个月实现 97,674 次安装和 12,701 笔存款
广告营销
斯里兰卡博弈产业大转型,官方:剑指南亚拉斯维加斯
游戏风向
首页
游戏
合作
发现
我的