ホームページ >バックエンド開発 >Python チュートリアル >Python と JavaScript 間のコード変換のための 4 つのツール
Python それとも JavaScript?多くの友人は、現在どちらが強いのか、どちらがより明るい発展の見通しを持っているのかについてまだ議論していますが、Web フロントエンドの分野では、両者の競争に明確な答えがあることは疑いの余地がありません。ブラウザ プラットフォームに基づいて、JavaScript を放棄すると、選択できるプロジェクトはほとんどなくなります。
そうですね、おそらく答えはそれほど絶対的なものではありません。 JavaScript は、他の多くのプログラミング言語 (例として、TypeScript、Emscripten、Cor、Cheerp など) の変換ターゲットとして選択されています。一方、Python には多くのファンがおり、既存のライブラリの強力なライブラリがあるため、JavaScript の変換または翻訳のオプションとして理想的です。
Python を JavaScript の世界にうまく導入できる 4 つのプロジェクトを見てみましょう:
Transcrypt
これは、新しく登場した Python から JS へのトランスレーターです。 Transcrypt は、生成するコードの品質レベルに対して素晴らしい取り組みを行っています。まず、多重継承やラムダ式など、元の Python コード構造を可能な限り保持します。 Python ソース コードは、JavaScript の名前空間内のオブジェクトを直接呼び出すこともできます。 Python で document.getElementById にアクセスしようとすると、変換されたコードも JavaScript で document.getElementById を使用するように切り替わります。
ドキュメントによると、Transcrypt は CPython の抽象構文ツリー モジュールを使用してこれらの変換タスクを完了し、Python が独自のコードを解析する方法に基づいてプログラムからアクセスできます。このプロジェクトはまだアルファテストの段階ですが、すでに驚くべき勢いを見せています。
Jiphy
いわゆる Jiphy は、「JavaScript in、Python out」の略です。つまり、この 2 つを両方向に変換できます。さらに、両方の言語のコードを、もう一方の言語に変換する前に混合することができます。
現時点での Jiphy の最大の欠点は、Python の機能セットの一部しかサポートしていないことです。クラスとデフォルト パラメータはまだサポートされていませんが、デコレータと例外は使用できます。これは主に、Jiphy がソース コードとターゲット コード間の直接行間変換を主張しているためですが、その開発者は、より高度な Python 機能をサポートするために ES6 の新機能にも注目し始めています。
Brython
おそらくいつか、WebAssembly のビジョンが現実になったとき、私たちは Web 開発に好みの言語を選択できるようになるでしょう。そして、Brython はこれについて独自の理解を持っています。少なくとも Python 3 には当てはまります。なぜ待つ必要があるのでしょうか。
Brython は、一連の JavaScript ライブラリを通じて Python 3 のすべてのキーワードとほとんどの組み込みプラグインをエミュレートすることで、クライアント側の Web プログラミング ソリューションとして Python 3 バージョンを使用するという目標を達成します。 Python で書かれたスクリプトは Web ページに直接追加できます。また、Brython は、DOM と連携して実行するための一連の高度な Python モジュール インターフェイス (ブラウザ) もサポートしており、これは多くの場合 JavaScript で直接実行できます。
ただし、Brython は、ローカル ファイル システム処理をサポートしないなど、ブラウザが JavaScript コードに課す制限も維持します。
RapydScript
RapydScript は、「Python の JavaScript コードをもうつまらないものにする」ことを約束しています。このプロジェクトは、Python でコードを作成し、JavaScript コードを生成し、両方の長所を引き出すというコンセプトで CoffeeScript に似ています。 Python 側には明確な構文ルールがあり、JavaScript 側には匿名関数、DOM 操作、および jQuery や Node.js コアなどの既存の JavaScript ライブラリを使用する機能があります。