實現 Python 與 JavaScript 程式碼轉換的4個工具
選 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 庫。
相關文章
- Python和JavaScript間程式碼轉換4個工具PythonJavaScript
- 四款工具順利實現Python與JavaScript間的程式碼轉換PythonJavaScript
- DCI的一個Javascript實現程式碼JavaScript
- JavaScript實現線上Markdown編輯器、轉換HTML工具-toolfk程式設計師工具網JavaScriptHTML程式設計師
- AI來實現程式碼轉換!Python轉Java,Java轉Go不在話下?AIPythonJavaGo
- JavaScript實現線上進位制轉換工具網站 -toolfk程式設計師線上工具網JavaScript網站程式設計師
- 音樂格式轉換:java程式碼實現Java
- javascript實現的圖片簡單切換程式碼例項JavaScript
- javascript實現網頁跳轉的程式碼例項JavaScript網頁
- 程式碼模板:python-基礎-4(時間戳轉換)Python時間戳
- Firefox 2驚現第二個缺陷 與JavaScript程式碼有關(轉)FirefoxJavaScript
- 5個最優秀的Java和C#程式碼轉換工具JavaC#
- Python實現程式碼行數統計工具Python
- javascript實現的放大效果程式碼JavaScript
- 工程座標轉換方法C#程式碼實現C#
- python hex轉ascii轉換Python程式碼的簡單方法PythonASCII
- 用Javascript轉換原始碼 (轉)JavaScript原始碼
- CSS實現的換行效果程式碼CSS
- 10個優化程式碼的CSS和JavaScript工具優化CSSJavaScript
- Java實現BCD編碼與十進位制轉換Java
- 使用Python 實現 PDF 到 HTML 的轉換PythonHTML
- python實現字串轉換整數Python字串
- javascript實現的合併兩個陣列程式碼例項JavaScript陣列
- JavaScript 實現sprintf 功能程式碼JavaScript
- 兩種方法實現西里爾哈薩克文到傳統哈薩克文的轉換(JavaScript程式碼)JavaScript
- 用C#程式碼實現二進位制與十進位制的互相轉換C#
- php 的字元編碼轉換工具 (轉)PHP字元
- 實現一個具有百度文庫文件轉換功能的工具類
- 提高 Android 程式碼質量的4個工具Android
- 9個實用的Javascript程式碼高亮指令碼JavaScript指令碼
- javascript實現的驗證碼程式碼例項JavaScript
- C++實現進位制轉換工具C++
- Python 編碼轉換與中文處理Python
- javascript 字元轉換為ascii碼,ascii碼轉換為字元JavaScript字元ASCII
- 一百行js程式碼實現一個校驗工具JS
- 實現強制換行的CSS程式碼CSS
- javascript實現的獲取下一個li元素程式碼例項JavaScript
- 親測好用的4款PDF轉換工具