バックエンドで使用される言語で書かれたフロントエンド![閉まっている]


10

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

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

それは、PHPがREST、RPCなどを介して他の言語で書かれた他のサービスを呼び出すためのフロントエンドであることを意味しますか?


3
この投稿は読みにくいです(テキストの壁)。より良い形に編集していただけませんか?
gnat 2013

回答:


36

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

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

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

最初に、クライアント(クライアント側)で実行されるコード(通常はJavaScript)であるAJAXを使用して、それ自体はWebページを生成しないインターネット向けサービスから情報を取得して、表示するWebページを作成します。サービスはフロントエンドでサーバー側の情報を生成しています(URLがわかっている場合は公開されており、ブラウザーを直接指すことができるため)。

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

Web 2.0より前は、物事ははるかに単純でした。当時、Webアプリケーションのコンテキストでは、フロントエンドはWebページが生成された場所でしたが、JavaScriptはクライアント側でのみ実行され、画像の上にマウスを移動するとハイライト表示のようなWebページに小さな装飾を施しました。しかし、その単純さは人々を彼らの定義について怠惰にしました。現在の状況はより複雑なので、これらの用語について正確にすることが重要です。

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


最後の文があれば、code.google.com / p / php
Andrea

フロントエンドですべての言語を使用でき、バックエンドですべての言語を使用できる場合、その区別は質問された方法では役に立たないのではないでしょうか。アプリケーションのコンテキストでのみ回答できます。
Claudiu Creanga 2016年

7

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

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

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

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

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

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

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

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

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

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

編集:

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

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

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

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

この質問が存在するという事実自体が、「フロントエンド」と「バックエンド」が本質的にあいまいであり、今後もそうであることの例として機能します。

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


3
私はあなたに反対票を投じませんでしたが、あなたの答えは質問と同じくらい読むのが難しく、それは実際に用語の混乱に対処していません(どちらかと言えば、それを悪化させます)。さらに重要なのは、「フロントエンドとバックエンド」と「クライアント側とサーバー側」の間に曖昧さないことです。それらは異なる明確な関係を記述します。「色や形について考えるのをやめたい。緑や青や丸や四角形、緑や四角形があることは曖昧だ」とも言えるでしょう。
itsbruce 2013

どー、仕事に戻らなければならなかったので、校正する時間が足りなかった。コメントを歓迎しますが、編集する準備ができています。用語については自分の考えに固執しますが、多少拡張します。た。
ファーガスインロンドン2013年

必ずしもそうとは限りません-私はWebサーバー言語をクライアントの一部と見なしています(今日、Webサーバーがハッキングされる頻度を考慮して、1日目から侵害されたと見なす必要があります)。そのため、プレゼンテーションの一部であるサーバー側言語を区別する必要があります。アプリケーション層サービスを提供するサーバー側言語の層。したがって、PHPは「フロントエンド、サーバー側」の言語と考えることができます。
gbjbaanb 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.