2014-07-15 13 views
11

Chúng tôi có một ruby ​​trên trang web đường ray trong đó sử dụng rất nhiều đường sắt được xây dựng trong ajax từ xa với các mẫu js. Chúng tôi có các yêu cầu mới đang đưa chúng tôi theo hướng của một ứng dụng trang duy nhất trong đó toàn bộ các khối và cột của trang sẽ dựa trên ajax.Khi nào sử dụng khung công tác js?

Chúng ta có nên tiếp tục sử dụng cơ sở hạ tầng ajax hay bắt đầu kết hợp khung công tác js như angularjs không? Nói cách khác, các tiêu chí đánh giá nguyên tắc để xác định nhu cầu về khuôn khổ js là gì?

Trả lời

4

Cá nhân, tôi nghĩ rằng một lần bạn có phản hồi ajax cần phải cập nhật nhiều vùng không liền kề của trang, đó là thời điểm để giới thiệu một khung công tác JS. Máy chủ tạo javascript (giống như những gì người trợ giúp cho bạn) thuận tiện cho những thứ rất đơn giản, nhưng một khi mọi thứ trở nên phức tạp hơn, bạn sẽ tốt hơn khi chỉ trả về dữ liệu JSON từ đường ray và có con số kết thúc từ các phần của trang sẽ được cập nhật.

Chẳng có lý do gì để bạn phải là người này hay người kia. Bạn có thể tiếp tục sử dụng các trình trợ giúp JS của Rails cho những thứ đơn giản, nhưng trên các trang có ý nghĩa, hãy mang đến một cái gì đó như KnockoutJS, Backbone hoặc Angular. Tôi đã giới thiệu KnockoutJS theo cách này cho một ứng dụng hiện có và nó hoạt động khá tốt. Nó đã giúp nó không phụ thuộc vào một phiên bản cụ thể của jQuery và cũng hỗ trợ các trình duyệt cũ hơn.

Một điều bạn cần quyết định là có thêm khung công tác JS qua rubygem hay chỉ tải xuống và thêm nó vào đường dẫn nội dung của bạn. Cách đầu tiên có thể đơn giản hơn, nhưng nó cũng sẽ buộc bạn vào phiên bản đi kèm với đá quý, điều này có thể để lại cho bạn một vài phiên bản phía sau tại một số điểm. Nếu tôi bắt đầu một ứng dụng mới, tôi có thể không sử dụng bất kỳ trình trợ giúp javascript nào của đường ray và có thể thậm chí không phải là đường dẫn nội dung và sử dụng các công cụ khác như grunt để làm điều đó thay thế. Nó gần như là một 'tách mối quan tâm' với nhiều công việc lên phía trước, so với sự cân bằng 'pin bao gồm'.

+0

Cập nhật nhiều khu vực không liền kề có vẻ giống như một tiêu chí chính. Cũng tự hỏi nếu nó có ý nghĩa để sử dụng Rails cho các mẫu js nặng mà Rails đang phục vụ cho các khu vực rộng lớn như một bảng điều khiển. Nếu khuôn khổ js được kết hợp với bữa ăn mảnh, API phụ trợ có thể hơi phức tạp không? – Phil

+1

Thật thú vị khi không ai đề cập đến "EmberJS' ... – Askar

1

Một khung javascript như Angular là một ý tưởng hay khi bạn có thể sử dụng API JSON phụ trợ hơn cho nguồn dữ liệu của bạn, giữ cho mã đường ray nhẹ hơn. Nếu bạn phải làm nhiều việc liên lạc qua lại với AJAX, Angular hoặc thậm chí Backbone có thể làm cho việc dọn dẹp này trở nên khá hơn một chút. Nó thực sự đi xuống đến loại ứng dụng bạn đang xây dựng, cách bạn nghĩ rằng giao diện người dùng nên được cấu trúc và nếu một khung công tác có thể trợ giúp về điều đó.

Vì bạn đã có mã của mình ở điều khiển từ xa đúng với js.erb đang diễn ra, bạn có thể kết hợp với điều đó. Tôi sẽ chỉ thực sự chuyển đổi vào thời điểm này nếu nó trở thành một nỗi đau lớn. Khi việc thay đổi khung công tác/kiến ​​trúc trong một ứng dụng hiện có có thể là một chút công bằng. Đặc biệt là nếu bạn mới đến góc cạnh.

Gần đây tôi đã làm việc trên một dự án tại nơi làm việc sẽ có nhiều khách hàng hơn. Tôi đã kết thúc bằng cách sử dụng handlebars cho một số mẫu rendering, và sau đó chỉ là một vài đối tượng singleton. Lý do cho điều này mặc dù là bởi vì chúng tôi không kiên trì rất nhiều dữ liệu. Chỉ cần một vài trường vào một cookie được thực hiện với một yêu cầu ajax, và sau đó là một điểm kết thúc JSON duy nhất cho dữ liệu giao diện người dùng & những người dùng đó sử dụng.

+0

Vì vậy, một tiêu chí khác là nếu có nhiều dữ liệu và tương tác nhập dữ liệu chính sử dụng biểu mẫu html thì khung công tác js sẽ là cách tốt nhất để đi? – Phil

0

Nếu bạn đi một trang Rails vẫn tuyệt vời như giải pháp api phụ trợ json. node.js sẽ khá nhanh hơn khi bạn thực hiện các kiểm tra so sánh, nhưng nó có trao đổi niềm vui phát triển như Ruby vs JavaScript, vv .. Nếu bạn cần thêm hai lần nữa để viết lại/phát triển nó trong mã js, điều đó có tính không. ..?

Nếu dự án không phải là loại không phải là "điều FB hoặc Youtube" tôi thành thật nghĩ rằng Rails đã trở thành khung thời gian dài sẵn sàng cho doanh nghiệp. Đó là câu chuyện kết thúc mới hơn nhưng hy vọng bạn có quan điểm của tôi. Chúc mừng

0

Tôi sẽ sử dụng:

  1. Rails API với rabl đá quý hoặc tương đương.
  2. AngularJS.

Bạn sẽ đầu tư thời gian xây dựng API nhưng, phần đầu xe sẽ dễ dàng hơn với một khuôn khổ như kiễu góc (tôi đã nói, cho các loại hình ứng dụng, các ứng dụng trang duy nhất)

Các vấn đề liên quan