问题标签 [opalrb]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 从 JavaScript 运行 Ruby 库
我找到了一个用 Ruby 编写的甜蜜库,我想在我的 JS 应用程序中使用它。该库是一个正则表达式 -> NFA 转换库,非常适合我的需求。
有没有办法调用这个 ruby 库并在 JavaScript 中处理输出?
opalrb - 未捕获的 NoMethodError:未定义的方法 `render' for #
我想在 Opal 文件中使用此代码安装我的组件:
Element['#wizard_param_grid_editor'].render do
ZGrid(rows: @work_spaces)
End
我得到了错误
我想在 Opal 文件中使用此代码安装我的组件:
我得到了错误
Uncaught NoMethodError: undefined method render' for #]>
不,您使用并发对,它使用默认线程池的任务,并且您使用Run
方法实例化任务,所以问题不在这里。但是您这里的代码有两个主要威胁:
你真的不应该transBlock
每次都创建。的主要思想TPL Dataflow
是您创建块一次并在之后使用它们。所以你应该重构你的应用程序以减少你正在实例化的块的数量,否则不TPL Dataflow
应该使用这种情况。
您的代码中的另一个威胁是您明确阻止了线程!
从同步事件处理程序的方法调用await
for 任务会async void
阻塞线程,因为默认情况下它会捕获同步上下文。首先,async void
应该避免。其次,如果你是异步的,你应该一直是异步的,所以事件处理程序也应该是异步的。第三,您可以为您的任务使用延续来更新您的 UI 或使用当前同步上下文。
所以,你的代码应该是这样的:
我想在 Opal 文件中使用此代码安装我的组件:
Element['#wizard_param_grid_editor'].render do
ZGrid(rows: @work_spaces)
End
我得到了错误
我想在 Opal 文件中使用此代码安装我的组件:
我得到了错误
Uncaught NoMethodError: undefined method render' for #]>
不,您使用并发对,它使用默认线程池的任务,并且您使用Run
方法实例化任务,所以问题不在这里。但是您这里的代码有两个主要威胁:
你真的不应该transBlock
每次都创建。的主要思想TPL Dataflow
是您创建块一次并在之后使用它们。所以你应该重构你的应用程序以减少你正在实例化的块的数量,否则不TPL Dataflow
应该使用这种情况。
您的代码中的另一个威胁是您明确阻止了线程!
从同步事件处理程序的方法调用await
for 任务会async void
阻塞线程,因为默认情况下它会捕获同步上下文。首先,async void
应该避免。其次,如果你是异步的,你应该一直是异步的,所以事件处理程序也应该是异步的。第三,您可以为您的任务使用延续来更新您的 UI 或使用当前同步上下文。
所以,你的代码应该是这样的:
opalrb - opal react.rb 作为参数传入 proc 以用作回调
我似乎不记得将proc作为react.rb中组件的参数传递,有人可以提醒我吗?
对不起,如果我的问题措辞不好,我有点累了。
jquery - 如何使用 Python 动态修改 CSS?
我正在创建一个基于 Flask 的网络应用程序。我需要动态修改元素的 CSS。
更具体地说,我有一个要从 Python 读取的文件。根据我从文件中读取的内容,我想修改元素的 CSS。只是给你一个想法,
我已经尝试将 Opal 与 Ruby 一起使用,但是我无法设置“opal-jquery”的东西。感谢您对任何一条路径的任何指导。
ruby-on-rails - 如何告诉 Rails 不要预渲染组件?
使用 React.rb 时,如何防止 Rails 预渲染组件?
ruby-on-rails - 如何将基于 JavaScript 或 JSX 的组件导入 React.rb 以便在 ruby 中访问?
使用为 React-Bootstrap 和 react.rb 给出的示例完美地工作,但我试图让一个名为 React-TimeAgo 的 NPN 组件工作,我迷路了。
这就是我所做的:
在 index.js 中(让 Webpack 将其导入到 webpack 包中):
在实际的 component.rb 我有这个:
然后引用 Bootstrap 组件可以完美地工作:
但我无法从 TimeAgo 包装器中得到任何东西:
我究竟做错了什么?所有帮助表示赞赏!
opalrb - 是否可以将 gatsby 静态站点生成器与 reactrb 一起使用?
所以,我基本上对整个 npm/react.js(更不用说 react.rb)生态系统还是很陌生,我想知道是否可以将 reactrb 与 gatsby 静态站点生成器一起使用。
我一直在尝试通过 opal-webpack 获得 opal/reactrb 支持,但遇到了一些问题(有关一些背景故事,请参阅此问题https://github.com/cj/opal-webpack/issues/36)。具体来说,我遇到困难的地方是试图让它与 bundler 一起玩得很好。
将 reactrb 组件与 gatsby 结合起来是否可行?我希望答案是肯定的。
javascript - 在实际服务器上而不是本地测试服务器上加载 Opal Javascript 时,Rails 生成错误
我在 Rails 服务器上使用 Opal 将 Ruby 转换为 Javascript,并且在开发和生产模式下,一切都在我本地机器上的测试服务器上完美运行。但是,当文件上传到实际服务器时,ActionView::Template::Error
会生成一条 with no 消息。它指示的行是加载 Javascript (Opal) 的行,实际上,当删除该行时,错误就会消失(尽管这显然不是解决方案)。服务器上的所有文件都与本地机器上的文件相同,除了bin
文件夹和文件。db
log
tmp
Gemfile.lock
我认为这可能是一个缓存问题,因为最初只有已更改的文件不起作用,但我不能确定,因为现在所有文件都已损坏。
我试过删除tmp
文件夹,使用gem pristine --all
和使用gem update
,但这些都没有帮助。
我一直在寻找解决方案,但没有错误消息,我不知道从哪里开始。
此外,该服务器之前确实可以工作,但最近的更改(将脚本转换为 Opal)破坏了它。
这是错误日志中许多类似的错误消息之一:
我config/production.rb
的如下:
编辑:
我现在可以确认它是 Opal。再次使用 CoffeeScript 可以防止问题发生。
另外,这个问题现在出现在我的本地机器上,我认为这是因为编译文件的缓存是在开发模式下生成的,而这些缓存是在生产模式下使用的。由于我没有在服务器上以开发模式进行测试,所以我没有意识到。
设置config.consider_all_requests_local = true
解决了这个问题,它在被删除后继续工作,但一旦任何相关的 Javascript 资产被修改,它就会停止工作。
也许我错了,但config.assets.compile = true
如果它们没有预编译,不应该让服务器编译资产?
编辑2:
它也适用于预编译资产,但我不明白为什么这对于config.assets.compile = true
选项集是必要的。
ruby - 如何用 Opal 转译 Slim?
Slim是一种模板语言,我想在客户端 Web 应用程序中使用它(它应该能够离线工作)。
我想知道我是否可以使用 Opal 来转换它。如果是这样,那该怎么做?
如果目前不可能,您能否建议对 Slim 进行哪些修改以使其与 Opal 兼容?
javascript - Opal 中带重音的 UTF8 字符串
我正在尝试在 Opal 中使用带有重音符号的 UTF8 字符串。
红宝石代码:
编译后的 JavaScript:
#test 和浏览器控制台显示:
法兰西
如果我手动编辑已编译的 JavaScript,将"Fran\xC3\xA7ais"替换为"Français":
#test 和浏览器控制台显示:
法语
我究竟做错了什么?
有没有办法告诉 Opal 将未触及的 UTF8 字符串传递给 JavaScript?
谢谢