Tôi có nên trộn AngularJS với khung PHP không? [đóng cửa]


161

AngularJS rất mạnh khi nói đến HTML5 tương tác và ràng buộc mô hình. Mặt khác, các khung công tác PHP như Yii cho phép phát triển ứng dụng web nhanh chóng, có cấu trúc tốt, an toàn và mạnh mẽ. Cả hai công nghệ đều cung cấp các phương tiện tinh vi để truy cập dữ liệu, lặp lại và bố trí trang.

Việc kết hợp hai cách tiếp cận đó ("thiết lập trang" phía máy khách và phía máy chủ) là tốt hơn hay trái với ý nghĩa của các ứng dụng web HTML5 AJAX tương tác, liền mạch?

Tôi không nói về việc tạo ra JS bằng PHP ( Xem câu hỏi này ) - Tôi đang nói về việc tạo ra một khung nhìn sẽ sử dụng AngularJS.

Tôi cũng biết rằng một trang AngularJS nên (hoặc có thể) giao tiếp với máy chủ thông qua các dịch vụ REST để lấy dữ liệu ( Xem câu hỏi này ) thay vì lấy trực tiếp từ ví dụ các biến PHP. Nhưng đối với tôi có vẻ thuận tiện hơn khi thiết kế "khung" cho toàn bộ ứng dụng web trong PHP (ví dụ: xây dựng menu chính hoặc xử lý ủy quyền / phiên, v.v.)


28
Câu hỏi tuyệt vời. Tôi ước có một vị trí StackExchange được thiết kế cho loại câu hỏi này. Tôi đã quen với PHP và có một dự án cURL để tự mình thu thập nhiều dữ liệu và tin rằng một khung JavaScript trên thư viện sẽ phù hợp với dự án của tôi. Vấn đề của tôi cũng giống như bạn, tôi muốn biết thế nào là một thực tiễn tốt (thăng trầm) cùng với những phần bạn bỏ từ dự án ban đầu (PHP), v.v. Tôi tin rằng những cuộc trò chuyện này có thể thu hút tranh luận, nhưng làm thế nào chúng ta có thể tham gia hợp nhất tốt nhất của hai ngôn ngữ mà không cần một cuộc trò chuyện.
Shane

Tôi có một số dự án AngularJS mà tôi đang chuyển đổi trở lại PHP / Jquery. Tôi đã có những vấn đề vô tận với việc làm cho góc cạnh hoạt động với nhiều thiết bị di động và trình duyệt. Angular rất khó để SEO và google không phải là bạn của nó. Tôi đã thấy các trang web có thứ hạng hàng đầu biến mất SERPS do chuyển sang góc cạnh ...
HappyCoder 27/03/18

Câu trả lời:


180

Có vẻ như bạn có thể thoải mái hơn với việc phát triển PHP, bạn để điều này ngăn cản bạn sử dụng toàn bộ tiềm năng với các ứng dụng web.

Thực sự có thể có PHP render partials và toàn bộ khung nhìn, nhưng tôi không khuyến khích điều đó.

Để sử dụng đầy đủ các khả năng của HTML và javascript để tạo một ứng dụng web, nghĩa là một trang web hoạt động giống như một ứng dụng và phụ thuộc nhiều vào kết xuất phía máy khách, bạn nên xem xét cho phép khách hàng duy trì mọi trách nhiệm quản lý trạng thái và trình bày. Điều này sẽ dễ bảo trì hơn, và sẽ thân thiện với người dùng hơn.

Tôi sẽ khuyên bạn nên suy nghĩ thoải mái hơn theo cách tiếp cận tập trung API hơn. Thay vì có đầu ra PHP có chế độ xem được kết xuất sẵn và sử dụng góc cạnh cho thao tác DOM đơn thuần, bạn nên xem xét việc có phụ trợ PHP xuất dữ liệu nên được xử lý theo RESTFully và có Angular trình bày nó.

Sử dụng PHP để hiển thị khung nhìn:

/user/account

if($loggedIn)
{
    echo "<p>Logged in as ".$user."</p>";
}
else
{
    echo "Please log in.";
}

Làm thế nào cùng một vấn đề có thể được giải quyết với cách tiếp cận tập trung API bằng cách xuất ra JSON như thế này:

api/auth/

{
  authorized:true,
  user: {
      username: 'Joe', 
      securityToken: 'secret'
  }
}

và trong Angular bạn có thể thực hiện nhận và xử lý phía máy khách phản hồi.

$http.post("http://example.com/api/auth", {})
.success(function(data) {
    $scope.isLoggedIn = data.authorized;
});

Để pha trộn cả phía máy khách và phía máy chủ theo cách bạn đề xuất có thể phù hợp với các dự án nhỏ hơn, trong đó bảo trì không quan trọng và bạn là tác giả duy nhất, nhưng tôi nghiêng về phía trung tâm API hơn vì điều này sẽ phân tách chính xác hơn các ý kiến ​​và sẽ dễ bảo trì hơn


2
Để đơn giản của một ví dụ. Bản thân tôi đã tìm kiếm nhiều hơn chỉ là một đăng nhập cơ bản siêu lừa đảo mọi người làm. Sự khác biệt lớn khi bạn có PHP / HTML và các biến <td> $ name </ td> trên <td> {{name}} </ td> và sau đó 'app.run (function ($ rootScope) {$ rootScope.name = "Ari Lerner";}); ' Bản thân tôi đang cố gắng nhìn thấy / tìm thấy mặt trái của việc cố gắng hoặc cố gắng để PHP tạo ra các trang góc 'NĂNG ĐỘNG'. Và chỉ không nhìn thấy nó. Có một khách hàng chờ để tải từng phần tử riêng lẻ và điền / thay đổi các mẫu. Chỉ cần không quan tâm đến ý tưởng PHP tạo ra một bức tường javascript như thế, và có thể dễ dàng xem được
Shawn Rebelo

2
@ShawnRebelo Bạn có thể nói rõ hơn một chút về ý của bạn a wall of javascriptkhông? Tôi mới tham gia vào thế giới API Angular / JS sau nhiều năm kết xuất PHP, vì vậy cuộc thảo luận này rất thú vị đối với tôi.
Dan Nissenbaum

"Thay vì để PHP xuất ra một khung nhìn được kết xuất sẵn và sử dụng góc cạnh cho thao tác DOM đơn thuần ..." - Hãy để tôi giới thiệu cho bạn một khái niệm mới .
Rage bất đồng chính kiến

Đó chính xác là cách nó phải như vậy, một API yên tĩnh từ phụ trợ có thể là bất kỳ ngôn ngữ nào và một ứng dụng góc cạnh cho giao diện người dùng có thể hoạt động bất kể phụ trợ.
Amir Savand

3
Điều tôi không thể hiểu là tại sao tôi nên tải một trang chung với trình giữ chỗ và sau đó tải một số phần với một hoặc nhiều yêu cầu không đồng bộ để có được thứ gì đó mà tôi đã có trong tải trang đầu tiên như dữ liệu người dùng / xác thực?
Tobia
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.