我可以在蛋白石中使用Rubygem吗?

opal-irbopal-jqueryvienna但有没有办法通过Opal直接在浏览器中使用gems?

您可以使用Opal.use_gem将gem的lib路径添加到Opal加载路径

常见的陷阱是:

  • 使用String可变性
  • 依赖于String和Symbol之间的区别
  • 炮轰( ``%x{}

修复/解决其中一些问题的可用工具包括:

  • 存根文件Opal::Processor.stub_file('fileutils')
  • 使用RUBY_ENGINE在编译时隐藏代码分支,例如: unless RUBY_ENGINE == 'opal' unparsable/breaking code here end

您可以查看opal-rspec源代码以查看这些内容:

https://github.com/opal/opal-rspec

像往常一样,答案是肯定的,而不是在同一时间,这取决于你的观点。 Opal会将您的ruby( 全部 )转换为JavaScript并提供适当的运行时间。 如果您需要gem,则在编译过程中将需要它,并将包含在生成的JavaScript中。 您可以在ruby代码中自由使用生成的ruby类(它最终会被编译成JavaScript)。

所以你可以要求gem,但请记住,他们的要求也是必需的,所以如果你不小心,最终会得到一个JavaScript文件的噩梦从技术上讲,仍然没有在浏览器中运行ruby,为了这个目的,它们都必须编译为JavaScript。 但是,您可以运行从ruby生成的代码和所需的gem,尽管在此过程中它将成为JavaScript(您将不得不调试它)。 但是这种方法有一些限制,你必须记住JavaScript NumberString属性(也就是只有不可变的String ),但在这些限制内,你可以在服务器和客户端之间共享你的代码。