四款工具順利實現Python與JavaScript間的代碼轉換
選Python還是JavaScript?雖然不少朋友還在爭論二者目前誰更強勢、誰又擁有著更為光明的發展前景,但毫無疑問,二者的競爭在Web前端領域已經擁有明確的答案。立足於瀏覽器平台,如果放棄JavaScript,我們也就沒什麼可選擇的項目了。
好吧,也許答案也不是這麼絕對。JavaScript已經成為眾多其它程式設計語言爭相選擇的轉換目標相關執行個體包括TypeScript、Emscripten、Cor以及Cheerp)。而Python則擁有龐大的追隨者群體,另外強大的現有庫資源則使其成為面向JavaScript的理想待轉換或者說轉譯選項。
下面來看四個能夠順利將Python帶入JavaScript世界的現有項目; 而其中一款更是憑藉著靈活的雙向轉換能力而鶴立雞群。
Transcrypt
這是一款新近崛起的Python到JS轉譯器。Transcrypt對於自身所產生代碼的品質水平做出了令人印象深刻的承諾。首先,它會儘可能多地保留原始的Python代碼結構,包括多重繼承以及lambda運算式。Python原始碼也可以直接對JavaScript中命名空間內的對象進行調用。如果大家嘗試訪問Python中的document.getElementById,則轉換後的代碼也將在JavaScript當中切實使用document.getElementById。
根據說明文檔的介紹,Transcrypt是利用CPython的抽象文法樹模組完成這些轉譯任務的,其能夠根據Python對自身代碼的解析方式進行編程訪問。儘管該項目目前仍處於alpha測試階段,但已經顯示出了非常驚人的吸引力。
Jiphy
所謂Jiphy,代表的是“JavaScript入,Python出”——也就是能夠對二者進行雙向轉換。另外,來自兩種語言的代碼都能夠在被轉換為另一種語言之前進行混合。
Jiphy目前的最大短板在於其僅支援Python的一部分功能集。類以及預設參數尚不受支援,不過裝飾器與例外機制已經可以正常使用。這主要是因為Jiphy堅持在原始碼與目標代碼之間採用行對行直接轉譯方式,不過其開發人員也開始著眼於ES6中的新功能,旨在將更多進階Python功能納入支援範疇。
Brython
也許有一天,當WebAssembly設想成為現實,那麼我們將能夠選擇任何自己偏好的語言進行Web開發。而Brython對此——或者說至少適用於Python 3——有著自己的理解:為什麼要等?
Brython通過一套JavaScript庫對Python 3中的全部關鍵字以及大多數內建外掛程式進行類比,從而實現了將Python 3版本作為用戶端Web編程方案的目標。由Python編寫的指令碼可以被直接添加到網路頁面當中,而Brython還支援一套進階Python模組介面browser),用於同DOM進行執行協作,且該瀏覽器通常可在JavaScript中直接完成。
然而,Brython也保持了瀏覽器給JavaScript代碼帶來的限制——例如不支援對本地檔案系統進行處理。
RapydScript
RapydScript承諾“讓Python式JavaScript代碼不再糟糕。”該項目在概念上類似於CoffeeScript:以Python形式進行代碼編寫,產生JavaScript代碼,並同時發揮二者的最佳特性。在Python方面,其擁有清晰的文法規則; 而在JavaScript方面,其擁有匿名函數、DOM操作並能夠使用jQuery或者Node.js核心等現有JavaScript庫。
原文標題:4 tools to convert Python to JavaScript (and back again)
Bkjia譯稿,合作網站轉載請註明原文譯者和出處為bkjia.com】