Ujung depan ditulis dalam bahasa yang digunakan untuk ujung belakang! [Tutup]

10

Dari pengalaman saya dalam pengembangan web, saya tahu bahwa bahasa seperti PHP, Java, Python..etc digunakan untuk hal-hal pengembangan backend (perangkat lunak yang berjalan di server), dan untuk bahasa ujung depan, JS / HTML / CSS digunakan.

Tetapi saya melihat banyak perusahaan mengatakan bahwa mereka menggunakan, misalnya, PHP untuk pengembangan front-end, dan python untuk back-end.

Apakah itu berarti PHP adalah front-end untuk memanggil layanan lain yang ditulis dalam bahasa lain melalui REST, RPC ..etc?

shox
sumber
3
posting ini agak sulit dibaca (dinding teks). Maukah Anda mengeditnya menjadi bentuk yang lebih baik?
nyamuk

Jawaban:

36

Anda bingung istilah "front-end" dan "back-end" dengan "sisi server" dan "sisi klien". "Back-end" biasanya mengacu pada sistem yang tidak secara langsung terkena pengguna (server database, middleware dan sebagainya), sedangkan "front-end" biasanya mengacu pada aplikasi (dalam kasus Web, ini biasanya berarti statis dan halaman web dinamis) diakses langsung oleh klien.

Dalam aplikasi web, klien (browser pengguna), mengakses halaman web yang disimpan atau dihasilkan "sisi server" secara dinamis oleh teknologi "front-end". Komponen ujung-depan itu, pada gilirannya, dapat menarik data atau informasi lain dari komponen "ujung-belakang". Jadi aplikasi web yang ditulis dalam PHP adalah "front-end" tetapi "server-side". Namun, jika halaman web yang terdapat javascript apapun yang akan dieksekusi oleh browser pengguna, bahwa kode javascript akan dieksekusi "client-side".

Mudah-mudahan saya telah menghilangkan beberapa kebingungan, tetapi sekarang saya berisiko membuat lebih banyak lagi.

Pertama, kita memiliki AJAX , yang merupakan kode (biasanya JavaScript) dieksekusi di klien (jadi sisi klien), untuk membuat halaman web yang Anda lihat dengan menarik informasi dari layanan yang menghadap Internet yang tidak sendiri menghasilkan halaman web. Layanan menghasilkan sisi server informasi mereka di front-end (karena mereka bersifat publik dan Anda dapat mengarahkan browser Anda langsung ke mereka jika Anda tahu url).

Tentu saja JavaScript kedua tidak terbatas pada penggunaan sisi klien. Ini telah menjadi semakin populer sebagai bahasa "sisi server" (lihat contoh node.js ). Dengan demikian, penggunaannya yang paling umum adalah hanya untuk jenis layanan yang menghadap Internet yang saya jelaskan dalam paragraf sebelumnya.

Hal-hal yang dulu jauh lebih sederhana sebelum Web 2.0 . Saat itu, dalam konteks aplikasi web , ujung depan adalah tempat halaman web dihasilkan, sementara JavaScript hanya menjalankan sisi klien dan membuat kosmetik kecil ke halaman web seperti gambar hi-lighting ketika Anda memindahkan mouse di atasnya. Namun, kesederhanaan itu membuat orang malas tentang definisi mereka. Sekarang situasinya lebih kompleks, jadi penting untuk lebih teliti tentang istilah-istilah ini.

(Oh, dan jika Anda harus menggunakan PHP, tolong simpan di ujung depan. Ini jelas bukan teknologi back-end yang bagus. Dan jika Anda pernah menemukan orang yang membuat browser yang mengeksekusi sisi klien PHP, tembak mereka.)

itu otaknya
sumber
Diberikan kalimat terakhir Anda, Anda dapat menikmati code.google.com/p/php-to-js :-P
Andrea
jika setiap bahasa dapat digunakan di frontend dan setiap bahasa dapat digunakan di backend bukankah perbedaan tidak berguna dalam cara yang diminta? itu hanya dapat dijawab dalam konteks aplikasi.
Claudiu Creanga
7

Saya pikir pertanyaan Anda mungkin cukup spesifik untuk PHP, karena saya tidak dapat melihat teknologi back-end lainnya yang Anda sebutkan digunakan seperti ini.

PHP adalah contoh lucu karena dapat (dalam cara yang agak jelek saya dapat menambahkan) dipandang sebagai bahasa all-in-one sehubungan dengan banyak proyek web. Anda dapat melakukan tugas " back-end " tradisional Anda - seperti operasi file dan database, sementara juga membangun mark-up " front-end ".

Ini jelas dapat menyebabkan kekacauan spaghetti di mana tidak ada pemisahan yang nyata dari keprihatinan, jadi itu harus benar-benar disukai dalam pikiran saya. Sebagai contoh yang bagus, jika Anda menelusuri sumber wordpress Anda sering dapat tersesat - dan itu adalah salah satu proyek di mana saya menyalahkan bahasa, organisasi basis kode sebenarnya sangat baik.

Ini dapat diatasi, agak, dengan menggunakan " mesin templating " (seperti Smarty )) - tetapi masih PHP yang membangun "front-end" sementara juga menyediakan fungsionalitas "back-end". Ini adalah keputusan yang disengaja di balik desain PHP, bagaimanapun, ini adalah " prosesor hypertext "!

Jadi PHP dapat dengan mudah masuk ke penggunaan " front-end " dan " back-end ", yang seharusnya menjelaskan contoh Anda. Oleh karena itu Anda kemungkinan besar benar bahwa PHP akan memproses dan membangun semua mark-up untuk front-end, tetapi akan membuat permintaan di tempat lain untuk mengumpulkan data yang diperlukan - kemungkinan besar layanan menulis dalam salah satu bahasa yang disebutkan di atas .

Secara pribadi, saya merasa seluruh terminologi "back-end" dan "front-end" agak .. mungkin sudah ketinggalan zaman. Saya lebih suka hal-hal hanya dirujuk ke sisi klien dan sisi server; maka tidak ada ambiguitas nyata. *

Baru-baru ini saya melihat spesifikasi klien yang membutuhkan sistem back-end yang ditulis dalam node.js dan alat terkait, tetapi menginginkan pembangunan front-end menggunakan kerangka kerja PHP (Laravel). Ini datang dengan banyak biaya terkait, dan dalam pikiran saya - bukan solusi yang elegan dan dapat menyebabkan beberapa masalah yang adil di telepon.

Secara pribadi, konfigurasi seperti ini tampaknya seperti seseorang yang tidak perlu menyuntikkan PHP ke tumpukan lain - yang berarti lebih banyak sumber daya yang diperlukan daripada yang sebenarnya diperlukan, staf pemeliharaan membutuhkan paparan pada berbagai teknologi yang lebih luas dan ada lebih banyak titik kegagalan.

Selain itu, saya juga berpikir ada sangat sedikit skenario yang menjamin tumpukan perantara seperti ini; sebagian besar bahasa / kerangka kerja back-end mampu menghasilkan mark-up yang diperlukan untuk front-end. Meskipun saya berdiri untuk dikoreksi di sana.

* Meskipun, untuk menghidupkan pertanyaan Anda tentang itu .. Bagaimana dengan sistem back-end yang dibangun menggunakan Javascript? (node.js;))

Edit:

Setelah membaca komentar oleh @itsbruce, saya telah memutuskan untuk mengklarifikasi apa yang saya maksud dengan ambiguitas dari terminologi "front-end" / "back-end" saya.

Secara tradisional terminologi ini akan baik-baik saja, aplikasi web secara arsitektur jauh lebih sederhana - dan saya berani mengatakannya, banyak yang bodoh. Jauh lebih bersih dalam pikiran saya untuk mengatakan "Sisi Server" dan "Sisi Klien", dan ini semakin jelas karena tren saat ini mendorong lebih banyak pemrosesan dan logika ke klien semakin umum.

Menjadi dapat diterima untuk melakukan cukup banyak pemrosesan data sisi klien (lihat saja beberapa kerangka kerja javascript yang sedang tren saat ini), namun apakah itu benar-benar front-end? Pengguna tidak melihatnya, mereka melihat hasilnya - dan berdasarkan kriteria tradisional yang umumnya dianggap "back-end"; tapi ini sedang terjadi di browser sekarang ..

Demikian pula, dan sangat relevan dengan pertanyaan ini, apakah membangun mark-up di PHP benar-benar tugas front-end? Saya ragu, penelusuran cepat papan pekerjaan menunjukkan beberapa posisi pengembang front-end mengharapkan pengalaman atau pengetahuan PHP; namun intuisi akan menyarankan bahwa mark-up untuk antarmuka secara inheren front-end.

Fakta bahwa pertanyaan ini ada bertindak sebagai contoh tentang bagaimana " ujung depan " dan " ujung belakang " secara inheren ambigu, dan akan terus demikian.

Dengan merujuk tugas sebagai "sisi server" atau "sisi klien" bahwa ambiguitas hilang, Anda tahu di mana kode dieksekusi dan bahasa apa yang akan digunakan. Jika Anda mengatakan " front-end " dalam contoh OP telah menyediakan, saya ragu banyak orang akan berkata " Oh, jadi PHP di server kan? ".

Fergus Di London
sumber
3
Saya tidak memilih Anda, tetapi jawaban Anda hampir sama sulit untuk dibaca dengan pertanyaan dan itu benar-benar tidak mengatasi kebingungan istilah (jika ada, itu membuatnya lebih buruk). Lebih penting lagi, hanya ada adalah tidak ada ambiguitas antara "front-end v back-end." Dan "sisi klien v server-side."; mereka menggambarkan hubungan yang berbeda dan berbeda. Anda mungkin juga berkata, "Saya lebih suka kita berhenti mengambil tentang warna dan bentuk; ini ambigu bahwa hal-hal bisa hijau atau biru dan bulat atau persegi dan beberapa hal hijau dan persegi".
itsbruce
Doh, saya tidak punya cukup waktu untuk membaca bukti karena saya harus kembali bekerja. Ceria untuk komentar, itu memberi saya kepala untuk mengedit. Saya tetap melekat pada pemikiran saya tentang terminologi, tetapi akan sedikit mengembangkannya. Ta.
Fergus In London
belum tentu - Saya menganggap bahasa server web sebagai bagian dari klien (mengingat seberapa sering server web diretas saat ini harus dianggap dikompromikan sejak hari 1) sehingga ada kebutuhan untuk membedakan bahasa sisi server yang merupakan bagian dari presentasi tingkat dari bahasa sisi server yang menyediakan layanan tingkat aplikasi. Jadi PHP dapat dianggap sebagai bahasa "front-end, sisi-server".
gbjbaanb