有opal-irb,但是opal-jquery有vienna没有办法通过 Opal 直接在浏览器中使用 gems?
1411 次
2 回答
7
您可以通过使用将 gem 的lib路径添加到 Opal 加载路径Opal.use_gem
常见的陷阱有:
- 使用字符串可变性
- 依赖String和Symbol的区别
- 炮击 (
``和%x{})
修复/解决其中一些问题的可用工具是:
- 存根文件
Opal::Processor.stub_file('fileutils') - 在编译时使用隐藏代码分支
RUBY_ENGINE,例如:unless RUBY_ENGINE == 'opal' unparsable/breaking code here end
您可以查看opal-rspec源代码以查看这些内容:
于 2014-07-05T15:35:57.593 回答
3
像往常一样,答案是肯定的,也不是,这取决于你的观点。Opal 会将您的 ruby(全部)转换为 JavaScript,并提供适当的运行时间。如果您需要 gem,则在编译过程中将需要它,并将包含在生成的 JavaScript 中。您可以在您的 ruby 代码中自由使用生成的 ruby 类(最终再次编译成 JavaScript)。
因此,您可以require gems,但请记住,它们的 requires 也将是必需的,因此如果您不小心,最终会遇到 JavaScript 文件的噩梦。从技术上讲,您仍然没有在浏览器中运行 ruby,为此必须将其全部编译为 JavaScript。但是,您可以运行从您的 ruby 和所需的 gem 生成的代码,尽管在此过程中它会变成 JavaScript(并且您将不得不对其进行调试)。虽然这种方法有一些限制,但您必须记住 JavaScriptNumber和String属性(也就是不可变String的),但在这些限制内,您可以在服务器和客户端之间共享您的代码。
于 2014-07-04T12:51:11.313 回答