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億美元新高,頒布禁令
合規與政策
菲律賓網絡賭博和加密貨幣仍構成持續的洗錢風險
東南亞資訊
印度最高法院受理公益訴訟,要求全國禁封「偽裝」成社交遊戲的賭博平台
合規與政策
JILI 宣佈與全球板球傳奇 AB de Villiers(ABD)達成重磅戰略合作
體育遊戲
越南在線博彩業政策收緊 催生市場新機遇
東南亞資訊
超級PAC籌資4800萬美元:體育博彩勢力加碼
合規與政策
巴西擬將博弈稅率提高至24% 稅收將用於社保與醫療領域
合規與政策
斯里蘭卡博弈產業大轉型,官方:劍指南亞拉斯維加斯
合規與政策
英國確認各垂直行業的賭博稅稅率
合規與政策
亞洲遊戲市場觀察:15大市場熱門遊戲與用戶趨勢
網路遊戲
哈薩克計劃對線上賭場促銷活動進行處罰
合規與政策
印第安納州在線賭場法案在眾議院委員會停滯不前
合規與政策
菲律賓博彩技術賽道迎來新變局,B2B 供應模式加速滲透
東南亞資訊
2027 Global Game Connect(GGC)斯里蘭卡招商全面啟動!業務人脈盡在掌握!
灰度頭條
越南博彩管控逐步放寬,惟本土需求仍顯乏力
東南亞資訊
首頁
遊戲
合作
發現
我的