在 Rails 应用程序中,therubyracer 或 libv8 有啥用?

Posted

技术标签:

【中文标题】在 Rails 应用程序中,therubyracer 或 libv8 有啥用?【英文标题】:What is therubyracer or libv8 for in a rails application?在 Rails 应用程序中,therubyracer 或 libv8 有什么用? 【发布时间】:2015-03-12 02:51:56 【问题描述】:

我正在做一个项目,并且经常遇到 therubyracer 和 libv8 的问题,所以我决定删除它们。似乎唯一将它们用作依赖项的是 less-rails ,无论如何我都想删除它。

我的主要问题是它们的用途是什么,我在普通应用程序中是否需要它们?如果需要,为什么?

【问题讨论】:

它们通常用于默认未安装 javascript 运行时的平台上的资产管道。因此,如果您不在目标系统上编译资产,或者系统在路径中有 JavaScript 运行时,则不需要它们。 那么一个没有连接到互联网的 CentOS 服务器会不会有这个? 如果服务器已经安装了 JavaScript 运行时,例如 node.js,则不需要它。我不知道 centos 是否带有 JavaScript 运行时,如果您不在 te box 上编译资产,则不需要它。 Less.rb 依赖于 commonjs,它似乎只使用 therubyracer 或 therubyrhino 在这里查看答案以获取更多信息。 ***.com/questions/18687575/… 【参考方案1】:

Rails 应用程序可能会使用 Javascript 运行时来完成一些事情:

1) Rails 资产管道需要 Javascript 运行时才能执行 Javascript 压缩。

2) 某些 Rails ActionView Helpers(如 javascript_include_tag)需要 Javascript 运行时才能执行 Javascript 函数。

并非每个 Rails 应用程序都使用这些功能,因此最初在 Gemfile 中注释掉了 therubyracer gem 的原因;此外请注意,您也可以使用 NodeJS 作为 Javascript 运行时。

详情见:

http://guides.rubyonrails.org/asset_pipeline.html#javascript-compression

http://www.rubydoc.info/docs/rails/ActionView/Helpers/JavaScriptHelper

http://www.rubydoc.info/docs/rails/ActionView%2FHelpers%2FAssetTagHelper%3Ajavascript_include_tag

Proper "Rails" way to perform javascript on specific pages

【讨论】:

【参考方案2】:

rubyracer 提供以下功能:

 1. We can write your ruby codes inside js codes. 
 2. We can invoke the js functions from ruby codes.  
 3. Manipulation of javscript objects & the passing them to javascript functions.

这些是使用 ruby​​racer gem 的几个基本好处。 请阅读完整的详细信息here

【讨论】:

第1项,和js.erb文件有关系吗? 当您使用 Rails 控制器(通过 ajax)并希望与您的 app/views/action_name.js.erb 文件中的代码进行一些交互时。该文件还将保存您的 js 代码 + 嵌入的 ruby​​ 代码。 :) 请检查:richonrails.com/articles/basic-ajax-in-ruby-on-rails 在提供的链接中搜索 app/views/products/_save.js.erb:这将消除您的疑问 :) 听起来很糟糕,为什么我们要从 js 调用 ruby​​ 代码,反之亦然? 哎呀!!我收回我的话......我必须在Java中运行JS(将模板系统移植到java github.com/nishants/jeyson,github.com/nishants/wirestub)......如果我需要Sinatra / Rails端口,将不得不尝试rubyracer .. .... 太糟糕了,没有像 Nashorn for Java 这样的纯 ruby​​ 替代品。

以上是关于在 Rails 应用程序中,therubyracer 或 libv8 有啥用?的主要内容,如果未能解决你的问题,请参考以下文章

为什么gem`therubyracer`默认在Gemfile中注释掉了?

Rails 4.0.0 Ruby 2.0 therubyracer gem 安装错误

运行 Rails 服务器时出错 - 找不到符号 - therubyracer

由于 Mac 上的编译器问题,无法安装 therubyracer gem?

使用 Ruby On Rails 4.2.5.1 我可以 gem install therubyracer 但捆绑包在 OS X 10.11.1 上失败

Ruby Racer,RuntimeError - SyntaxError:意外缩进