web-dev-qa-db-ja.com

バックエンドで使用される言語で書かれたフロントエンド!

私はウェブ開発の経験から、PHP、Java、Pythonなどの言語がバックエンド開発のもの(サーバーで実行されるソフトウェア)に使用され、フロントエンド言語にはJS/HTML/CSSが使用されていることを知っています。

しかし、私は多くの企業が、たとえば、PHPフロントエンド開発に、pythonをバックエンド開発に使用していると言っています。

PHPは、REST、RPCなどを介して他の言語で記述された他のサービスを呼び出すためのフロントエンドですか?

10
shox

「フロントエンド」と「バックエンド」を「サーバー側」と「クライアント側」と混同しています。 「バックエンド」は通常、ユーザーに直接公開されていないシステム(データベースサーバー、ミドルウェアなど)を指しますが、「フロントエンド」は通常、アプリケーションを指します(Webの場合、これは通常静的なことを意味します)および動的Webページ)クライアントから直接アクセスされます。

Webアプリケーションでは、クライアント(ユーザーのブラウザー)は、「フロントエンド」テクノロジーによって保存または動的に生成された「サーバー側」のWebページにアクセスします。これらのフロントエンドコンポーネントは、「バックエンド」コンポーネントからデータやその他の情報を取得します。したがって、PHPで記述されたWebアプリケーションは「フロントエンド」ですが「サーバー側」になります。ただし、Webページにユーザーのブラウザで実行されるJavaScriptが含まれている場合、thatJavaScriptコードは「クライアント側」で実行されます。

うまくいけば私はいくつかの混乱を取り除いたが、今私はいくつかをさらに作成する危険を冒している。

最初に、 [〜#〜] ajax [〜#〜] をクライアント(つまりクライアント側)で実行するコード(通常はJavaScript)で、プルして表示するWebページを作成します。それ自体はWebページを生成しないインターネット向けサービスからの情報。サービスはフロントエンドでサーバー側の情報を生成しています(パブリックであり、URLがわかっている場合はブラウザーで直接サービスにアクセスできるため)。

第二に、JavaScriptはもちろんクライアントサイドでの使用に限定されません。 「サーバーサイド」言語として人気が高まっています(1つの例として node.js を参照)。そのため、その最も一般的な用途は、前の段落で説明した種類のインターネット向けサービスのみです。

Web 2. の前は、物事はずっと単純でした。当時webアプリケーションのコンテキストでは、JavaScriptはクライアント側でのみ実行され、マイナーな見栄えをするためにフロントエンドがWebページが生成されていましたあなたがそれらの上にマウスを移動したときにハイライト画像のようなウェブページ。しかし、その単純さにより、人々はその定義について怠惰になりました。現在の状況はより複雑なので、これらの用語について正確にすることが重要です。

(ああ、あなたが持っている場合PHPを使用する場合は、フロントエンドに置いてください。それは優れたバックエンドテクノロジー。また、PHPクライアント側を実行するブラウザを作成している人を見つけたら、それらを撃ってください。)

36
itsbruce

あなたが言及している他のバックエンド技術がこのように使用されているのを見ることができないので、あなたの質問は本当にPHPに固有のものであると思います。

PHPは面白い例ですが(多くの場合醜い方法で追加するかもしれませんが)、多くのWebプロジェクトに関してオールインワンの言語と見なされています。従来の「back-end」タスク(ファイルやデータベースの操作など)を実行しながら、「front-endも構築できます。 "マークアップ。

これは明らかに心配の分離がないスパゲッティの混乱につながる可能性があるので、私の心の中で本当に眉をひそめるべきです。良い例として、wordpressソースを閲覧すると、しばしば見失われる可能性があります。これは、私が言語のせいにするプロジェクトの1つであり、コードベースの編成は非常に優れています。

これは、 "templating engine"(- Smarty )など)を使用することで多少改善できますが、それでもPHPこれは、「フロントエンド」を構築すると同時に「バックエンド」機能を提供します。これはPHPの設計の背後にある意図的な決定でしたが、結局は「ハイパーテキストプロセッサ」です!

したがって、PHPは、「front-end」と「back-end」の両方の使用に簡単に適合できます。 、あなたの例を明確にする必要があります。 したがって、PHPはフロントエンドのすべてのマークアップを処理および構築することになりますが、必要なものを収集するために他の場所でリクエストを行うことになります。データ-ほとんどの場合、サービスは前述の言語のいずれかで記述しました。

個人的には、「バックエンド」と「フロントエンド」の用語全体が少し古くなっているように感じます。私はむしろ、クライアント側とサーバー側に言及されただけのことを望みます。その場合、本当のあいまいさはありません。*

ごく最近、node.jsと関連ツールで記述されたバックエンドシステムを必要とするクライアント仕様を見ましたが、PHPフレームワーク(Laravel)を使用したフロントエンドビルドが必要でした。これには多くの関連コストが伴いますが、私の頭では-エレガントなソリューションではなく、かなりの数の問題が発生する可能性があります。

個人的に言えば、この種の構成は、誰かが不必要に別のスタックにPHPを押し込んだように見えます。つまり、実際に必要とされるよりも多くのリソースが必要であり、メンテナンススタッフは幅広いテクノロジーに触れる必要があり、障害点。

さらに、この種の中間スタックを保証するシナリオはほとんどないと私は思います。ほとんどのバックエンド言語/フレームワークは、フロントエンドに必要なマークアップを完全に生成できます。私はそこに訂正される立場にありますが。

*ただし、質問を正直に言うと、Javascriptを使用して構築されたバックエンドシステムはどうですか? (node.js;))

編集:

@itsbruceのコメントを読んだ後、「フロントエンド」/「バックエンド」という用語のあいまいさによって私が何を意味するのかを明確にすることにしました。

従来はこの用語で十分でしたが、アーキテクチャ上はWebアプリケーションの方がはるかに単純でした。 "サーバー側"と "クライアント側"を言うのは私の心の中でかなりクリーンであり、これは、より多くの処理とロジックをクライアントにプッシュする現在の傾向が一般的になりつつあるので、より明確になっています。

かなりの量のデータ処理をクライアント側で行うことは許容できるようになっています(現在トレンドになっているjavascriptフレームワークのいくつかを見てください)が、それは本当にフロントエンドなのでしょうか?ユーザーはそれを見ず、その結果を見ます-そして、一般的に「バックエンド」と見なされる伝統的な基準によって。しかし、これは現在ブラウザで発生しています。

同様に、この質問に非常に関連しているのは、PHPでマークアップを構築することは本当にフロントエンドタスクですか?ジョブボードをざっと見ると、フロントエンドの開発者のポジションがPHPの経験や知識を期待していることがわかります。それでも直感は、インターフェースのマークアップが本質的にフロントエンドであることを示唆します。

この質問が存在するという事実自体が、「front-end」と「back-end」が本質的にどのように固有であるかの例として機能しますあいまいであり、そうであり続けるでしょう。

曖昧さが失われる「サーバー側」または「クライアント側」としてタスクを参照することにより、コードが実行される場所と使用される言語がわかります。 OPが提供する例で「front-end」と言った場合、多くの人が「Ohなので、PHPサーバー上で正しいですか? "。

7