2013-08-10 30 views
10

Tôi muốn dùng thử Angularjs. Tuy nhiên, tôi đã gặp rắc rối khi quyết định nơi tôi nên đặt ứng dụng góc cạnh của mình.Tách các ứng dụng Angularjs và Rails thành các thành phần độc lập

Tôi đang sử dụng khung Rails cho chương trình phụ trợ. Tôi đã thấy hướng dẫn nơi toàn bộ ứng dụng góc sống dưới thư mục asset/javascript.

Tôi đã tự hỏi nếu thay vì sống trong thư mục tài sản/javascript, tôi có thể làm cho nó sống bên ngoài thư mục đường ray hoàn toàn của tôi. Bằng cách đó, tôi hoàn toàn có thể tách rời hoàn toàn phần phụ trợ và giao diện người dùng của mình. (Điều này có được khuyến cáo không?).

Tôi tin rằng đường ống nội dung cũng biên dịch trước rất nhiều nội dung. Nếu tôi tách biệt tài sản góc cạnh, tôi có cần phải biên dịch trước tài sản bằng cách nào đó không?

Cảm ơn

Trả lời

5

Bạn có thể sử dụng một grunt dựa workflow:

Nếu bạn bắt đầu với một lối vào tách, sử dụng chế nhạo lúc đầu, do đó bạn có thể ở lại bên trong góc cạnh và không bị mất chuyển đổi tiêu điểm giữa phụ trợ và giao diện người dùng. Một lợi thế của việc xây dựng một ứng dụng trang đơn là bạn có thể phát triển nó độc lập với api phụ trợ. Xem (http://docs.angularjs.org/api/ngMockE2E. $ HttpBackend) để biết thông tin về cách trả lời http nhạo báng.

+0

ah, có vẻ thú vị.Vì vậy, từ những gì tôi hiểu, nếu tôi thêm angularjs vào ứng dụng tài sản/javascript, tôi sẽ không cần phải biên dịch trước ứng dụng angularjs. Nếu tôi sử dụng công việc grunt, tôi sẽ phải biên dịch lại các angularjs trước khi triển khai; điều đó có đúng không? – Karan

+0

oh, và một khi tôi xây dựng các ứng dụng bằng cách sử dụng grunt, nên điều này được đặt dưới railsapp/thư mục công cộng? – Karan

4

Tôi đã làm việc thông qua một bộ câu hỏi tương tự. Có một số công cụ tốt cho phép bạn tích hợp AngularJS trực tiếp vào đường dẫn tài sản đường ray của bạn, và chúng cho tôi nhìn tốt nếu bạn muốn chỉ một chút về Góc.

Tuy nhiên, nếu bạn muốn có một frontular end đầy đủ, hay còn gọi là một ứng dụng web đơn, tôi nghĩ cuối cùng bạn sẽ bị giới hạn bởi tính tương thích và một số công cụ. Tôi cảm thấy như đá quý Rails sẽ không hoàn toàn theo kịp với Angular, và vì vậy bạn sẽ được vào xung đột phiên bản. Tôi cũng đã thấy ngày càng nhiều công cụ cho Angular như là một độc lập, và tôi rất giống với mẫu dự án ng-boilerplate. Tôi cũng thích nhiều công cụ thử nghiệm như nghiệp chướng, và tôi đã không thực sự sắp xếp một cách để tích hợp nghiệp với đường ray.

Vì lý do đó, cuối cùng tôi đã quyết định rằng tôi sẽ giữ riêng hai điều này. Ban đầu, tôi đã làm điều đó thông qua việc tạo ra một ứng dụng đường ray và một ứng dụng góc riêng biệt (các thư mục riêng biệt). Tôi đã sử dụng ng-boilerplate làm khuôn khổ cho góc kết thúc. Tôi đã viết một tutorial on that. Điều này cuối cùng có một chút bực bội, và tôi đã viết some more thoughts on it, khó chịu chính là tôi đã có hai kho git và nó đã gây phiền nhiễu để giữ chúng trong đồng bộ. Nó cũng là loại gây phiền nhiễu làm việc với một IDE trên hai thư mục. Tôi đã kết thúc chuyển sang đường ray và góc cạnh trong cùng một thư mục, và họ dường như chơi tốt đẹp, vì mỗi sử dụng các thư mục khác nhau trong dự án đó.

Trong cấu trúc hiện tại này, tôi đang sử dụng thiết lập grunt đi kèm với ng-boilerplate để rút gọn tất cả mã, đóng gói và chạy thử nghiệm đơn vị nghiệp. Tôi chưa đóng đinh thử nghiệm đầu cuối, nhưng nó nằm trong danh sách của tôi. Tôi đã tìm thấy đây là một môi trường làm việc tương đối hiệu quả. Cấu trúc được lựa chọn của tôi cho các trang, bộ điều khiển và các trường hợp kiểm tra nghiệp của tôi có một số mã lặp lại (tôi chọn không phải là yếu tố để duy trì khả năng đọc). Tôi đang lập kế hoạch để mở rộng các máy phát điện giàn giáo đường ray để tạo ra các khuôn khổ javascript cho tôi - vì vậy khi tôi tạo ra một người giàn giáo giàn giáo, nó cũng sẽ tạo ra một người angularjs giàn giáo cho tôi. Tôi sẽ cập nhật ở đây nếu và khi tôi làm việc đó.

EDIT: Tôi đã hoàn thành công việc giàn giáo là tốt, cho phép đường ray để tự động tạo ra các yếu tố angularJS khi bạn tạo ra các đường ray mô hình/điều khiển, vv Các bài viết trên blog là ở đây: http://technpol.wordpress.com/2013/09/24/rails-generator-to-generate-angular-views/

1

Chúng tôi đã được sử dụng AngularJS với ứng dụng Rails của chúng tôi, theo cách mà chúng tôi đã sử dụng các mẫu Rails ERB, nhưng chuyển sang sử dụng lệnh ng và khi được yêu cầu.

Đối với thiết lập ở trên, chúng tôi đã sử dụng bower/bower-rails đá quý, cho phép chúng tôi sử dụng bower để quản lý các gói góc và phụ thuộc của chúng. Chúng tôi cam kết này vào repo của chúng tôi, trong thư mục javascripts, và được chăm sóc bởi đường ống tài sản Rails.

Thiết lập này đã hoạt động tốt cho chúng tôi khi chúng tôi xem xét việc phân chia các quan điểm của chúng tôi giữa các mẫu ERB và Angularjs trên 50-50%.

Thông tin thêm về thiết lập này trong các liên kết dưới đây:

0

Có rất nhiều lợi thế tách ra dịch vụ api của bạn (đường ray trong trường hợp này) và các thành phần giao diện người dùng của bạn. Như chúng tôi làm cho ứng dụng ios/android, khách hàng góc có thể tự mình sống như một thực thể riêng biệt. Nó sẽ là một trang web tĩnh có thể được triển khai trên s3 hoặc bất kỳ máy chủ lưu trữ trang web tĩnh nào. Nó chỉ cần giao tiếp với dịch vụ api của bạn. Bạn có thể thiết lập CORS để làm cho nó có thể.

Một số ưu điểm của công việc này

  • Bạn có thể sử dụng rails-api, mà là một tập hợp con của ứng dụng đường ray. Nếu bạn chỉ muốn sử dụng đường ray để xây dựng apis, nó không có ý nghĩa để có tất cả các chức năng mà một ứng dụng đường ray hoàn chỉnh cung cấp. Nó nhẹ hơn, nhanh hơn và nghiêng về phía xây dựng vòm đầu tiên của API hơn là vòm MVC.
  • Bạn có thể sử dụng yeoman angular-generator để tạo ứng dụng góc cạnh và tận dụng tối đa & bower để quản lý bản dựng (concat, uglify, cdnify v.v.) và phụ thuộc (mô-đun góc).
  • Triển khai sẽ trở nên linh hoạt. Bạn sẽ không cần phải phụ thuộc vào một để đẩy khác.
  • Nếu bạn có kế hoạch thay đổi ngăn xếp phụ trợ của mình (ví dụ như đường ray để phát/phát), bạn sẽ không cần phải lo lắng về các thành phần ứng dụng khách của mình.
  • Bằng cách tách sự phát triển của giao diện người dùng và phần phụ trợ của Rails, bạn có thể phân phối tác phẩm qua hai nhóm phát triển và giữ cho ứng dụng trở nên rất mở rộng.

Ngoài ra còn có một nhược điểm của phương pháp này. Bằng cách có ứng dụng trong hai kho lưu trữ riêng biệt, bạn không thể dễ dàng có kiểm tra tích hợp đầy đủ. Vì vậy, bạn sẽ phải kiểm tra các ứng dụng một cách riêng biệt. Bạn có thể thử apis của bạn để kiểm tra ứng dụng góc cạnh.

Chúng tôi đã sử dụng phương pháp này và đề xuất những người khác giống nhau. Ít phụ thuộc & năng suất cao hơn.

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