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相依項目新增到該檔案,支援開發和生產相依項目分離管理。

熱門文章
新澤西州7月博彩收入創6.06億美元新高,頒布禁令
合規與政策
斯里蘭卡博弈產業大轉型,官方:劍指南亞拉斯維加斯
合規與政策
巴西擬將博弈稅率提高至24% 稅收將用於社保與醫療領域
合規與政策
英國確認各垂直行業的賭博稅稅率
合規與政策
超級PAC籌資4800萬美元:體育博彩勢力加碼
合規與政策
亞洲遊戲市場觀察:15大市場熱門遊戲與用戶趨勢
網路遊戲
西班牙監管機構警告在線賭博平臺存在身份盜竊行為
合規與政策
越南博彩管控逐步放寬,惟本土需求仍顯乏力
東南亞資訊
橫跨全球6個城市,灰度8場派對邀你共看世界盃,重塑高質量社交新場景
灰度頭條
印第安納州在線賭場法案在眾議院委員會停滯不前
合規與政策
JILI 宣佈與全球板球傳奇 AB de Villiers(ABD)達成重磅戰略合作
體育遊戲
2027 Global Game Connect(GGC)斯里蘭卡招商全面啟動!業務人脈盡在掌握!
灰度頭條
越南在線博彩業政策收緊 催生市場新機遇
東南亞資訊
菲律賓網絡賭博和加密貨幣仍構成持續的洗錢風險
東南亞資訊
印度最高法院受理公益訴訟,要求全國禁封「偽裝」成社交遊戲的賭博平台
合規與政策
首頁
遊戲
合作
發現
我的