2015-12-30 38 views
38

Tôi muốn nâng cấp ứng dụng Rails và Angular 1.x hiện tại của mình. Tôi đang theo dõi ng-upgrade documentation và thấy rằng có nhiều phụ thuộc bao gồm systemjs, typescript, tsd và một vài thư viện javascript khác. Lý tưởng nhất là sẽ có một viên đá quý góc 2 sẽ có tất cả các phụ thuộc nhưng tôi không thể tìm thấy nó. Tiếp theo, tôi tìm đá quý cho mỗi phụ thuộc nhưng không có một cho tsd.Rails nâng cấp lên góc 2

Có ý nghĩa khi chuyển sang chiến lược xây dựng tùy chỉnh để tôi có thể sử dụng npm để quản lý gói javascript không? Tôi đọc bài viết this đề xuất gulp nhưng tôi thích sự tiện lợi của đường dẫn nội dung.

Có ai có thể chỉ cho tôi các ví dụ về sử dụng thành công ng-nâng cấp với dự án đường ray không? Liệu nó có sử dụng một giải pháp xây dựng tùy chỉnh như gulp hay nó sử dụng đường ống tài sản?

+0

Tại sao không quản lý góc cạnh và phụ thuộc với gulp? https://viget.com/extend/gulp-rails-asset-pipeline – bbozo

Trả lời

-1

sử dụng angularjs đá quý

gem 'angularjs-rails', '~> 1.4', '>= 1.4.8' 

chèn vào application.js

//= require angular 
+0

không có gói 'ngUpgrade' trong đá quý góc. Có một lựa chọn không ổn định nhưng đó chỉ là angular-2 https://github.com/hiravgandhi/angularjs-rails/tree/master/vendor/assets/javascripts – user2954587

-1

Bạn có thể sử dụng http://bower.io/#install-bower và bạn có thể thêm hai tập tin để bạn ứng dụng đường ray .bowerrcbower.json đó là như GemFile

+0

Angular2 không hỗ trợ bower. – thedanotto

+0

@thedanotto: Angular2 hỗ trợ Bower. Xem https://libraries.io/bower/angular2. – Suriyaa

+1

Liên kết của bạn, khi bạn làm theo hướng dẫn, cài đặt AngularJS, không phải Angular2. Có thể cài đặt Angular2 bằng bower bằng lệnh này 'bower install angular2-build' https://groups.google.com/forum/#!topic/angular/vDQBKuf5HKY – thedanotto

10

Đề xuất chính của tôi chưa được nâng cấp lên Angular2, vẫn còn nhiều phát triển và bạn sẽ phải đối mặt với rất nhiều vấn đề như không tìm kiếm đá quý cho đường ray.

Dù sao, hiện nay, angular2 không thể được biên soạn với sprockets (đường ống đường ray mặc định), vì vậy bạn thực sự muốn một giải pháp tùy chỉnh.

Đề xuất chính của tôi là đi kèm với webpack, các tùy chọn khác là browserify hoặc gulp (và các tùy chọn khác), chủ yếu là vấn đề về hương vị. Nhìn chung, cấu hình một đường ống dẫn cho angular2 là phức tạp, bạn phải chăm sóc .d.ts tập tin thông qua typings (đó là phiên bản cập nhật của tsd mà bây giờ bị phản đối), bạn phải transpile nguyên cảo của bạn thông qua tsc và có thể thông qua babel quá nếu bạn muốn sử dụng async/await (điều này thật tuyệt). Bạn sẽ mất khả năng tham chiếu đến tệp của mình trong đường ray như image_path và như vậy, bằng cách sử dụng một đường ống tùy chỉnh, vì vậy bạn cũng muốn tính đến các tệp đó.

Loại bản ghi phức tạp hơn nhiều so với tệp coffeescript đơn giản, bạn phụ thuộc vào mọi tệp khác mà nó tham chiếu, vì nó cần biên dịch kiểm tra, không mong đợi điều gì đơn giản. Điều đó đang được nói, nếu bạn thực sự muốn làm việc với Rails và Angular (2 hoặc không), đúng cách để xử lý nó là có hai dự án riêng biệt, một chỉ với ứng dụng Rails và một với AngularJS con đường. Bằng cách này, bạn có mối quan tâm riêng biệt, bạn có thể có một đường dẫn tùy chỉnh cho Angular2 mà không ảnh hưởng đến Rails và bạn sẽ buộc phải mã hóa chính xác ứng dụng Angular2 của mình bằng cách sử dụng Rails làm JSON API, như bạn cần.

0

Giải pháp của tôi là giữ cho nó đơn giản nhất có thể mà không cần sử dụng webpack hoặc đường dẫn nội dung. Tôi đặt các tệp ts vào public và các đường ray được định cấu hình để phân phát nội dung npm thông qua đường ống.

tôi đưa ra một dự án khởi động với cấu trúc này là một ví dụ: https://github.com/jonnysamps/rails-ng2-starter

Trong nhiều cách nó có những lợi ích của việc có các dự án phụ trợ/frontend riêng biệt nhưng giữ tất cả các mã với nhau.

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