Python和JavaScript語言轉換的常用工具
選 Python 還是 JavaScript?雖然不少朋友還在爭論二者目前誰更強勢、誰又擁有着更為光明的發展前景,但毫無疑問,二者的競爭在 Web 前端領域已經擁有明確的答案。立足於瀏覽器平台,如果放棄 JavaScript,我們也就沒什麼可選擇的項目了。
好吧,也許答案也不是這麼絕對。JavaScript 已經成為眾多其它編程語言爭相選擇的轉換目標(相關實例包括 TypeScript、Emscripten、Cor 以及 Cheerp)。而 Python 則擁有龐大的追隨者羣體,另外現有的強大庫資源則使其成為面向 JavaScript 的理想待轉換或者説轉譯選項。
下面來看四個能夠順利將 Python 帶入 JavaScript 世界的項目; 而其中一款更是憑藉着靈活的雙向轉換能力而鶴立雞羣。
Transcrypt
這是一款新近崛起的 Python 到 JS 轉譯器。Transcrypt 對於自身所生成代碼的質量水平做出了令人印象深刻的承諾。首先,它會盡可能多地保留原始的 Python 代碼結構,包括多重繼承以及 lambda 表達式。Python 源代碼也可以直接對 JavaScript 中命名空間內的對象進行調用。如果大家嘗試訪問 Python 中的 lementById,則轉換後的代碼也將在JavaScript 當中切換使用 lementById。
根據説明文檔的介紹,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 或者 內核等現有 JavaScript 庫。
-
如何理解Javascript的caller,callee,call,apply區別
在提到上述的概念之前,首先想説説javascript中函數的隱含參數:argumentsarguments該對象代表正在執行的函數和調用它的函數的參數。[function.]arguments[n]參數function:選項。當前正在執行的Function對象的名字。n:選項。要傳遞給Function對象的從0開始的參數值...
-
如何理解Javascript的caller,callee,call,apply區別
在提到上述的概念之前,首先想説説javascript中函數的隱含參數:argumentsarguments該對象代表正在執行的函數和調用它的函數的參數。[function.]arguments[n]參數function:選項。當前正在執行的Function對象的名字。n:選項。要傳遞給Function對象的從0開始的參數值...
-
水星路由器設置wap
用户請根據自己的寬帶接入方式,按照上面介紹的方法,安裝你的水星(Mercury)MW153R路由器。以下是小編為大家整理分享的水星路由器設置wap,歡迎閲讀參考。水星路由器設置wap本文介紹了水星(Mercury)MW153R無線路由器的安裝、上網設置以及無線網絡(Wi-Fi)的設置;一台...
-
javascript操作select元素案例分析
本文實例講述了javascript操作select元素的.用法。分享給大家供大家參考。具體分析如下:這裏熟悉一下js對select元素的操作,html頁面中建立一個form,其中包含一個select元素和submit按鈕。當選擇select中某一項時改變其文字,當select中所有項的文字都改變後,重新恢...
相關文章
- 關於JavaScript中isPrototypeOf函數作用和使用實例
- JavaScript在Android的WebView中parseInt函數轉換不正確
- java如何利用java.net.URLConnection發送HTTP請求
- JavaScript中的原型鏈prototype詳解
- 國中英語寫作範文:My Happy Times During Winter Vacation
- My Happy Times During Winter Vacation國中英語作文
- 用 Javascript 實現錨點(Anchor)間平滑跳轉
- Happy Dragon Boat Festival英語作文
- The relationship between theory and practice大學英語作文
- 有關JavaScript中的prototype.bind()方法介紹