Mặt trước được viết bằng ngôn ngữ được sử dụng cho mặt sau! [đóng cửa]


10

Từ kinh nghiệm phát triển web của tôi, tôi biết rằng các ngôn ngữ như PHP, Java, Python..etc được sử dụng cho công cụ phát triển phụ trợ (phần mềm chạy trên máy chủ) và đối với các ngôn ngữ giao diện người dùng, sử dụng JS / HTML / CSS.

Nhưng tôi thấy nhiều công ty nói rằng họ sử dụng, ví dụ, PHP để phát triển front-end và python cho back-end.

Điều đó có nghĩa là PHP là giao diện người dùng để gọi các dịch vụ khác được viết bằng các ngôn ngữ khác thông qua REST, RPC ..etc?


3
bài này khá khó đọc (tường văn bản). Bạn có phiền chỉnh sửa ing nó thành một hình dạng tốt hơn?
gnat

Câu trả lời:


36

Bạn đã nhầm lẫn giữa thuật ngữ "mặt trước" và "mặt sau" với "phía máy chủ" và "phía máy khách". "Back-end" thường dùng để chỉ các hệ thống không được tiếp xúc trực tiếp với người dùng (máy chủ cơ sở dữ liệu, phần mềm trung gian, v.v.), trong khi "front-end" thường đề cập đến ứng dụng (trong trường hợp của Web, điều này thường có nghĩa là tĩnh và các trang web động) được khách hàng truy cập trực tiếp.

Trong một ứng dụng web, máy khách (trình duyệt của người dùng), truy cập các trang web được lưu trữ hoặc tạo động "phía máy chủ" bằng các công nghệ "mặt trước". Lần lượt, các thành phần đầu cuối đó có thể lấy dữ liệu hoặc thông tin khác từ các thành phần "back-end". Vì vậy, một ứng dụng web được viết bằng PHP sẽ là "front-end" nhưng là "phía máy chủ". Tuy nhiên, nếu trang web chứa bất kỳ javascript để được thực thi bởi trình duyệt của người dùng, mã javascript sẽ được thực hiện "client-side".

Hy vọng rằng tôi đã loại bỏ một số nhầm lẫn, nhưng bây giờ tôi có nguy cơ tạo thêm một số.

Đầu tiên, chúng tôi có AJAX , mã (thường là JavaScript) được thực thi trong máy khách (phía máy khách), để tạo các trang web bạn nhìn thấy bằng cách lấy thông tin từ các dịch vụ đối mặt với Internet mà không tự tạo các trang web. Các dịch vụ đang tạo phía máy chủ thông tin của họ ở mặt trước (vì chúng là công khai và bạn có thể hướng trình duyệt của mình thẳng vào chúng nếu bạn biết url).

Tất nhiên, thứ hai là JavaScript không giới hạn đối với việc sử dụng phía máy khách. Nó đã trở nên ngày càng phổ biến như một ngôn ngữ "phía máy chủ" (xem node.js để biết một ví dụ). Như vậy, việc sử dụng phổ biến nhất của nó chỉ dành cho loại dịch vụ truy cập Internet mà tôi đã mô tả trong đoạn trước.

Mọi thứ đã đơn giản hơn nhiều trước Web 2.0 . Trước đó, trong ngữ cảnh của các ứng dụng web , giao diện người dùng là nơi các trang web được tạo ra, trong khi JavaScript chỉ chạy phía máy khách và tạo ra mỹ phẩm nhỏ cho các trang web như hình ảnh chiếu sáng khi bạn di chuyển chuột qua chúng. Tuy nhiên, sự đơn giản đó khiến mọi người lười biếng về định nghĩa của họ. Bây giờ tình hình phức tạp hơn, vì vậy điều quan trọng là phải chính xác về các điều khoản này.

(Ồ, và nếu bạn phải sử dụng PHP, vui lòng giữ nó ở mặt trước. Đây rõ ràng không phải là một công nghệ back-end tốt. Và nếu bạn thấy bất kỳ ai tạo ra một trình duyệt thực thi phía máy khách PHP, hãy bắn chúng.)


Đưa ra câu cuối cùng của bạn, bạn có thể tận hưởng code.google.com/p/php-to-js :-P
Andrea

nếu mọi ngôn ngữ có thể được sử dụng trên frontend và mọi ngôn ngữ có thể được sử dụng trên phụ trợ không phải là sự phân biệt vô dụng theo cách nó được hỏi? nó chỉ có thể được trả lời trong ngữ cảnh của một ứng dụng.
Claudiu Creanga

7

Tôi nghĩ rằng câu hỏi của bạn có thể khá cụ thể đối với PHP, vì tôi không thể thấy bất kỳ công nghệ back-end nào khác mà bạn đề cập đến được sử dụng như thế này.

PHP là một ví dụ buồn cười vì nó có thể (theo cách khá xấu xí mà tôi có thể thêm vào) được xem như một ngôn ngữ tất cả trong một liên quan đến rất nhiều dự án web. Bạn có thể thực hiện các tác vụ " back-end " truyền thống của mình - chẳng hạn như các thao tác tệp và cơ sở dữ liệu, đồng thời xây dựng đánh dấu " front-end ".

Điều này rõ ràng có thể dẫn đến một mớ hỗn độn spaghetti nơi không có sự tách biệt thực sự của mối quan tâm, vì vậy nó thực sự nên được nhăn mặt trong tâm trí của tôi. Đối với một ví dụ tuyệt vời, nếu bạn duyệt nguồn wordpress, bạn có thể thường xuyên bị lạc - và đó là một dự án mà tôi đổ lỗi cho ngôn ngữ, tổ chức của cơ sở mã thực sự rất tốt.

Điều này có thể được khắc phục, bằng cách sử dụng một " công cụ tạo khuôn mẫu " (như Smarty )) - nhưng vẫn là PHP đang xây dựng "front-end" trong khi cũng cung cấp chức năng "back-end". Đây là một quyết định có chủ ý đằng sau thiết kế của PHP, tuy nhiên, sau tất cả là một " bộ xử lý siêu văn bản "!

Vì vậy, PHP có thể dễ dàng phù hợp với cả hai cách sử dụng " front-end " và " back-end ", điều này sẽ làm rõ ví dụ của bạn. Do đó, rất có thể bạn đúng khi PHP sẽ xử lý và xây dựng tất cả các đánh dấu cho một giao diện người dùng, nhưng nó sẽ đưa ra yêu cầu ở một nơi khác để thu thập dữ liệu cần thiết - rất có thể là một dịch vụ được viết bằng một trong các ngôn ngữ nói trên .

Cá nhân, tôi cảm thấy toàn bộ thuật ngữ "back-end" và "front-end" là một chút .. có lẽ đã lỗi thời. Tôi muốn thay mọi thứ chỉ được đề cập đến phía máy khách và phía máy chủ; sau đó không có sự mơ hồ thực sự. *

Gần đây tôi đã thấy một thông số kỹ thuật khách yêu cầu một hệ thống back-end được viết bằng node.js và các công cụ liên quan, nhưng muốn bản dựng front-end sử dụng khung công tác PHP (Laravel). Điều này đi kèm với nhiều chi phí liên quan, và trong suy nghĩ của tôi - không phải là một giải pháp tao nhã và có thể gây ra một vài vấn đề công bằng.

Nói một cách cá nhân, các loại cấu hình này có vẻ như ai đó đã vô tình đưa PHP vào một ngăn xếp khác - điều đó có nghĩa là cần nhiều tài nguyên hơn thực tế cần thiết, nhân viên bảo trì cần tiếp xúc với nhiều công nghệ hơn và có nhiều điểm thất bại hơn.

Hơn nữa, tôi cũng nghĩ rằng có rất ít kịch bản đảm bảo loại ngăn xếp trung gian này; hầu hết các ngôn ngữ / khung công tác back-end hoàn toàn có khả năng tạo ra đánh dấu cần thiết cho giao diện người dùng. Mặc dù tôi đứng để được sửa chữa ở đó.

* Mặc dù, để đặt câu hỏi của bạn lên đầu .. Còn các hệ thống back-end được xây dựng bằng Javascript thì sao? (node.js;))

Biên tập:

Sau khi đọc một bình luận của @itsbruce, tôi đã quyết định làm rõ ý của tôi về sự mơ hồ của thuật ngữ "front-end" / "back-end" của tôi.

Theo truyền thống, thuật ngữ này sẽ ổn, các ứng dụng web về mặt kiến ​​trúc đơn giản hơn rất nhiều - và tôi dám nói là nó rất nhiều. Tôi nghĩ rằng "Phía máy chủ" và "Phía máy khách" sẽ rõ ràng hơn rất nhiều và điều này trở nên rõ ràng hơn khi xu hướng hiện nay là đẩy nhiều xử lý và logic vào máy khách đang trở nên phổ biến.

Việc xử lý dữ liệu phía máy khách trở nên chấp nhận được (chỉ cần nhìn vào một số khung javascript hiện đang là xu hướng), nhưng đó có thực sự là mặt trước? Người dùng không nhìn thấy nó, họ thấy kết quả của nó - và theo tiêu chí truyền thống thường được xem là "back-end"; nhưng điều này đang xảy ra trong trình duyệt bây giờ ..

Tương tự, và cực kỳ phù hợp với câu hỏi này, liệu xây dựng đánh dấu trong PHP có thực sự là một nhiệm vụ đầu cuối không? Tôi nghi ngờ điều đó, một trình duyệt nhanh của bảng công việc cho thấy một vài vị trí nhà phát triển front-end mong đợi kinh nghiệm hoặc kiến ​​thức về PHP; Tuy nhiên, trực giác sẽ gợi ý rằng việc đánh dấu cho giao diện vốn dĩ là giao diện người dùng.

Chính thực tế là câu hỏi này tồn tại như một ví dụ về cách " front-end " và " back-end " vốn đã mơ hồ, và sẽ tiếp tục như vậy.

Bằng cách coi các tác vụ là "phía máy chủ" hoặc "phía máy khách" mà sự mơ hồ bị mất, bạn biết mã đang thực thi ở đâu và ngôn ngữ nào sẽ được sử dụng. Nếu bạn nói " front-end " trong ví dụ mà OP đã cung cấp, tôi nghi ngờ nhiều người sẽ nói " Ồ, vậy PHP trên máy chủ phải không? ".


3
Tôi đã không bỏ phiếu cho bạn, nhưng câu trả lời của bạn gần như khó đọc như câu hỏi và nó thực sự không giải quyết được sự nhầm lẫn về các điều khoản (nếu có bất cứ điều gì, nó làm cho nó tồi tệ hơn). Quan trọng hơn, đơn giản không có sự mơ hồ giữa "front-end v. Back-end" và "client-side v. Server-side"; họ mô tả các mối quan hệ khác nhau và khác biệt. Bạn cũng có thể nói "Tôi thà ngừng lấy màu sắc và hình dạng; mơ hồ rằng mọi thứ có thể là màu xanh lá cây hoặc màu xanh lam và hình tròn hoặc hình vuông và một số thứ có màu xanh lá cây và hình vuông".
itbruce

Doh, tôi không có đủ thời gian để đọc bằng chứng khi tôi phải quay lại làm việc. Dù vậy, rất vui vì nhận xét, nó giúp tôi chỉnh sửa. Mặc dù vậy, tôi vẫn kiên định với những suy nghĩ của mình về thuật ngữ, nhưng sẽ mở rộng theo nó. Ta.
Fergus Tại London

không nhất thiết - Tôi coi ngôn ngữ máy chủ web là một phần của máy khách (xem xét tần suất các máy chủ web bị hack hiện nay nên được coi là bị xâm phạm từ ngày 1) vì vậy cần phải phân biệt các ngôn ngữ phía máy chủ là một phần của bản trình bày tầng từ các ngôn ngữ phía máy chủ cung cấp dịch vụ cấp ứng dụng. Vì vậy, PHP có thể được coi là ngôn ngữ "mặt trước, phía máy chủ".
gbjbaanb
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.