Hướng dẫn kiến ​​trúc cho một trang web ứng dụng web đơn


12

Tôi sẽ bắt đầu một dự án phụ để xây dựng một ứng dụng web "một trang". Ứng dụng cần phải theo thời gian thực, gửi thông tin cập nhật cho khách hàng khi có thay đổi.

Có tài nguyên tốt nào cho các cách tiếp cận thực tiễn tốt nhất để tạo kiến ​​trúc cho các loại ứng dụng này không. Tài nguyên tốt nhất tôi tìm thấy cho đến nay là bài viết về kiến ​​trúc trello tại đây: http://blog.fogcalet.com/the-trello-tech-stack/

Đối với tôi, kiến ​​trúc này, mặc dù rất gợi cảm, có lẽ được thiết kế quá mức cho các nhu cầu cụ thể của tôi - mặc dù tôi có những yêu cầu tương tự. Tôi tự hỏi nếu tôi cần phải bận tâm với một sub / pub ở phía máy chủ, tôi có thể không chỉ đẩy các bản cập nhật từ máy chủ khi có điều gì đó xảy ra không (ví dụ khi máy khách gửi bản cập nhật đến máy chủ, hãy viết bản cập nhật cho db, và sau đó gửi một bản cập nhật cho khách hàng).

Thông minh về công nghệ, có lẽ tôi đang tìm cách xây dựng điều này trong Node.JS hoặc có thể là Ruby, mặc dù các hướng dẫn kiến ​​trúc nên áp dụng ở một mức độ nào đó cho bất kỳ công nghệ máy chủ cơ bản nào.

Câu trả lời:


5

Tôi chắc chắn sẽ hướng tới MVC phía máy khách cho điều này, chẳng hạn như Backbone.js. Nó rất nhẹ nhưng sẽ cung cấp cho ứng dụng của bạn một số cấu trúc rất cần thiết. Tôi đặc biệt khuyên dùng screencast Peepcode là cách nhanh nhất để tìm hiểu thêm về Backbone.

Một lợi ích kiến ​​trúc tuyệt vời của MVC phía máy khách như thế này là bạn có thể dễ dàng chuyển sang trao đổi dữ liệu với phía máy chủ của mình, ví dụ JSON có cấu trúc qua REST.

Backbone.js hỗ trợ điều này ngay lập tức - bạn có thể tuần tự hóa các mô hình của mình giữa máy khách và máy chủ dưới dạng JSON, điều này có thể giải phóng chúng ta khỏi suy nghĩ về yêu cầu / phản hồi.

Một cái gì đó giống như Node.js ở phía máy chủ sẽ kháng cáo theo mô hình này, nơi bạn có thể sẽ có rất nhiều yêu cầu không đồng bộ có khả năng tồn tại ngắn để đẩy và kéo dữ liệu.

Một thay thế .... Một mô hình như Comet có thể là một cách đơn giản để đạt được web pub / sub và có một số khung công tác phía máy chủ hỗ trợ điều này.


Chúc mừng, tôi đã chắc chắn nghĩ đến việc sử dụng MV * FW cho phía khách hàng và đã tìm hiểu về Backbone .. Mẹo hay.
Matt Roberts

1

Tôi có thể sẽ đi với một khung javascript MV * cho giao diện người dùng. Bản thân tôi đang xây dựng một ứng dụng web duy nhất và sau khi điều tra một số giải pháp, cuối cùng tôi đã sử dụng Backbone.js. Tôi đã tìm thấy trong khi giải pháp này không cung cấp hầu hết các chức năng của hộp, nó đã cung cấp cho tôi nền tảng cốt lõi để bắt đầu và linh hoạt hơn rất nhiều so với các giải pháp khác mà tôi đã xem xét (điều quan trọng đối với tôi).

Các giải pháp phổ biến khác là Ember.js và Knockout.js cung cấp nhiều hơn chức năng của hộp, tuy nhiên bạn phải tuân theo các quy ước của chúng để sử dụng chức năng thT (có thể không phù hợp với bạn).


1

Đây là một IMO không có trí tuệ. AngularJS cho mặt trước vì nó tuyệt vời. NodeJS / express / SocketIO cho một phụ trợ năng động và gợi cảm với sự tốt bụng của quán rượu / phụ và tối thiểu sự ồn ào. Và như một phần thưởng, bạn có thể sử dụng một ngôn ngữ cho mặt trước và mặt sau!

Kiểm tra việc triển khai cùng https://github.com/hackify/hackify-server của tôi để biết ví dụ

Một cảnh báo, một số người đang đề xuất một giải pháp thay thế NodeJS cho socketio được gọi là sockjs nhưng tôi đã không kiểm tra điều này vì vậy tôi không thể khuyên bạn nên dùng nó


0

Âm thanh giống như những gì bạn đang xem là Apache 2.2 với máy chủ ứng dụng PHP hoặc Tomcat với một servlet đơn giản xử lý các yêu cầu. Nó tương đương với thợ mộc của búa và đinh. Không có gì phức tạp nhưng nó hoàn thành công việc. Nếu bạn cần mở rộng chức năng, bạn luôn có thể làm như vậy vì Tomcat có thể hỗ trợ jsp và jsf nếu bạn cần.

Đối với những gì liên quan đến giao diện người dùng, tôi cảm thấy thoải mái khi sử dụng jQuery ( $ .post , $ .load , $ .ajax ) vì nó khá tiện lợi khi nhân đôi như một phương tiện để thêm chức năng vào trang của bạn kết hợp với UI UI


0

Nếu bạn muốn cập nhật ứng dụng khách theo thời gian thực, thì bạn sẽ phải thực hiện các cuộc gọi "AJAX" bị chặn lâu hoặc tốt nhất là sử dụng các websockets hiện đại. Điều này cho phép bạn đẩy các bản cập nhật đến một máy khách được kết nối sẽ được xử lý bằng một chút javascript.

Tôi hiểu rằng hiện đại (hoặc mốt mới nhất) hiện tại là AngularJS của Google. Nó được thiết kế một phần để làm cho việc viết SPA dễ dàng hơn.


0

Nếu bạn muốn một cái gì đó gần với ngăn xếp trung bình (node.js, mongo ...) để xây dựng một ứng dụng trang duy nhất cần phản ứng, tôi sẽ chọn sao băng . Đặc biệt nếu bạn đang xây dựng một nguyên mẫu và bắt đầu từ đầu.

Rails với một frontend góc cạnh sẽ là một lựa chọn ok, nhưng bạn sẽ khó khăn hơn trong việc "gửi cập nhật cho khách hàng khi có thay đổi", vì bạn sẽ cần cài đặt các loại đá quý cụ thể, kết hợp một số thư viện bỏ phiếu dài hoặc sockjs .. .

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.