Rails 链轮:根据变量需要不同的 JavaScript
Rails Sprockets: require different JavaScript based on variable
假设我有一个 Rails 应用程序,它可以有多个主题,每个主题需要不同的 JavaScript + JavaScript 在主题之间共享。
主题被指定为 ENV 变量。
如何根据主题要求不同的 JavaScript 文件?
我想在我的 application.js
文件中做类似的事情:
/* Theme specific */
//= require_tree "./theme/#{ENV[APP_THEME]}"
/* Shared between all themes */
(function() { ... })();
这显然行不通。
有人对此有想法吗?
application.js 是 运行 一次就完成了(可以这么说,当您的应用程序 "compiles" 时)。只要它启动,对该变量的任何更改都不会生效,因为它已经根据启动时的 ENV[APP_THEME] 值预编译到单个 javascript 文件中。因此,application.js 中的逻辑几乎肯定不是您问题的正确解决方案。
实现这一点的方法实际上是从 application.js 中完全排除您的特定主题 javascript。然后,在您的布局中(大概是 layouts/application.html.erb)用户 ENV[APP_THEME] 包含适当的 javascripts.
假设我有一个 Rails 应用程序,它可以有多个主题,每个主题需要不同的 JavaScript + JavaScript 在主题之间共享。
主题被指定为 ENV 变量。
如何根据主题要求不同的 JavaScript 文件?
我想在我的 application.js
文件中做类似的事情:
/* Theme specific */
//= require_tree "./theme/#{ENV[APP_THEME]}"
/* Shared between all themes */
(function() { ... })();
这显然行不通。 有人对此有想法吗?
application.js 是 运行 一次就完成了(可以这么说,当您的应用程序 "compiles" 时)。只要它启动,对该变量的任何更改都不会生效,因为它已经根据启动时的 ENV[APP_THEME] 值预编译到单个 javascript 文件中。因此,application.js 中的逻辑几乎肯定不是您问题的正确解决方案。
实现这一点的方法实际上是从 application.js 中完全排除您的特定主题 javascript。然后,在您的布局中(大概是 layouts/application.html.erb)用户 ENV[APP_THEME] 包含适当的 javascripts.