问题标签 [requirejs-rails]

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.

0 投票
1 回答
295 浏览

javascript - RequireJS - 打包与主干相关的模块,以便在其他 Rails/JS 应用程序中重用

我正在构建一个基于 Rails 和客户端 Backbone.js 的 Web 应用程序。为了构建我的 Coffeescript-Code,我使用了 RequireJS 和requirejs-rails。我的每个 Backbone 类都存在于它自己的 RequireJS 模块中。

我最近将很多代码重构为一些基类,并希望以某种方式将它们打包以便能够在其他项目中轻松重用它们(Rails 和/或 Javascript/Coffeescript,即使没有 RequireJS 也可能)并将其作为单独的项目在 GitHub 上共享来自我的 Rails 应用程序。我阅读了有关包的 RequireJS 文档,但没有详细介绍。所以这就是我想做的:

  • 将我的共享代码移动到它自己的包中views/base_collection_viewcommons/views/base_collection_views如此等等
  • 在我的 rails 应用程序中将包包含到我的 requirejs-rails 设置中,并提供一个编译my-commons.js文件以在非 requirejs 设置中使用(我想一旦我弄清楚如何布局包,后者将很容易使用 almond 完成)

在这一点上,一个可重用 RequireJS-package 的完整示例对我有很大帮助,以及如何将其转移到 requirejs-rails 的一些想法。

0 投票
2 回答
708 浏览

ruby-on-rails - Jasmine、RequireJS 和 Rails

我开始为我正在构建的项目转移到 requireJS。我目前正在使用jasminerice、 rails 3.2 和require-rails gem

我尝试实施http://ryantownsend.co.uk/post/31662285280/jasminerice-and-requirejs-rails-fix 但收效甚微,规范根本没有运行。

我开始认为,也许我自己使用 requirejs 或者茉莉花宝石可能会更好?

我没有出售 jasminerice 或 require-rails gems,所以有没有人对最好的工具有任何建议,以及关于如何启动和运行/好的教程的任何提示?

0 投票
2 回答
785 浏览

requirejs - 在测试中:确保所有 JS 都加载了 requirejs

我的功能规格有一些问题。我目前怀疑 requirejs 是邪恶的。似乎我们的规范(带有 capybara-webkit 的 Rails)在所有 JavaScript 文件加载之前就开始运行。Capybara-webkit 允许我在 Webkit 中评估 Javascript,我想用它来确保在我开始测试运行之前一切就绪。

我可以以某种方式查询 requirejs 以获取它加载的模块吗?有我可以听的活动吗?或者我可以在测试运行时注入一个 requirejs 模块来设置一个全局状态,我可以从我的测试中查询(不是我的首选解决方案)?

我不是 requirejs 专家,也没有实现我们的大部分 JavaScript,但我需要修复它;)

0 投票
1 回答
256 浏览

backbone.js - requirejs-rails AMD 错误“其中有两个许多匿名模块”

尝试使用 requirejs-rails(使用 Rails 4)预编译我的 Backbone 资产。我一直遇到 require-js 抱怨的障碍

这似乎是一个 RequireJS 错误。谷歌搜索发现这个 Github issue,我不明白。

我确实发现问题出在任何以 AMD 条件为开头的库中,如下例所示。我想这与将自己注册为匿名模块有关。如果我删除这些条件,则 requirejs-rails 不再抱怨,我可以编译优化的文件,然后在 Rails 中工作。

但是从我所有的外部库中手动删除这些 AMD 条件是不可持续的。

有人有更好的建议吗?我的requirejs.yml文件设置正确。

注意:我使用的是 requirejs-rails 的这个分支,因为主要代码不适用于 Rails 4。

顺便说一句:我可以使用相同的代码,而无需删除非 Rails 应用程序中的 AMD 位,直接调用 r.js(而不是 requirejs-rails)来优化代码。我不确定为什么 requirejs-rails 的优化会在 r.js 没有出现时触发此错误。我认为 requirejs-rails 在下面调用 r.js ?

导致错误的示例:

0 投票
1 回答
81 浏览

ruby-on-rails-4 - define() 中的所有模块都是未定义的

我使用 requirejs-rails 来管理 Rails 4 项目中客户端模块之间的依赖关系。

我的切入点是:

但是在定义函数中“注入”的每个模块都是未定义的。我的意思是,如果我在定义函数内部调用

我收到

我想,在某个地方我有循环引用,所以我删除了除 angular 之外的所有模块

但我得到相同的结果:角度未定义。

更新

需要js.yml

0 投票
0 回答
131 浏览

javascript - r.js 构建后出现的 Javascript 错误

我目前正在尝试部署一个相当大的项目,并且在生产中遇到了一些奇怪的 js 问题。在开发中,一切正常。预编译我的资产后(通过 requirejs-rails gem 使用 r.js 编译 javascript),我只剩下一个压缩的 javascript 文件。这里奇怪的是,当我加载网页时,我开始在压缩的 js 文件中收到错误,即使在开发中代码没有错误,即使我的资产压缩没有问题。我美化了压缩文件并使用扩展版本重新加载了页面。大多数这些错误都出现在我没有编写的库中。为什么将所有这些文件与 r.js 一起编译会产生如此多的错误?

这是我的 require.js yml,用于生成 r.js 构建。

0 投票
1 回答
141 浏览

ruby-on-rails - Requirejs优化器。排除所有依赖项

我在带有requirejs-railsgem 的 Rails 应用程序中使用 requireJS。我想要实现的是创建几个包含通用代码的包。例如libs_a, libs_b, libs_c, ...,然后为应用程序的某些页面创建自己的包,其中包含仅与这些页面相关的模块。问题是应该为每个页面列出所有常见模块,以将它们从优化文件中排除,例如:

对于大量的模块,它变得有点麻烦。据我了解,没有选项可以仅将构建配置中列出的那些模块包含在优化文件中并跳过所有依赖项。这样exclude: ['libs_a',...]就可以避免重复。你如何解决这样的问题?

0 投票
1 回答
106 浏览

requirejs-rails - Requirejs-rails 仅在调试模式下工作

我用 rails 创建了一个小项目并添加了 requirejs-rails gem。我已根据需要进行了设置,并且在运行 assets:precompile 时,当 requirejs-rails 尝试编译 javascript 资源时它会失败。然而,奇怪的是,assets:precompile 在调试模式下似乎可以工作。不幸的是,我需要它以非调试模式运行,以便它可以正确部署在 Heroku 上。下面是错误和堆栈跟踪。有人遇到过这个吗?更重要的是,有什么解决办法吗?

/home/whyves/.rvm/rubies/ruby-2.1.2/bin/ruby -e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift) /home/whyves/RubymineProjects/test2/bin/spring rake --trace assets:precompile ** Invoke assets:precompile (first_time) ** Invoke assets:environment (first_time) ** Execute assets:environment ** Invoke environment (first_time) ** Execute environment ** Invoke requirejs:precompile:external (first_time) ** Invoke requirejs:test_node (first_time) ** Execute requirejs:test_node ** Execute requirejs:precompile:external /home/whyves/.rvm/rubies/ruby-2.1.2/bin/ruby rake --trace assets:precompile requirejs:precompile:all RAILS_ENV=production RAILS_GROUPS=assets --trace /home/whyves/.rvm/rubies/ruby-2.1.2/bin/ruby: No such file or directory -- rake --trace assets:precompile (LoadError) rake aborted! Command failed with status (1): [/home/whyves/.rvm/rubies/ruby-2.1.2/bin/ru...] /home/whyves/.rvm/gems/ruby-2.1.2/gems/rake-10.3.2/lib/rake/file_utils.rb:54:in块在 create_shell_runner' /home/whyves/.rvm/gems/ruby-2.1.2/gems/rake-10.3.2/lib/rake/file_utils.rb:45:in call' /home/whyves/.rvm/gems/ruby-2.1.2/gems/rake-10.3.2/lib/rake/file_utils.rb:45:insh' /home/whyves/.rvm/gems /ruby-2.1.2/gems/rake-10.3.2/lib/rake/file_utils_ext.rb:37:in sh' /home/whyves/.rvm/gems/ruby-2.1.2/gems/rake-10.3.2/lib/rake/file_utils.rb:82:inruby​​' /home/whyves/.rvm/gems/ruby-2.1.2/gems/rake-10.3。 2/lib/rake/file_utils_ext.rb:37:in ruby' /home/whyves/.rvm/gems/ruby-2.1.2/gems/requirejs-rails-0.9.3/lib/tasks/requirejs-rails_tasks.rake:19:inruby​​_rake_task' /home/whyves/.rvm/gems/ruby-2.1.2/gems/requirejs-rails-0.9.3/lib/tasks/requirejs-rails_tasks.rake :86:in block (3 levels) in <top (required)>' /home/whyves/.rvm/gems/ruby-2.1.2/gems/rake-10.3.2/lib/rake/task.rb:240:incall' /home/whyves/.rvm/gems/ruby-2.1.2/gems/rake-10.3.2/lib/rake/task.rb:240:in block in execute' /home/whyves/.rvm/gems/ruby-2.1.2/gems/rake-10.3.2/lib/rake/task.rb:235:ineach' /home/whyves/.rvm /gems/ruby-2.1.2/gems/rake-10.3.2/lib/rake/task.rb:235:inexecute' /home/whyves/.rvm/gems/ruby-2.1.2/gems/rake-10.3.2/lib/rake/task.rb:179:in块 in invoke_with_call_chain' /home/whyves/.rvm/rubies/ruby-2.1.2/lib/ ruby/2.1.0/monitor.rb:211:inmon_synchronize' /home/whyves/.rvm/gems/ruby-2.1.2/gems/rake-10.3.2/lib/rake/task.rb:172:ininvoke_with_call_chain' /home/whyves/.rvm/gems/ruby-2.1.2/gems/rake-10.3.2/lib/rake/task.rb:201:in block in invoke_prerequisites' /home/whyves/.rvm/gems/ruby-2.1.2/gems/rake-10.3.2/lib/rake/task.rb:199:ineach' /home/whyves/.rvm/gems/ruby -2.1.2/gems/rake-10.3.2/lib/rake/task.rb:199:invoke_prerequisites' /home/whyves/.rvm/gems/ruby-2.1.2/gems/rake-10.3.2/lib/rake/task.rb:178:ininvoke_with_call_chain'/home/whyves/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1 中的块。 0/monitor.rb:211:in mon_synchronize' /home/whyves/.rvm/gems/ruby-2.1.2/gems/rake-10.3.2/lib/rake/task.rb:172:ininvoke_with_call_chain '/home/whyves/.rvm/gems/ruby-2.1.2/gems/rake-10.3.2/lib/rake/task.rb:165:in invoke_task invoke' /home/whyves/.rvm/gems/ruby-2.1.2/gems/rake-10.3.2/lib/rake/application.rb:150:in'/home /whyves/.rvm/gems/ruby-2.1.2/gems/rake-10.3.2/lib/rake/application.rb:106:in block (2 levels) in top_level' /home/whyves/.rvm/gems/ruby-2.1.2/gems/rake-10.3.2/lib/rake/application.rb:106:ineach' /home/whyves/.rvm/gems/ruby-2.1.2 /gems/rake-10.3.2/lib/rake/application.rb:106:in block in top_level' /home/whyves/.rvm/gems/ruby-2.1.2/gems/rake-10.3.2/lib/rake/application.rb:115:inrun_with_threads' /home/whyves/.rvm/gems/ruby-2.1.2/gems/rake-10.3.2/lib/rake/应用程序.rb:100:intop_level' /home/whyves/.rvm/gems/ruby-2.1.2/gems/rake-10.3.2/lib/rake/application.rb:78:in阻止运行' /home/whyves/.rvm/gems/ruby-2.1.2/gems/rake-10.3.2/lib/rake/application.rb:176:in standard_exception_handling' /home/whyves/.rvm/gems/ruby-2.1.2/gems/rake-10.3.2/lib/rake/application.rb:75:inrun' /home/whyves/RubymineProjects/test2/ bin/rake:8:in <top (required)>' /home/whyves/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.4/lib/active_support/dependencies.rb:241:inload' /home/whyves/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.4/lib/active_support/dependencies.rb:241:in block in load' /home/whyves/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.4/lib/active_support/dependencies.rb:232:inload_dependency' /home/whyves /.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.4/lib/active_support/dependencies.rb:241:in load' /home/whyves/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:inrequire' /home/whyves/.rvm/rubies/ruby-2.1.2/lib /ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in require' -e:1:in'任务:TOP => assets:precompile => requirejs:precompile:external

进程以退出代码 1 结束

`