中文字幕一区二区人妻电影,亚洲av无码一区二区乱子伦as ,亚洲精品无码永久在线观看,亚洲成aⅴ人片久青草影院按摩,亚洲黑人巨大videos

使用全新的Joy編譯器將Go轉(zhuǎn)換為JavaScript

發(fā)布于:2021-01-15 14:42:33

0

323

0

Go JavaScript 編譯器

全新的Joy編譯器使用可在每種瀏覽器中使用的JavaScript,將Go的經(jīng)典設(shè)計(jì)帶到了前端。使用此簡單的Go編譯器,代碼只需編寫一次即可在任何地方讀取。

Joy編譯器承諾通過一個(gè)非常簡單的工具將Go的簡潔性帶給JavaScript?,F(xiàn)在,您可以使用Go的穩(wěn)定性,但仍然使用JavaScript執(zhí)行,使構(gòu)建大型web應(yīng)用程序變得越來越容易。

至少可以說,編寫和維護(hù)持久的JavaScript是非常耗時(shí)的。多虧了JavaScript語言在過去幾年里的巨大變化,主要的突破性變化以及隨之而來的工具和庫問題。雖然JavaScript不會(huì)有任何發(fā)展,但它與Joy編譯器一起使用變得簡單多了。

歡樂世界

基于這一理論,類型化代碼更容易維護(hù)和更新,更少的語法比更漂亮的語法更好,Joy翻譯成JavaScript。因此,您可以使用簡單的Go編寫代碼,但仍然可以使用非常有用的JavaScript進(jìn)行部署。

Joy是一個(gè)快速的1:1的JavaScript編譯器,旨在從慣用的Go創(chuàng)建簡潔的JavaScript。它使用Go的靜態(tài)分析工具來消除無用代碼,并創(chuàng)建適用于所有瀏覽器的JavaScript。它包含一個(gè)簡單的宏系統(tǒng),用于與現(xiàn)有JavaScript集成。Joy還對(duì)React和Preact等虛擬DOM框架提供了一流的支持。

Joy是GitHub上的開源軟件,提供零成本類型的DOM和虛擬DOM包。它只在需要的時(shí)候提供最小的運(yùn)行時(shí),并盡可能避免未使用的代碼。Joy擁護(hù)使用標(biāo)準(zhǔn)庫和工具。

它是如何工作的

Joy編譯器有5個(gè)步驟:解析、索引、繪圖、翻譯和匯編。

解析將Go代碼轉(zhuǎn)換為抽象語法樹(AST)。這主要是使用Go團(tuán)隊(duì)提供的x/tools/loader庫來完成的。

索引處理這些Go ast,使我們能夠回答有關(guān)程序的深層次問題。

Graph使用索引創(chuàng)建依賴關(guān)系圖。該圖按拓?fù)漤樞蚺判虿⑦M(jìn)行修剪,結(jié)果產(chǎn)生一個(gè)包含程序中使用的函數(shù)、變量、結(jié)構(gòu)和接口的節(jié)點(diǎn)列表。

Translate使用圖中的節(jié)點(diǎn)和索引中的知識(shí)將Go AST翻譯成JavaScript AST。

Assemble接受生成的JavaScript AST并生成JavaScript代碼。

下面是一個(gè)簡單的睡眠路徑經(jīng)過Joy編譯器后的樣子。

package main   import (   "time" )   func main() {   time.Sleep(1 * time.Second) }

現(xiàn)在看看它在JavaScript中的樣子:

(function() {   var pkg = {};   pkg["58-time-sleep"] = (function() {     async function main () {       await new Promise(function(resolve, reject) { setTimeout(resolve, 1 * 1000) })     };     return {       main: main     };   })();   return pkg["58-time-sleep"].main(); })()