2013-08-15 15 views
5

Tôi đã bị hấp dẫn bởi sức mạnh và sự thanh lịch mà Opal cung cấp theo cách sử dụng Ruby thuần túy và CoffeeScript hoặc, tất nhiên, JS.OpalRb với MeteorJS?

Làm thế nào người ta có thể sử dụng Opal cho Meteor làm ngôn ngữ chính để phát triển?

CẬP NHẬT: chỉ muốn chia sẻ rằng chúng tôi đã chuyển trọng tâm sang Volt cho nhu cầu thời gian thực trong môi trường đẳng cấu cung cấp Ruby từ dưới lên trên. Đó là một trải nghiệm tuyệt vời và thậm chí là Matz has tweeted about it một vài lần ngay bây giờ.

+0

Coffeescript dường như làm nhiều việc giống như OpalRb. Nó cũng sẽ dễ bị lỗi hơn Javascript và có hỗ trợ Meteor. Tại sao mọi thứ lại khó khăn? –

+5

Bởi vì tôi tin rằng nó làm cho mọi thứ dễ dàng hơn và dễ bảo trì hơn, đặc biệt là về lâu dài. Đã làm việc với CoffeeScript, tôi phải nói rằng Ruby vượt trội hơn CoffeeScript và ít bị lỗi hơn cả CS trong kinh nghiệm của tôi. Nó có vẻ như một nỗ lực rất đáng giá và sẽ đáng để khám phá. – ylluminate

+1

có lẽ bạn sẽ nhận được hỗ trợ trong trình bao Meteor rồi, và cuối cùng có thể gửi yêu cầu kéo. Bạn có thể làm theo mô hình về cách trình biên dịch coffeescript được thiết lập. –

Trả lời

2

Tôi vừa phát hành một số initial version.

Điều này sẽ biên dịch các tệp Ruby thành Javascript, nhưng không có gì cụ thể về thiên thạch (chưa).

tôi có kế hoạch porting Meteor đến một lớp học của Ruby tại một số điểm, tiếp tục theo dõi hay thậm chí là gửi yêu cầu kéo tốt hơn ...

+0

Tin tuyệt vời, tuyệt vời! Nó sẽ thực sự tuyệt vời để có thể có một thiên thạch ruby'fied đầy đủ tương tự trong mạnh mẽ để jquery (https://github.com/opal/opal-jquery) hoặc thực hiện thêm. – ylluminate

+0

Gói này không còn khả dụng sau khi Meteor 0.9 được phát hành với hệ thống gói chính thức của họ. Bất kỳ cơ hội cập nhật nào Marc-André? –

2

Có, hãy xem cách gói coffeescript được triển khai trong Meteor để biên dịch .coffee thành .js. Cụ thể, sau

Nếu mọi thứ được thiết kế siêu tốt, có thể bạn không cần phải chạm vào trình bao để tạo gói thông minh sẽ xây dựng các tệp OpalRb. Tuy nhiên, tôi đoán rằng bạn có thể sẽ phải tắt một yêu cầu kéo hoặc hai đến cốt lõi trong khu vực bundler để làm cho nó chơi tốt với gói của bạn. Ngay bây giờ, bộ xử lý trước xử lý tất cả các tệp riêng lẻ, điều này có thể không thực hiện được với ngôn ngữ của bạn (tôi không chắc chắn). Tuy nhiên, trong quá trình này, bạn sẽ góp phần hỗ trợ Meteor về các phương ngữ và trình biên dịch JS khác tốt hơn!

Tôi sẽ nhắc lại quan điểm của mình rằng Coffeescript có vẻ lý tưởng nếu bạn muốn một số ngôn ngữ cấp cao để viết JS, đặc biệt vì nó hỗ trợ bản đồ nguồn trong trình duyệt để gỡ lỗi ngay bây giờ.

2

lẽ muộn một chút trên thuyền: Tôi đã viết một plugin xây dựng cho Opal trong Meteor.
Bạn có thể tìm thấy nó trên bầu khí quyển https://atmospherejs.com/massimoronca/opal https://atmospherejs.com/mikamai/opal

Bạn có thể cài đặt plugin sử dụng

meteor add massimoronca:opal
meteor add mikamai:opal

Mỗi tập tin kết thúc bằng .rb hoặc .js.rb sẽ tự động biên dịch.

Bạn sẽ phải quấn Đối tượng Meteor được xây dựng trong, cho đến khi tôi sẽ phát hành một gói mà điều đó, bạn có thể tìm thấy một ví dụ nhỏ về cách làm điều đó trong ý chính này https://gist.github.com/wstucco/42392ee21b76dfa3ef83

Ví dụ Meteor Object toàn cầu có thể được bọc trong Opal như thế này

class Meteor 
    def self.server? 
    `Meteor.isServer` 
    end 

    def self.client? 
    `Meteor.isClient` 
    end 

    def self.cordova? 
    `Meteor.isCordova` 
    end 

    def self.startup(&block) 
    `#{block.call if block_given?}` 
    end 
end 

và sử dụng theo cách này

puts "Hello from server" if Meteor.server? 

EDIT: chuyển plugin dưới Mikamai tài khoản