ส่วนหน้าเขียนด้วยภาษาที่ใช้สำหรับแบ็กเอนด์! [ปิด]


10

จากประสบการณ์ของฉันในการพัฒนาเว็บไซต์ฉันรู้ว่ามีการใช้ภาษาอย่าง PHP, Java, Python..etc สำหรับการพัฒนาแบ็กเอนด์ (ซอฟต์แวร์ที่ทำงานบนเซิร์ฟเวอร์) และสำหรับภาษาส่วนหน้าใช้ JS / HTML / CSS

แต่ฉันเห็นหลาย บริษัท บอกว่าพวกเขาใช้เช่น PHP สำหรับการพัฒนาส่วนหน้าและไพ ธ อนสำหรับแบ็คเอนด์

นั่นหมายความว่า PHP เป็นส่วนหน้าสำหรับการเรียกบริการอื่น ๆ ที่เขียนเป็นภาษาอื่น ๆ ผ่าน REST, RPC .. เป็นต้น?


3
โพสต์นี้ค่อนข้างอ่านยาก (ผนังข้อความ) คุณจะช่วยแก้ไขมันให้เป็นรูปร่างที่ดีขึ้นได้ไหม
ริ้น

คำตอบ:


36

คุณสับสนคำว่า "front-end" และ "back-end" กับ "ฝั่งเซิร์ฟเวอร์" และ "ฝั่งไคลเอ็นต์" "แบ็คเอนด์" มักจะหมายถึงระบบที่ไม่ได้สัมผัสโดยตรงกับผู้ใช้ (เซิร์ฟเวอร์ฐานข้อมูลมิดเดิลแวร์และอื่น ๆ ) ในขณะที่ "ฟรอนต์เอนด์" มักจะหมายถึงแอพพลิเคชั่น (ในกรณีของเว็บ และหน้าเว็บแบบไดนามิก) เข้าถึงได้โดยตรงจากลูกค้า

ในเว็บแอปพลิเคชันไคลเอนต์ (เบราว์เซอร์ของผู้ใช้) เข้าถึงหน้าเว็บที่จัดเก็บหรือสร้าง "ฝั่งเซิร์ฟเวอร์" โดยใช้เทคโนโลยี "ส่วนหน้า" องค์ประกอบส่วนหน้าเหล่านั้นอาจดึงข้อมูลหรือข้อมูลอื่น ๆ จากส่วนประกอบ "แบ็คเอนด์" ดังนั้นเว็บแอปพลิเคชันที่เขียนด้วย PHP จะเป็น "front-end" แต่ "ฝั่งเซิร์ฟเวอร์" แต่ถ้าหน้าเว็บที่มีจาวาสคริปต์ใด ๆ ที่จะดำเนินการโดยเบราว์เซอร์ของผู้ใช้ที่รหัสจาวาสคริปต์จะต้องถูกประหารชีวิต "ฝั่งไคลเอ็นต์"

หวังว่าฉันได้ลบความสับสนบางส่วน แต่ตอนนี้ฉันมีความเสี่ยงในการสร้างเพิ่มเติม

อันดับแรกเรามีAJAXซึ่งเป็นรหัส (โดยปกติคือ JavaScript) ที่ดำเนินการในไคลเอนต์ (ดังนั้นฝั่งไคลเอ็นต์) เพื่อสร้างหน้าเว็บที่คุณเห็นโดยการดึงข้อมูลจากบริการเชื่อมต่ออินเทอร์เน็ตซึ่งไม่ได้สร้างหน้าเว็บขึ้นมาเอง บริการกำลังสร้างเซิร์ฟเวอร์ข้อมูลของพวกเขาในส่วนหน้า (เนื่องจากพวกเขาเป็นสาธารณะและคุณสามารถชี้เบราว์เซอร์ของคุณตรงไปที่พวกเขาถ้าคุณรู้ URL)

ประการที่สองจาวาสคริปต์ไม่ จำกัด เฉพาะการใช้งานฝั่งไคลเอ็นต์ มันได้รับความนิยมเพิ่มมากขึ้นเป็นภาษา "ฝั่งเซิร์ฟเวอร์" (ดูที่node.jsสำหรับตัวอย่างหนึ่ง) ดังนั้นการใช้งานทั่วไปจึงเป็นเพียงบริการอินเทอร์เน็ตที่ฉันได้อธิบายไว้ในวรรคก่อน

สิ่งที่ใช้ในการจะง่ายมากก่อนWeb 2.0 ย้อนกลับไปในบริบทของเว็บแอพพลิเคชั่นส่วนหน้าเป็นที่ที่เว็บเพจถูกสร้างขึ้นในขณะที่จาวาสคริปต์ใช้งานฝั่งไคลเอ็นต์เท่านั้นและสร้างเครื่องสำอางเล็ก ๆ ให้กับหน้าเว็บเช่นภาพไฮไลท์เมื่อคุณเลื่อนเมาส์ไป อย่างไรก็ตามความเรียบง่ายนั้นทำให้คนขี้เกียจเกี่ยวกับคำจำกัดความของพวกเขา ตอนนี้สถานการณ์มีความซับซ้อนมากขึ้นดังนั้นสิ่งสำคัญคือต้องแม่นยำเกี่ยวกับข้อกำหนดเหล่านี้

(โอ้และถ้าคุณต้องใช้ PHP โปรดเก็บไว้ที่ส่วนหน้ามันไม่ใช่เทคโนโลยีแบ็คเอนด์ที่ดีอย่างเด่นชัดและถ้าคุณเคยเจอใครที่สร้างเบราว์เซอร์ที่เรียกใช้ PHP ฝั่งไคลเอ็นต์ให้ยิงพวกมัน)


เมื่อพิจารณาจากประโยคสุดท้ายของคุณคุณสามารถเพลิดเพลินกับcode.google.com/p/php-to-js :-P
Andrea

ถ้าทุกภาษาสามารถใช้กับส่วนหน้าและทุกภาษาสามารถใช้กับส่วนหลังได้ความแตกต่างนั้นไร้ประโยชน์ในแบบที่ถูกถามหรือไม่ สามารถตอบได้ในบริบทของแอปพลิเคชันเท่านั้น
Claudiu Creanga

7

ฉันคิดว่าคำถามของคุณอาจเฉพาะเจาะจงกับ PHP จริงๆเพราะฉันไม่เห็นเทคโนโลยีแบ็คเอนด์อื่น ๆ ที่คุณพูดถึงการใช้แบบนี้

PHP เป็นตัวอย่างที่ตลกเนื่องจากเป็นไปได้ (ในลักษณะที่ค่อนข้างน่าเกลียดที่ฉันอาจเพิ่ม) ถูกมองว่าเป็นภาษา all-in-one ที่เกี่ยวข้องกับโครงการเว็บจำนวนมาก คุณสามารถทำงานแบบ " แบ็คเอนด์ " แบบดั้งเดิม- เช่นการทำงานของไฟล์และฐานข้อมูลในขณะเดียวกันก็สร้างมาร์กอัป" front-end "

สิ่งนี้สามารถนำไปสู่ความยุ่งเหยิงของสปาเก็ตตี้ในที่ที่ไม่มีความกังวลแยกจากกันดังนั้นฉันควรขมวดคิ้วในใจของฉัน สำหรับตัวอย่างที่ดีถ้าคุณเรียกดูแหล่ง wordpress คุณมักจะหลงทางและนั่นเป็นโครงการหนึ่งที่ฉันตำหนิภาษาองค์กรของ codebase นั้นดีมาก

สิ่งนี้สามารถแก้ไขได้บ้างโดยใช้ " เครื่องมือสร้างแรงบันดาลใจ " (เช่นSmarty )) - แต่มันยังคงเป็น PHP ซึ่งสร้าง "ส่วนหน้า" ในขณะที่ยังมีฟังก์ชั่น "แบ็คเอนด์" นี่เป็นการตัดสินใจโดยเจตนาที่อยู่เบื้องหลังการออกแบบ PHP อย่างไรก็ตามมันคือ " ตัวประมวลผลไฮเปอร์เท็กซ์ " ทั้งหมด!

ดังนั้น PHP สามารถปรับให้เหมาะกับการใช้ " front-end " และ " back-end " ซึ่งควรอธิบายตัวอย่างของคุณ ดังนั้นคุณน่าจะถูกต้องใน PHP ที่จะประมวลผลและสร้าง mark-up ทั้งหมดสำหรับ front-end แต่มันจะทำการร้องขอที่อื่นเพื่อรวบรวมข้อมูลที่ต้องการ - บริการที่เขียนในภาษาดังกล่าว .

โดยส่วนตัวแล้วฉันรู้สึกว่าคำศัพท์ "แบ็คเอนด์" และ "ฟรอนต์เอนด์" นั้นค่อนข้างจะเก่าไปหน่อย ฉันต้องการสิ่งที่ถูกเรียกเพียงฝั่งลูกค้าและฝั่งเซิร์ฟเวอร์; ดังนั้นจึงไม่มีความคลุมเครือที่แท้จริง *

เมื่อเร็ว ๆ นี้ฉันเห็นข้อมูลจำเพาะของลูกค้าซึ่งต้องใช้ระบบแบ็คเอนด์ที่เขียนใน node.js และเครื่องมือที่เกี่ยวข้อง แต่ต้องการสร้าง front-end โดยใช้เฟรมเวิร์ก PHP (Laravel) สิ่งนี้มาพร้อมกับค่าใช้จ่ายที่เกี่ยวข้องจำนวนมากและในใจของฉัน - ไม่ใช่โซลูชันที่สง่างามและอาจทำให้เกิดปัญหาเล็กน้อยพอสมควร

โดยส่วนตัวแล้วการกำหนดค่าแบบนี้ดูเหมือนว่ามีคนใส่ PHP เข้าไปในกองอื่นโดยไม่จำเป็นซึ่งหมายความว่าต้องใช้ทรัพยากรมากกว่าที่จำเป็นจริง ๆ เจ้าหน้าที่บำรุงรักษาจำเป็นต้องได้รับเทคโนโลยีที่หลากหลายและมีจุดที่ล้มเหลวมากขึ้น

นอกจากนี้ฉันยังคิดว่ามีสถานการณ์น้อยมากที่รับประกันกองซ้อนกลางประเภทนี้ ภาษา / กรอบงานส่วนหลังส่วนใหญ่มีความสามารถในการสร้าง mark-up ที่จำเป็นสำหรับ front-end อย่างสมบูรณ์ แม้ว่าฉันจะได้รับการแก้ไข

* แม้ว่าการตั้งคำถามของคุณเป็นสิ่งที่ควรทำ .. ระบบการแบ็คเอนด์ที่สร้างขึ้นโดยใช้ Javascript นั้นเป็นอย่างไร (node.js;))

แก้ไข:

หลังจากอ่านความคิดเห็นโดย @itsbruce ฉันได้ตัดสินใจที่จะชี้แจงสิ่งที่ฉันหมายถึงโดยความคลุมเครือของคำศัพท์ "front-end" / "back-end" ของฉัน

โดยปกติแล้วคำศัพท์นี้จะใช้ได้ดีเว็บแอปพลิเคชั่นทางสถาปัตยกรรมนั้นง่ายกว่ามากและกล้าบอกว่ามันโง่มาก ในใจของฉันมันสะอาดกว่าที่จะพูดว่า "ฝั่งเซิร์ฟเวอร์" และ "ฝั่งไคลเอ็นต์" และนี่เริ่มชัดเจนขึ้นเนื่องจากแนวโน้มในปัจจุบันของการผลักดันการประมวลผลและตรรกะให้กับลูกค้ามากขึ้นเรื่อย ๆ

เป็นที่ยอมรับได้ที่จะทำการประมวลผลข้อมูลในปริมาณที่พอสมควรแก่ลูกค้า (เพียงมองที่เฟรมเวิร์กของจาวาสคริปต์ที่กำลังได้รับความนิยม) แต่นี่เป็นส่วนหน้าจริงๆหรือ? ผู้ใช้ไม่เห็นพวกเขาเห็นผลลัพธ์ของมัน - และตามเกณฑ์ดั้งเดิมที่โดยทั่วไปจะถูกมองว่าเป็น "แบ็คเอนด์"; แต่สิ่งนี้กำลังเกิดขึ้นในเบราว์เซอร์ทันที ..

ในทำนองเดียวกันและเกี่ยวข้องกับคำถามนี้อย่างไม่น่าเชื่อการสร้าง mark-up ใน PHP เป็นงานส่วนหน้าจริงๆหรือ? ฉันสงสัยว่าการเลือกบอร์ดงานอย่างรวดเร็วแสดงตำแหน่งนักพัฒนาซอฟต์แวร์ไม่กี่คนที่คาดหวังว่าจะได้รับประสบการณ์หรือความรู้ PHP แต่สัญชาตญาณจะแนะนำว่ามาร์กอัปสำหรับส่วนต่อประสานนั้นเป็นส่วนหน้า

ความจริงที่ว่าคำถามนี้มีอยู่ทำหน้าที่เป็นตัวอย่างของวิธี " front-end " และ " back-end " มีความคลุมเครือโดยเนื้อแท้และจะยังคงเป็นเช่นนั้น

ด้วยการอ้างถึงงานว่า "ฝั่งเซิร์ฟเวอร์" หรือ "ฝั่งไคลเอ็นต์" ที่ความคลุมเครือหายไปคุณจะรู้ว่าโค้ดกำลังทำงานอยู่ที่ไหนและจะใช้ภาษาใด ถ้าคุณพูดว่า " front-end " ในตัวอย่างที่ OP ได้ให้ไว้ฉันสงสัยว่าหลายคนจะไป " โอ้ดังนั้น PHP บนเซิร์ฟเวอร์ใช่มั้ย "


3
ฉันไม่ได้ออกเสียงลงคะแนนของคุณ แต่คำตอบของคุณนั้นยากที่จะอ่านเหมือนกับคำถามและมันไม่ได้ทำให้เกิดความสับสนกับคำศัพท์ (ถ้ามีอะไรก็ทำให้แย่ลง) ที่สำคัญมีเพียงแค่เป็นความคลุมเครือระหว่าง "front-end วี back-end." และ "ฝั่งไคลเอ็นต์วีฝั่งเซิร์ฟเวอร์." ไม่มี; พวกเขาอธิบายความสัมพันธ์ที่แตกต่างและชัดเจน คุณอาจพูดว่า "ฉันอยากให้เราเลิกนึกถึงเรื่องสีและรูปร่าง; มันคลุมเครือที่สิ่งต่าง ๆ จะเป็นสีเขียวหรือสีน้ำเงินและกลมหรือสี่เหลี่ยมและบางสิ่งก็เป็นสีเขียวและสี่เหลี่ยม"
itsbruce

Doh ฉันไม่มีเวลาเพียงพอในการพิสูจน์อ่านเพราะฉันต้องกลับไปทำงาน ขอบคุณสำหรับความคิดเห็นแม้ว่ามันให้ฉันหัวขึ้นเพื่อแก้ไข ฉันทำตามความคิดของฉันเกี่ยวกับคำศัพท์แม้ว่า แต่จะขยายออกไปบ้าง ขอบคุณ
เฟอร์กัสในลอนดอน

ไม่จำเป็น - ฉันถือว่าภาษาเว็บเซิร์ฟเวอร์เป็นส่วนหนึ่งของไคลเอนต์ (พิจารณาว่าบ่อยครั้งที่เว็บเซิร์ฟเวอร์ถูกแฮ็กในปัจจุบันควรพิจารณาว่าถูกบุกรุกจากวันที่ 1) ดังนั้นจึงจำเป็นต้องแยกแยะภาษาฝั่งเซิร์ฟเวอร์ที่เป็นส่วนหนึ่งของงานนำเสนอ Tier จากภาษาฝั่งเซิร์ฟเวอร์ที่ให้บริการระดับแอ็พพลิเคชัน ดังนั้น PHP จึงถือเป็นภาษา "front-end, ฝั่งเซิร์ฟเวอร์"
gbjbaanb
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.