2011-10-27 26 views
25

Câu hỏiSử dụng RequireJS với Rails 3.1 ứng dụng

Nếu bạn đã sử dụng RequireJS với (đặc biệt 3.1) ứng dụng Rails 3, làm thế nào là phù hợp với bạn? Bất kỳ thủ thuật cấu hình hoặc gotchas khác mà tôi cần phải xem ra cho?

nền

Tôi đang dự tính sử dụng RequireJS qua Bánh răng dựa trên tài sản đường ống trong Rails 3.1, đặc biệt cho mã JavaScript. Tôi có hai động lực cho lựa chọn này:

  • Tôi muốn tận dụng quản lý mô-đun RequireJS 'cho mã phía máy khách JS của tôi.
  • Tôi muốn có một hệ thống biên dịch trước có thể theo mã thư viện JS của tôi trong các ngữ cảnh khác. Trước sự ngạc nhiên của tôi, trình biên dịch trước của Asset Pipeline là một phần của Rails, không phải là một phần của Sprockets.

Tất cả phản hồi được đánh giá cao, cảm ơn!

+1

Bạn có thể nói rõ hơn về lý do tại sao bạn sẽ muốn 'quản lý mô-đun trên Bánh răng RequireJS một? Tôi đang nghĩ về việc làm tương tự cho ứng dụng Rails của chúng ta - thay thế Sprockets bằng RequireJS. – kangax

+4

@kangax, Sprockets không thực sự cung cấp quản lý mô-đun. Nó chỉ tập hợp một loạt các JavaScript vào một tập tin được xây dựng thông qua các chỉ thị của Sprockets. Khi điều đó xảy ra, tôi đã xuất bản gem [requirejs-rails] (https://github.com/jwhitley/requirejs-rails/) để tích hợp RequireJS vào Rails, tận dụng Sprockets cho các chuyển đổi CoffeeScript. Gần phát hành 0.5.0 với sự hỗ trợ hoàn hảo. –

Trả lời

48

Đối với hậu thế, đây là nơi tôi đã đến về câu hỏi này:

  • RequireJS cung cấp một thực hiện các Asynchronous Module Definition API. RequireJS 'Why AMD? page đưa ra trường hợp là lý do tại sao bạn muốn sử dụng điều này.

  • Sprockets và Rails 3 Asset Pipeline cho phép cấu trúc đơn giản mã JavaScript/CoffeeScript, nhưng không cung cấp bất kỳ hỗ trợ mô-đun đúng nào. Ví dụ, không có kiểm soát không gian tên nào trong Sprockets.

  • jQuery (dưới 1.7), Dấu gạch dưới, Dojo và nhiều thư viện chính khác đã triển khai hỗ trợ AMD. Một số thư viện JS lớn khác dường như có sự hỗ trợ của AMD về tầm nhìn ngắn hạn (ví dụ Backbone.js).

Chắc chắn có thể tạo ứng dụng Rails tích hợp RequireJS. Để đơn giản hóa quá trình đó, tôi đã tạo ra requirejs-rails gem on github, với cấu hình đơn giản và khả năng biên dịch trước đường dẫn của Asset Pipeline cho mã dựa trên AMD qua r.js. Phiên bản hiện tại có sẵn qua:

gem install requirejs-rails

+1

Cũng cho hậu thế, Underscore không còn hỗ trợ AMD. Tuy nhiên, Lodash, một thay thế thả cho Underscore, không. http://lodash.com – leppert

+2

Cảm ơn vì đá quý này. Có mã Rails ứng dụng tôi có thể thấy rằng cho thấy làm thế nào nó được thiết lập, tốt nhất với Backbone. Tôi đã đọc các tài liệu, nhưng tôi mới đến require.js và không phải là kinh nghiệm/có tay nghề cao với javascript, vì vậy tôi nhận được cùng tốt hơn nhiều với một ví dụ làm việc. – Leahcim

+0

Đây là một ví dụ Rails 4 ứng dụng tích hợp requirejs-rails: https: // github.com/pboling/require-rails-example – rubiii

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